Создана структура документации, описывающая функциональность, установку, использование CLI, архитектуру и интеграции с TorrAPI и OpenRouter. Добавлены примеры конфигурации и метаданных, а также описание структуры выходных данных.
131 lines
5.1 KiB
Markdown
131 lines
5.1 KiB
Markdown
# Конфигурация (`.env`)
|
||
|
||
Все параметры хранятся в файле `.env` в корне проекта.
|
||
Копируется из `.env.example` при первой настройке. Файл `.env` не коммитится в Git.
|
||
Параметры командной строки (где применимо) **переопределяют** значения из `.env`.
|
||
|
||
---
|
||
|
||
## Пути
|
||
|
||
```env
|
||
DIR_IN=D:\Audiobooks
|
||
DIR_OUT=D:\Audiobooks\result
|
||
```
|
||
|
||
| Переменная | Тип | По умолчанию | Описание |
|
||
|---|---|---|---|
|
||
| `DIR_IN` | string | — | Корневой каталог для сканирования. Можно переопределить аргументом CLI. |
|
||
| `DIR_OUT` | string | `<DIR_IN>/result` | Куда складывать обработанные книги. Можно переопределить флагом `-result`. |
|
||
|
||
---
|
||
|
||
## TorrAPI сервер
|
||
|
||
```env
|
||
TORRAPI_URL=http://localhost:9200
|
||
```
|
||
|
||
| Переменная | Тип | По умолчанию | Описание |
|
||
|---|---|---|---|
|
||
| `TORRAPI_URL` | string | `http://localhost:9200` | URL TorrAPI-совместимого сервера. Переопределяется флагом `-api`. |
|
||
|
||
---
|
||
|
||
## Параметры конвейера
|
||
|
||
```env
|
||
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 (опционально)
|
||
|
||
```env
|
||
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`:
|
||
|
||
```bash
|
||
export OPENROUTER_API_KEY=sk-or-...
|
||
./genaudiobookinfo
|
||
```
|
||
|
||
---
|
||
|
||
## Форматы продолжительностей
|
||
|
||
Go-синтаксис: `300ms`, `1.5s`, `2m30s`, `1h`.
|
||
Примеры для `*_TIMEOUT`: `5m`, `10m`, `1h30m`.
|
||
|
||
---
|
||
|
||
## Полный пример `.env`
|
||
|
||
```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
|
||
```
|