# Jellybit Jellybit — связующий сервис между qBittorrent и Jellyfin. Принимает торрент (magnet, `.torrent` или ссылку) вместе с текстовым контекстом, ставит загрузку в qBittorrent, дожидается её завершения, распознаёт содержимое (фильм или сериал, сезоны и серии) и раскладывает готовые файлы по конвенциям библиотеки Jellyfin. Полный замысел и причины — в [BRIEF.md](BRIEF.md). ## Зачем Arr-стек (prowlarr/radarr/sonarr) плохо ложится на русские трекеры, аниме и ручные раздачи. Jellybit намеренно сокращает путь: одна точка входа → готовая раскладка для Jellyfin, без каталога индексаторов и сложных правил качества. Распознавание делает LLM, которому помогает переданный человеком контекст и (опционально) внешние базы метаданных. ## Как работает 1. Точка входа принимает torrent/magnet + контекст (HTTP API, веб-UI или Telegram-бот). 2. Загрузка ставится в qBittorrent в выделенную категорию. 3. Сервис отслеживает завершение загрузки. 4. По именам файлов, контексту и (опц.) базам метаданных определяется фильм/сериал и нужная раскладка. 5. Файлы **хардлинкаются** в библиотеку Jellyfin — источник остаётся в раздаче, место на диске не дублируется. При высокой уверенности раскладка выполняется автоматически, иначе — уходит на подтверждение человеку. ## Статус Ранняя разработка. Готов каркас (Ф0): загрузка TOML-конфига, SQLite + миграции, slog-логи, HTTP-сервер с `/healthz`. Дальше — приём загрузок и трекинг (Ф1). См. [дорожную карту](docs/drafts/roadmap.md). ## Документация - [docs/specs/](docs/specs/) — спецификации: целевое устройство системы. Начать с [architecture.md](docs/specs/architecture.md). - [docs/adr/](docs/adr/) — журнал архитектурных решений (почему так). - [docs/drafts/](docs/drafts/) — черновики: планы, идеи, нерешённое. ## Стек Go (один статический бинарь), SQLite (`modernc.org/sqlite` + `sqlx`, миграции `goose`), HTTP — `chi` + `html/template` + htmx, конфигурация — TOML, логи — структурированный JSON (`slog`). Подробнее — в [architecture.md](docs/specs/architecture.md). ## Разработка ```bash cp config.example.toml config.toml # локально: db_path -> ./jellybit.db make tidy # go mod tidy make run # go run ./cmd/jellybit --config ./config.toml make test lint # тесты и golangci-lint make build # статический бинарь (linux/amd64) для сервера make image # docker-образ из готового бинаря ``` ## Доставка Сборка здесь → готовый бинарь копируется на медиа-сервер umbar (`/home/av/projects/private/umbar`). Деплой-обвязка живёт в umbar.