Создана структура документации, описывающая функциональность, установку, использование CLI, архитектуру и интеграции с TorrAPI и OpenRouter. Добавлены примеры конфигурации и метаданных, а также описание структуры выходных данных.
5.1 KiB
5.1 KiB
Конфигурация (.env)
Все параметры хранятся в файле .env в корне проекта.
Копируется из .env.example при первой настройке. Файл .env не коммитится в Git.
Параметры командной строки (где применимо) переопределяют значения из .env.
Пути
DIR_IN=D:\Audiobooks
DIR_OUT=D:\Audiobooks\result
| Переменная | Тип | По умолчанию | Описание |
|---|---|---|---|
DIR_IN |
string | — | Корневой каталог для сканирования. Можно переопределить аргументом CLI. |
DIR_OUT |
string | <DIR_IN>/result |
Куда складывать обработанные книги. Можно переопределить флагом -result. |
TorrAPI сервер
TORRAPI_URL=http://localhost:9200
| Переменная | Тип | По умолчанию | Описание |
|---|---|---|---|
TORRAPI_URL |
string | http://localhost:9200 |
URL TorrAPI-совместимого сервера. Переопределяется флагом -api. |
Параметры конвейера
PROCESSING_WORKERS=2
PROCESSING_TIMEOUT=5m
PROCESSING_SEARCH_RETRIES=3
PROCESSING_SEARCH_RETRY_DELAY=3s
PROCESSING_SEARCH_CONCURRENCY=2
| Переменная | Тип | По умолчанию | Описание |
|---|---|---|---|
PROCESSING_WORKERS |
int | 2 |
Число параллельных горутин-воркеров (Fan-Out). Переопределяется -workers. |
PROCESSING_TIMEOUT |
duration | 5m |
Дедлайн для всей сессии обработки. Переопределяется -timeout. |
PROCESSING_SEARCH_RETRIES |
int | 3 |
Сколько попыток найти книгу на трекерах перед перемещением в ERROR/. |
PROCESSING_SEARCH_RETRY_DELAY |
duration | 3s |
Задержка между повторными попытками поиска. |
PROCESSING_SEARCH_CONCURRENCY |
int | 2 |
Ограничение числа одновременных HTTP-запросов к TorrAPI (семафор). |
Приоритет параметров
CLI-флаг (-workers/-timeout) > .env > встроенные defaults
Флаги -workers и -timeout со значением 0 (умолчание) не перетирают значение из .env.
OpenRouter LLM (опционально)
OPENROUTER_API_KEY=sk-or-v1-your-key
OPENROUTER_BASE_URL=https://openrouter.ai/api/v1
OPENROUTER_TIMEOUT=120s
OPENROUTER_MODEL=openai/gpt-4o-mini
OPENROUTER_MAX_RETRIES=3
OPENROUTER_RETRY_BACKOFF=1s
OPENROUTER_RETRY_BACKOFF_MAX=8s
# OPENROUTER_PROMPT= # опционально, переопределяет встроенный промпт
| Переменная | Тип | По умолчанию | Описание |
|---|---|---|---|
OPENROUTER_API_KEY |
string | "" |
API ключ. Если пуст — LLM выключен. Можно передать через переменную окружения ОС. |
OPENROUTER_BASE_URL |
string | https://openrouter.ai/api/v1 |
Базовый URL API. |
OPENROUTER_TIMEOUT |
duration | 120s |
Таймаут одного запроса к API. |
OPENROUTER_MODEL |
string | openai/gpt-3.5-turbo |
Идентификатор модели в формате provider/model. |
OPENROUTER_MAX_RETRIES |
int | 3 |
Количество ретраев при ошибках API. |
OPENROUTER_RETRY_BACKOFF |
duration | 1s |
Начальная задержка между ретраями (экспоненциальный backoff). |
OPENROUTER_RETRY_BACKOFF_MAX |
duration | 8s |
Максимальная задержка backoff. |
OPENROUTER_PROMPT |
string | (встроенный) | Системный промпт. Если не задан — используется дефолтный из кода. |
Ключ через переменную окружения ОС
OPENROUTER_API_KEY можно не писать в .env — достаточно задать в окружении ОС. Переменные ОС имеют приоритет над .env:
export OPENROUTER_API_KEY=sk-or-...
./genaudiobookinfo
Форматы продолжительностей
Go-синтаксис: 300ms, 1.5s, 2m30s, 1h.
Примеры для *_TIMEOUT: 5m, 10m, 1h30m.
Полный пример .env
# Пути
DIR_IN=D:\Audiobooks
DIR_OUT=D:\Audiobooks\result
# TorrAPI
TORRAPI_URL=http://localhost:9200
# Конвейер
PROCESSING_WORKERS=4
PROCESSING_TIMEOUT=15m
PROCESSING_SEARCH_RETRIES=3
PROCESSING_SEARCH_RETRY_DELAY=3s
PROCESSING_SEARCH_CONCURRENCY=2
# OpenRouter
OPENROUTER_API_KEY=sk-or-v1-xxxxxxxxxxxxxxxxxxxx
OPENROUTER_BASE_URL=https://openrouter.ai/api/v1
OPENROUTER_TIMEOUT=120s
OPENROUTER_MODEL=openai/gpt-4o-mini
OPENROUTER_MAX_RETRIES=3
OPENROUTER_RETRY_BACKOFF=1s
OPENROUTER_RETRY_BACKOFF_MAX=8s