English | Русский
Неофициальный API
(backend) для торрент трекеров RuTracker, Kinozal, RuTor и NoNameClub. Используется для быстрого и централизованного поиска раздач, получения торрент файлов, магнитных ссылок и подробной информации о раздаче по названию фильма, сериала или идентификатору раздачи.
Проект вдохновлен ✨ Torrent-Api-py (ранее Torrents-Api) для русскоязычных торрент провайдеров.
Вы можете воспользоваться публичной и бесплатной версией опубликованной в Vercel, или развернуть его самостоятельно на любом облачной бессерверной платформе (serverless
), а также локально с помощью Docker или менеджера пакетов NPM.
Спецификация OpenAPI доступна на официальном сайте Swagger Hub.
Выпущено под лицензией MIT.
- 💁 Для чего
- 🎉 Реализовано
- 📋 Список доступных провайдеров
- ⚡ Frontend
- 🚀 Deploy
- 🐳 Docker
- 📦 NPM
- 🔨 Build
- 📚 Swagger
- 🧪 Postman
- 👨🔬 Jenkins
- 🎊 Другие проекты
При использовании публичной версии не нужно использовать VPN
сервисы, так как данный сервер выступает в роле шлюза, что позволяет интегрировать API
в любой проект без сетевых ограничений, а также использовать новостную RSS
ленту на мобильных устройствах, например, через ReadYou или Feeder. Для работы API не требуется токен доступа и авторизация в трекерах.
- Поиск по названию для получения актуальных или всех доступных раздач (со всех доступных страниц) из указанного провайдера (торрент-трекера) или со всех трекеров одновнеременно. Каждая раздача содержит уникальный идентификатор (используется для поиска по
id
), категорию (используется для фильтрации по категории), краткая информация и ссылка на скачивание торрент-файла. - Получение списка категорий для всех провайдеров и фильтрация поиска по категории.
- Поиск по уникальному идентификатору раздачи указанного провайдера для получения дополнительной информации: магнитная ссылка и хэш сумма для прямой загрузки через любой торрент клиент, ссылки на базы даных о кинематографе (Кинопоиск и IMDb), ссылки на постеры, подробное описание и содержимое раздачи (список файлов и их размер).
- Получение новостных
RSS
лент для всех используемых провайдеров с поддержкой фильтрации в форматахXML
, а такжеJSON
.
Имя провайдера | Зеркала | Регистрация | Фильтрация для поиска и 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 реализована кастомная лента новостей с главной страницы, которые поддерживают фильтрацию по категориям.
Пользовательский интерфейс для браузера и мобильных устройств в стиле Jackett через расширение 🍿 Libre Kinopoisk для одновременного поиска раздач во всех доступных торрент-трекерах и загрузки контента.
Плагин Torrent Search для быстрого поиска раздач во всех доступных торрент-трекерах через интерфейс Wox, которое доступно для установки из репозитория плагинов.
Вы можете развернуть свой публичный сервер на платформе 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
Замените содержимое переменных для подключения к прокси-серверу на свои. Если авторизация не используется, просто не указывайте эти параметры при запуске контейнера.
Возможно загрузить и использовать файл docker-compose для сборки контейнера из 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
Вы можете создать образ самостоятельно из исходных файлов проекта, используя dockerfile.
Клонируйте репозиторий:
git clone https://github.com/Lifailon/TorAPI
cd 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
или html
.
Локальный запуск тестов:
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] │
└──────────────────────────────────────────────────────────────────┘
Для автоматизации процесса развертвывания, тестирования и управления (запуск, остановка и выгрузка логов) на удаленной машине в локальной среде используется Jenkins Pipeline.
-
🔎 LibreKinopoisk - расширение Google Chrome, которое добавляет кнопки на сайт Кинопоиск и предоставляет интерфейс TorAPI в стиле Jackett (без необходимости устанавливать серверную часть и использовать VPN) для быстрого поиска фильмов и сериалов в открытых источниках.
-
🧲 Kinozal Bot - Telegram бот, который позволяет автоматизировать процесс доставки контента до вашего телевизора, используя только телефон. Предоставляет удобный интерфейс для взаимодействия с торрент трекером Кинозал и базой данных TMDB для отслеживания даты выхода серий, сезонов и поиска актеров для каждой серии, а также возможность управлять торрент клиентом qBittorrent или Transmission на вашем компьютере, находясь удаленно от дома и из единого интерфейса.
-
📡 Froxy - классический и обратный прокси сервер на базе
.NET
для запуска в режиме командной строки и контейнера Docker. Поддерживает проксированиеHTTPS
трафика (CONNECT
запросы) и протоколSOCKS5
для туннелированияTCP
трафика, а такжеTCP
,UDP
иHTTP/HTTPS
протоколы для обратоного проксирования (поддерживается обработкаGET
иPOST
запросов с передачей заголовков и тела запроса для работы сAPI
и передачиcookie
). -
❤️ WebTorrent Desktop api - форк клиента WebTorrent Desktop, в котором добавлен механизм удаленного управления через
REST API
на базе Express Framework.