API для трекеров

📖 Документация

ReSeeder API — серверная утилита на Python, которая индексирует .torrent файлы трекера и отдаёт пользователям готовые раздачи по сигнатурам их медиатеки. Пользователь подключает свои файлы — получает торренты без ручного поиска по сайту. Поддерживаются два уровня интеграции: выгрузка архива личной истории юзера и полноценный match API.

⊙ Python 3.10+ ⊙ FastAPI + SQLite ⊙ Linux / Windows ⊙ Open Source

Зачем это трекеру

Матч между тем, что у пользователя уже лежит на диске, и тем, что раздаётся на трекере. Никаких файлов на сервер не отправляется — только сигнатуры.

Больше сидов

Пользователи начинают раздавать то, что уже было скачано, но отвязано от трекера. На старые раздачи мгновенно появляются новые сиды.

Приватность

Клиент отправляет только имена, размеры и SHA1 по первым 32 МБ файлов. Сами файлы никогда не покидают компьютер пользователя.

Низкие требования

FastAPI + SQLite в WAL-режиме. Держит сотни тысяч торрентов на любом дешёвом VPS. Авто-бэкап с ротацией включён.

Простая интеграция

Четыре HTTP-эндпоинта, JSON-протокол. Авторизация и rate-limit — на стороне трекера (через reverse-proxy или свой middleware).

Два варианта интеграции

Трекеру не обязательно сразу разворачивать полноценный match API. Можно начать с «лайт» — отдавать пользователю архив его личной истории скачиваний, а матч выполнять на стороне клиента.

Лайт · архив истории юзера

Для трекера: один авторизованный эндпоинт, отдающий архив с .torrent файлами только тех раздач, которые скачал конкретный пользователь. У большинства трекеров эти данные уже есть — страница «мои скачивания» в профиле. Ни БД, ни индексирования, ни фонового сервиса.

Для пользователя: клиент ReSeeder авторизуется одним из поддерживаемых трекером способов (пасскей, логин/пароль или API-ключ), скачивает свой персональный архив и выполняет матч с медиатекой локально. Архив маленький (десятки/сотни торрентов, а не миллионы), приватный, матч гарантированно по «своим» раздачам.

Полный · match API

Для трекера: развернуть FastAPI-утилиту (описание ниже). Индексация, БД, четыре HTTP-эндпоинта, авторизация через reverse-proxy.

Для пользователя: клиент отправляет только сигнатуры (имя, размер, SHA1 по первым 32 МБ), сервер отвечает готовыми .torrent. Матч шире личной истории — ловит и раздачи, которые юзер скачивал не с этого трекера.

Оба варианта описываются в trackers.json через секции archive и match. Трекер может поддерживать только одну из них, обе или ни одной. Кнопки в UI всегда на месте — при клике по неподдерживаемой возможности клиент просто сообщает в лог, что функционал для этого трекера не реализован.

Как это работает

Клиент ReSeeder вызывает эндпоинты последовательно. Каждый шаг независим и идемпотентен.

1

POST /match/handshake — рукопожатие

Клиент получает параметры утилиты: минимальный размер файла, лимиты на запрос/ответ. Сразу знает, сколько файлов можно отправить за раз и какие фильтры применить локально.

2

POST /match/phase1 — матч по имени + размеру

Клиент отправляет список файлов с именами и размерами. Сервер возвращает найденные .torrent в base64 с метаданными. Это быстрый путь для файлов с оригинальными именами.

3

POST /match/phase2 — матч только по размеру

Файлы, не найденные в фазе 1 (например, переименованные), отправляются без имени. Совпадения проверяются клиентом по SHA1 кусков — сервер отдаёт все торренты с подходящим размером, клиент сам выбирает нужный.

4

POST /match/report — отчёт (опционально)

Клиент отправляет результат матча — что было успешно подтверждено. Сервер логирует для статистики (ретеншн, популярные раздачи). Не влияет на работу клиента.

Документация и скачивание

Подробная инструкция по установке, CLI, HTTP-эндпоинтам, настройкам, бэкапу, развёртыванию через systemd + nginx и troubleshooting — на отдельной странице. Это единый источник правды по утилите, обновляется по мере развития.

reseeder_api · версия 1.0

FastAPI + SQLite, CLI и опциональный Tkinter GUI (5 вкладок: сканирование, статистика, настройки, бэкап, тестирование API). MIT-лицензия, используйте и модифицируйте свободно.

Вопросы по интеграции

Нужна помощь с развёртыванием на вашем трекере или хотите попасть в дефолтный список поддерживаемых — напишите.

Готов помочь с интеграцией, написать middleware под авторизацию вашего трекера или добавить поддержку нестандартных схем .torrent-хранилища.