Добавлены страницы вики для GenAudioBookInfo: Home, Installation, Makefile, OpenRouter, Output Structure, TorrAPI и Sidebar.

Создана структура документации, описывающая функциональность, установку, использование CLI, архитектуру и интеграции с TorrAPI и OpenRouter.
Добавлены примеры конфигурации и метаданных, а также описание структуры выходных данных.
This commit is contained in:
Dmitriy Fofanov
2026-02-23 13:19:39 +03:00
parent 107f57d2cc
commit 41fb62f62e
31 changed files with 4181 additions and 1376 deletions
+147
View File
@@ -0,0 +1,147 @@
# TorrAPI (Поиск на трекерах)
GenAudioBookInfo использует [TorrServer](https://github.com/YouROK/TorrServer) / TorrAPI-совместимый сервер для поиска аудиокниг на торрент-трекерах и получения метаданных раздач.
---
## Что такое TorrAPI
TorrServer — локальный сервис, который предоставляет JSON API для поиска по популярным торрент-трекерам:
- **Rutracker** — крупнейший русскоязычный трекер
- **Rutor** — популярный трекер
- **Kinozal** — кино и аудиокниги
- И другие трекеры в зависимости от конфигурации TorrServer
---
## Установка TorrServer
TorrServer распространяется отдельно. Скачать: [github.com/YouROK/TorrServer/releases](https://github.com/YouROK/TorrServer/releases)
```bash
# Linux/macOS
./TorrServer -port 9200
# Windows
TorrServer.exe -port 9200
```
После запуска TorrServer доступен на `http://localhost:9200`.
---
## Настройка в `config.yaml`
```yaml
torrapi:
url: http://localhost:9200 # Адрес TorrAPI сервера
```
Можно переопределить флагом:
```bash
./genaudiobookinfo -api http://192.168.1.10:9200 D:\Audiobooks
```
---
## Как выполняется поиск
### Алгоритм поиска одной книги
```
1. Попытаться найти по title (названию из тегов / имени папки)
2. Если результатов нет и title ≠ author:
попытаться найти по author (автору)
3. Если найдено: взять детали лучшего результата
4. Если не найдено: следующая попытка (до search_retries раз)
5. Если все попытки исчерпаны: переместить в ERROR/
```
### Критерий выбора лучшего результата
Трекеры ранжируются в порядке приоритета:
1. **Rutracker** (наиболее полные метаданные)
2. **Rutor**
3. **Kinozal**
4. Остальные (по количеству сидов)
Из результатов одного трекера выбирается раздача с наибольшим числом сидов.
---
## Ограничение параллелизма
Параметр `search_concurrency` (по умолчанию `2`) ограничивает число одновременных HTTP-запросов к TorrAPI через семафор. Это предотвращает перегрузку TorrServer при большом количестве воркеров.
```yaml
processing:
workers: 6 # воркеров до 6
search_concurrency: 2 # но к TorrAPI ходят только 2 одновременно
```
---
## Ретраи поиска
Если поиск вернул пустой результат или произошла ошибка сети:
```yaml
processing:
search_retries: 3 # попыток
search_retry_delay: 3s # пауза между попытками
```
Это полезно если TorrServer временно перегружен или трекер недоступен.
---
## Получаемые данные
После успешного поиска `GetDetail()` возвращает:
| Поле | Описание |
|---|---|
| `Title` | Полное название раздачи (трекерное) |
| `Comment` | Описание раздачи (аннотация книги) |
| `Year` | Год издания (если указан на трекере) |
| `Genre` | Жанр |
| `Authors` | Авторы в трекерном формате |
| `CoverURL` | URL обложки для скачивания |
| `Seeds` | Количество сидов |
| `Size` | Размер раздачи |
| `TrackerURL` | Ссылка на страницу раздачи |
Эти данные записываются в `metadata.json` в секцию `torrent.*`.
---
## Диагностика
### TorrServer недоступен
```
WARN TorrAPI недоступен: dial tcp 127.0.0.1:9200: connection refused
```
Решение: убедиться, что TorrServer запущен на указанном порту.
### Ничего не найдено
```
WARN [Книга] не найдена на трекерах (попытка 1/3)
...
ERROR [Книга] перемещена в ERROR/ после 3 попыток
```
Возможные причины:
- Нестандартное имя папки (числа, латиница вместо кириллицы)
- Книга действительно отсутствует на трекерах
- Слишком короткое/общее название
### Проверка вручную
```bash
curl "http://localhost:9200/api/v1/search?query=Акунин+Азазель" | jq .
```