Добавил конвенции для конфигурации и сделал рефакторинг кода
This commit is contained in:
+52
-46
@@ -1,76 +1,82 @@
|
||||
# Пример конфигурации jellybit. Реальный config.toml не коммитится (содержит
|
||||
# секреты). Для локального запуска: db_path -> ./jellybit.db.
|
||||
# Пример конфигурации jellybit — единый справочник по всем секциям и полям.
|
||||
# Реальный config.toml не коммитится (содержит секреты), заполняется деплоем.
|
||||
# Секретные поля здесь оставлены пустыми. По умолчанию загрузчик ищет
|
||||
# config.toml в рабочей директории; путь переопределяется опцией --config=path.
|
||||
# Для локального запуска укажите существующие каталоги и db_path -> ./jellybit.db.
|
||||
|
||||
[qbittorrent]
|
||||
url = "http://qbit:8989" # по имени сервиса в общей docker-сети
|
||||
username = "admin"
|
||||
password = ""
|
||||
category = "jellybit" # категория для добавляемых jellybit раздач (push)
|
||||
url = "http://qbit:8989" # адрес qBittorrent WebUI; в docker-сети — по имени сервиса
|
||||
username = "admin" # логин WebUI
|
||||
password = "" # секрет: пароль WebUI; обязателен, заполняет деплой
|
||||
category = "jellybit" # категория для добавляемых jellybit раздач (push, savepath)
|
||||
tag = "jellybit" # тег для усыновления существующих раздач (pull, не двигает файлы)
|
||||
savepath = "/srv/media/downloads" # qBit кладёт загрузки сюда (задаём при добавлении)
|
||||
savepath = "/srv/media/downloads" # куда qBittorrent кладёт загрузки (задаём при добавлении)
|
||||
path_map = {} # фолбэк: префикс save_path → хост-префикс, напр. {"/data" = "/srv/media"}; обычно пуст
|
||||
|
||||
[paths]
|
||||
downloads = "/srv/media/downloads"
|
||||
movies = "/srv/media/movies"
|
||||
series = "/srv/media/series"
|
||||
# Медиа-песочница на хосте. Каждый путь: абсолютный, без traversal (`..`) и
|
||||
# должен существовать как доступный каталог (проверяется на старте). Целевые
|
||||
# movies/series и источник downloads монтируются под единый корень (/srv/media).
|
||||
downloads = "/srv/media/downloads" # источник: где лежат загрузки qBittorrent (только читаем/линкуем)
|
||||
movies = "/srv/media/movies" # целевой каталог фильмов для Jellyfin (раскладка хардлинками)
|
||||
series = "/srv/media/series" # целевой каталог сериалов для Jellyfin (раскладка хардлинками)
|
||||
|
||||
[storage]
|
||||
db_path = "/data/jellybit.db" # SQLite на persistent-томе
|
||||
db_path = "/data/jellybit.db" # путь к файлу SQLite на persistent-томе; обязателен
|
||||
|
||||
[llm]
|
||||
type = "openai-compat"
|
||||
type = "openai-compat" # провайдер распознавания; допустимо: openai-compat
|
||||
# LLM на хосте (LM Studio) из bridged-контейнера — через host.docker.internal.
|
||||
base_url = "http://host.docker.internal:1234/v1"
|
||||
api_key = ""
|
||||
model = "qwen2.5-32b-instruct"
|
||||
proxy = "" # опц. HTTP-прокси для удалённых эндпоинтов
|
||||
timeout = "120s"
|
||||
max_retries = 3
|
||||
base_url = "http://host.docker.internal:1234/v1" # эндпоинт LLM; пусто = распознавание выключено
|
||||
api_key = "" # секрет: ключ LLM; обязателен, если задан base_url (заполняет деплой)
|
||||
model = "qwen2.5-32b-instruct" # имя модели на эндпоинте
|
||||
proxy = "" # опц. HTTP-прокси для удалённых эндпоинтов; пусто = без прокси
|
||||
timeout = "120s" # таймаут запроса к LLM; Go-duration (s/m/h)
|
||||
max_retries = 3 # попыток получить валидный ответ LLM; целое ≥ 0
|
||||
|
||||
[metadata.tmdb]
|
||||
enabled = false # включается ключом; без матча авто не делаем
|
||||
api_key = ""
|
||||
proxy = ""
|
||||
timeout = "10s"
|
||||
enabled = false # включить провайдера TMDB; без матча авто-раскладку не делаем
|
||||
api_key = "" # секрет: ключ TMDB; обязателен, если enabled (заполняет деплой)
|
||||
proxy = "" # опц. HTTP-прокси; пусто = без прокси
|
||||
timeout = "10s" # таймаут запроса к TMDB; Go-duration (s/m/h)
|
||||
|
||||
[metadata.tvdb]
|
||||
enabled = false
|
||||
api_key = ""
|
||||
proxy = ""
|
||||
timeout = "10s"
|
||||
enabled = false # включить провайдера TVDB
|
||||
api_key = "" # секрет: ключ TVDB; обязателен, если enabled (заполняет деплой)
|
||||
proxy = "" # опц. HTTP-прокси; пусто = без прокси
|
||||
timeout = "10s" # таймаут запроса к TVDB; Go-duration (s/m/h)
|
||||
|
||||
[metadata.tvmaze]
|
||||
enabled = false # без ключа; только сериалы, тег [tvdbid-…] из externals
|
||||
proxy = ""
|
||||
timeout = "10s"
|
||||
enabled = false # включить провайдера TVMaze; без ключа, только сериалы (тег [tvdbid-…] из externals)
|
||||
proxy = "" # опц. HTTP-прокси; пусто = без прокси
|
||||
timeout = "10s" # таймаут запроса к TVMaze; Go-duration (s/m/h)
|
||||
|
||||
[jellyfin]
|
||||
enabled = false # включить пересканирование медиатеки после раскладки
|
||||
url = "http://jellyfin:8096" # по имени сервиса в общей docker-сети
|
||||
api_key = "" # API-ключ Jellyfin (Dashboard → API Keys)
|
||||
proxy = "" # опц. HTTP-прокси
|
||||
timeout = "10s"
|
||||
url = "http://jellyfin:8096" # адрес Jellyfin; обязателен, если enabled (в docker-сети — по имени сервиса)
|
||||
api_key = "" # секрет: API-ключ Jellyfin (Dashboard → API Keys); обязателен, если enabled
|
||||
proxy = "" # опц. HTTP-прокси; пусто = без прокси
|
||||
timeout = "10s" # таймаут запроса к Jellyfin; Go-duration (s/m/h)
|
||||
|
||||
[worker]
|
||||
poll_interval = "5s"
|
||||
stuck_after = "1h"
|
||||
magnet_timeout = "30m"
|
||||
poll_interval = "5s" # как часто опрашивать qBittorrent; Go-duration (s/m/h)
|
||||
stuck_after = "1h" # сколько ждать прогресса, прежде чем счесть раздачу зависшей; Go-duration
|
||||
magnet_timeout = "30m" # ждать метаданные magnet не дольше; Go-duration
|
||||
|
||||
[recognition]
|
||||
auto_confidence_threshold = 0.85
|
||||
auto_confidence_threshold = 0.85 # порог авто-раскладки без ревью; доля 0.0–1.0
|
||||
|
||||
[telegram]
|
||||
enabled = false
|
||||
token = ""
|
||||
allowed_user_ids = [] # пусто = запрет всем (fail-closed)
|
||||
web_base_url = "" # напр. "http://jellybit:8080" — для кнопки «открыть в вебе»
|
||||
proxy = "" # опц. HTTP-прокси для api.telegram.org
|
||||
enabled = false # включить Telegram-бота
|
||||
token = "" # секрет: токен бота; обязателен, если enabled (заполняет деплой)
|
||||
allowed_user_ids = [] # allowlist Telegram user id (целые); пусто = запрет всем (fail-closed)
|
||||
web_base_url = "" # база для deep-link «открыть в вебе», напр. "http://jellybit:8080"; пусто = без кнопки
|
||||
proxy = "" # опц. HTTP-прокси для api.telegram.org; пусто = без прокси
|
||||
|
||||
[http]
|
||||
listen = ":8080"
|
||||
trusted_subnets = [] # ПОКА НЕ ПРИМЕНЯЕТСЯ (деплой только в LAN); зарезервировано
|
||||
listen = ":8080" # адрес прослушивания HTTP-сервера; формат [host]:port
|
||||
trusted_subnets = [] # allowlist подсетей (CIDR); ПОКА НЕ ПРИМЕНЯЕТСЯ (деплой только в LAN), зарезервировано
|
||||
|
||||
[log]
|
||||
level = "info"
|
||||
format = "json"
|
||||
level = "info" # уровень логирования; одно из: debug, info, warn, error
|
||||
format = "json" # формат логов; одно из: json, text
|
||||
|
||||
Reference in New Issue
Block a user