English | Русский
Неофициальный API (backend) для торрент трекеров RuTracker, Kinozal, RuTor и NoNameClub. Используется для быстрого и централизованного поиска раздач, получения торрент файлов, магнитных ссылок и подробной информации о раздаче по названию фильма, сериала или идентификатору раздачи, а также предоставляет новостную RSS ленту для всех провайдеров с фильтрацией по категориям.
Вы можете воспользоваться публичной и бесплатной версией опубликованной на Vercel, а также развернуть его самостоятельно на любом облачной платформе используя serverless, или локально с помощью Docker.
Спецификация OpenAPI доступна на официальном сайте Swagger Hub.
Выпущено под лицензией MIT.
При использовании публичной версии не нужно использовать VPN, так как данный сервис выступает в роле шлюза, что позволяет интегрировать API
в любой проект без сетевых ограничений, а также использовать новостную RSS
ленту на мобильных устройствах, например, через ReadYou или Feeder. Для работы API не требуется токен доступа и авторизация в трекерах.
Проект вдохновлен ✨ Torrent-Api-py (ранее Torrents-Api) для русскоязычных торрент провайдеров.
- Поиск по названию для получения актуальных или всех доступных раздач (со всех доступных страниц) из указанного провайдера (торрент-трекера) или со всех трекеров одновнеременно. Каждая раздача содержит уникальный идентификатор (используется для поиска по id), категория (используется для фильтрации по категории), краткая информация и ссылка на скачивание торрент-файла.
- Получение списка категорий для всех провайдеров и фильтрация поиска по категории.
- Поиск по уникальному идентификатору раздачи указанного провайдера для получения дополнительной информации: магнитная ссылка и хэш сумма для прямой загрузки через любой торрент клиент, ссылки на базы даных о кинематографе (Кинопоиска и IMDb) и постеры, подробное описание и содержимое раздачи (список файлов и их размер).
- Получение новостных RSS лент для всех используемых провайдеров в форматах
XML
, а такжеJSON
.
Реализация простого пользовательского интерфейса (в стиле Jackett) доступна через расширение Google Chrome 🍿 Libre Kinopoisk для одновременного поиска раздач во всех доступных торрент-трекерах и загрузки контента через магнитные ссылки или торрент файлов на прямую из трекеров.
Плагин Torrent Search для быстрого поиска раздач во всех доступных торрент-трекерах через интерфейс Wox, которое доступно для установки из репозитория плагинов.
Имя провайдера | Зеркала | Регистрация | Фильтрация для поиска и RSS | Поиск по ID | RSS |
---|---|---|---|---|---|
RuTracker | 3 | Yes* | Категория | Yes | Native |
Kinozal | 3 | Yes* | Категория, год выхода, формат | Yes | Custom |
RuTor | 2 | No | Категория | Yes | Custom |
NoNameClub | 1 | No | Категория | Yes | Native |
* Регистрация требуется только при скачивании торрент-файла по прямой ссылке. Все раздачи при поиске по id (идентификатору) содержат хэш сумму и магнитные ссылки (уже содержат актуальный список серверов торрент-трекеров), которые позволяют сразу начать загрузку содержимого раздачи или сгенерировать торрент-файл после загрузки метаданных с помощью любого торрент-клиента, например, qBittorrent (поддерживает RSS и поисковые плагины), Transmission или Webtorrent Desktop.
Доступ к лентам RSS для RuTracker и NoNameClub осуществляется путем перенаправления оригинального канала. Для провайдеров Kinozal и RuTor реализована кастомная лента новостей с главной страницы, которые поддерживают фильтрацию по категориям.
Вы можете развернуть свой публичный API в Vercel из исходного репозитория, просто нажмите кнопку ниже и следуйте инструкциям:
Проект использует GitHub Actions для сборки контейнера Docker и автоматического тестирования функциональности всех конечных точек.
Загрузите образ и запустите контейнер из Docker Hub:
docker run -d --name TorAPI -p 8443:8443 --restart=unless-stopped lifailon/torapi:latest
Что бы использовать Proxy сервер, воспользуйтесь следующими параметрами при запуске контейнера:
docker run -d --name TorAPI -p 8443:8443 --restart=unless-stopped \
-e PROXY_ADDRESS="192.168.3.100" \
-e PROXY_PORT="9090" \
-e USERNAME="TorAPI" \
-e PASSWORD="TorAPI" \
lifailon/torapi:latest
Замените содержимое переменных для подключения к Proxy серверу на свои. Если вы не используете авторизацию на прокси сервере, просто не указывайте эти параметры при запуске контейнера.
Вы можете загрузить и использовать файл docker-compose.yml
для сборки контейнера из Docker Hub:
curl -sO https://raw.githubusercontent.com/Lifailon/TorAPI/main/docker-compose.yml
curl -sO https://raw.githubusercontent.com/Lifailon/TorAPI/main/.env.yml
Отредактируйте переменные окружения в файле .env (необходимо для использования прокси сервера), и запустите контейнер:
docker-compose up -d
Вы можете сохранить образ, загруженный из Docker Hub, что бы передать ее на машину, у которой нет доступа к Docker Hub:
docker save -o TorAPI-Docker-Image.tar lifailon/torapi
В файлах к релизу вы можете скачать подготовленный образ и загрузить его на своей машине:
docker load -i TorAPI-Docker-Image.tar
Запустите контейнер из загруженного локального образа:
docker run -d --name TorAPI -p 8443:8443 --restart=unless-stopped lifailon/torapi:latest
Вы можете создать образ самостоятельно из исходных файлов проекта, используя dockerfile.
Клонируйте этот репозиторий:
git clone https://github.com/Lifailon/TorAPI
cd TorAPI
При необходимости, отредактируйте переменные или другие параметры в dockerfile
:
ENV PROXY_ADDRESS="192.168.3.100"
ENV PROXY_PORT="9090"
ENV USERNAME="TorAPI"
ENV PASSWORD="TorAPI"
Соберите образ и запустите контейнер:
docker build -t torapi .
docker run -d --name TorAPI -p 8443:8443 --restart=unless-stopped torapi
Для установки проекта и всех зависимостей, вы можете использовать менеджер пакетов npm:
npm install -g torapi
Клонируйте репозиторий, установите зависимости и запустите сервер:
git clone https://github.com/Lifailon/TorAPI
cd TorAPI
npm install
npm start
По умолчанию сервер будет запущен на порту 8443
.
Вы можете указать другой порт:
npm start -- --port 2024
Для разработки используйте запуск в режиме nodemon (перезапускает сервер при изменение содержимого файлов):
npm run dev
Для использования прокси сервера для всех запросов:
npm start -- --port 2024 --proxyAddress 192.168.3.100 --proxyPort 9090
Если требуется авторизация на прокси-сервере:
npm start -- --port 2024 --proxyAddress 192.168.3.100 --proxyPort 9090 --username TorAPI --password TorAPI
📚 Документация доступна в Swagger UI по адресу: http://localhost:8443/docs
через модуль swagger-ui-express. Описание документации производится через библиотеку swagger-jsdoc.
Чтобы создать или обновить файлы документации Swagger в формате JSON
и YAML
, используйте команду:
npm run docs
Вы можете запустить тестирование, чтобы быстро проверить работоспособность всех конечных точек в консоли:
npm start -- --test
Во время тестирования запускается локальный сервер, делается запрос к конечной точке /api/provider/test
, логирует вывод в формате JSON и завершает свою работу.
Изменение параметра заголовка в запросе:
npm start -- --test --q "The Rookie"
Также доступны параметризированные тесты через GitHub Actions с использованием Postman через newman в формате JUnit
.
Для локального запуска тестов:
npm install -g newman
newman run postman-tests.json \
--iteration-count 1 \
--env-var "baseUrl=http://localhost:8443" \
--env-var "query=The Rookie" \
--env-var "queryAllPage=test" \
--env-var "categoryRuTracker=1605" \
--env-var "categoryKinozal=20" \
--env-var "categoryRuTor=10" \
--env-var "categoryNoNameClub=1318"
...
┌─────────────────────────┬────────────────────┬───────────────────┐
│ │ executed │ failed │
├─────────────────────────┼────────────────────┼───────────────────┤
│ iterations │ 1 │ 0 │
├─────────────────────────┼────────────────────┼───────────────────┤
│ requests │ 45 │ 0 │
├─────────────────────────┼────────────────────┼───────────────────┤
│ test-scripts │ 167 │ 0 │
├─────────────────────────┼────────────────────┼───────────────────┤
│ prerequest-scripts │ 154 │ 0 │
├─────────────────────────┼────────────────────┼───────────────────┤
│ assertions │ 169 │ 0 │
├─────────────────────────┴────────────────────┴───────────────────┤
│ total run duration: 32s │
├──────────────────────────────────────────────────────────────────┤
│ total data received: 1.95MB (approx) │
├──────────────────────────────────────────────────────────────────┤
│ average response time: 663ms [min: 2ms, max: 6.1s, s.d.: 1216ms] │
└──────────────────────────────────────────────────────────────────┘
-
🔎 LibreKinopoisk - расширение Google Chrome, которое добавляет кнопки на сайт Кинопоиск и предоставляет интерфейс TorAPI в стиле Jackett (без необходимости устанавливать серверную часть и использовать VPN) для быстрого поиска фильмов и сериалов в открытых источниках.
-
🧲 Kinozal Bot - Telegram бот, который позволяет автоматизировать процесс доставки контента до вашего телевизора, используя только телефон. Предоставляет удобный интерфейс для взаимодействия с торрент трекером Кинозал и базой данных TMDB для отслеживания даты выхода серий, сезонов и поиска актеров для каждой серии, а также возможность управлять торрент клиентом qBittorrent или Transmission на вашем компьютере, находясь удаленно от дома и из единого интерфейса.
-
❤️ WebTorrent Desktop api - форк клиента WebTorrent Desktop, в котором добавлен механизм удаленного управления через
REST API
на базе Express Framework. -
📡 Reverse Proxy .NET - кроссплатформенная утилита командной строки для реализации обратного прокси-сервер на базе .NET. Используется для предоставления доступа хостам в сети с одного сетевого интерфейса к удаленным приложениям через протоколы TCP, UDP или HTTP/HTTPS (поддерживаются
GET
иPOST
запросы для доступа к внешним ресурсам через Интернет) доступных через другой сетевой интерфейс (например, через VPN) на вашем хосте без лишних настроек и с поддержкой авторизации.