1
TorrAPI
wiki-sync-bot edited this page 2026-02-23 14:28:35 +03:00
This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

TorrAPI (Поиск на трекерах)

GenAudioBookInfo использует TorrServer / TorrAPI-совместимый сервер для поиска аудиокниг на торрент-трекерах и получения метаданных раздач.


Что такое TorrAPI

TorrServer — локальный сервис, который предоставляет JSON API для поиска по популярным торрент-трекерам:

  • Rutracker — крупнейший русскоязычный трекер
  • Rutor — популярный трекер
  • Kinozal — кино и аудиокниги
  • И другие трекеры в зависимости от конфигурации TorrServer

Установка TorrServer

TorrServer распространяется отдельно. Скачать: github.com/YouROK/TorrServer/releases

# Linux/macOS
./TorrServer -port 9200

# Windows
TorrServer.exe -port 9200

После запуска TorrServer доступен на http://localhost:9200.


Настройка в config.yaml

torrapi:
  url: http://localhost:9200   # Адрес TorrAPI сервера

Можно переопределить флагом:

./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 при большом количестве воркеров.

processing:
  workers: 6             # воркеров до 6
  search_concurrency: 2  # но к TorrAPI ходят только 2 одновременно

Ретраи поиска

Если поиск вернул пустой результат или произошла ошибка сети:

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 попыток

Возможные причины:

  • Нестандартное имя папки (числа, латиница вместо кириллицы)
  • Книга действительно отсутствует на трекерах
  • Слишком короткое/общее название

Проверка вручную

curl "http://localhost:9200/api/v1/search?query=Акунин+Азазель" | jq .