Skip to content

Latest commit

 

History

History
293 lines (202 loc) · 22.1 KB

README_RU.md

File metadata and controls

293 lines (202 loc) · 22.1 KB

Image alt





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.

Frontend

Google Chrome Extension

Реализация простого пользовательского интерфейса (в стиле Jackett) доступна через расширение Google Chrome 🍿 Libre Kinopoisk для одновременного поиска раздач во всех доступных торрент-трекерах и загрузки контента через магнитные ссылки или торрент файлов на прямую из трекеров.

Wox Plugin

Плагин 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 реализована кастомная лента новостей с главной страницы, которые поддерживают фильтрацию по категориям.


🚀 Deploy

Вы можете развернуть свой публичный API в Vercel из исходного репозитория, просто нажмите кнопку ниже и следуйте инструкциям:

Vercel

🐳 Docker

Docker Hub

Проект использует GitHub Actions для сборки контейнера Docker и автоматического тестирования функциональности всех конечных точек.

Run

Загрузите образ и запустите контейнер из 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 серверу на свои. Если вы не используете авторизацию на прокси сервере, просто не указывайте эти параметры при запуске контейнера.

Compose

Вы можете загрузить и использовать файл 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

Local image

Вы можете сохранить образ, загруженный из 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

Вы можете создать образ самостоятельно из исходных файлов проекта, используя 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

Proxy

Для использования прокси сервера для всех запросов:

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

OpenAPI

📚 Документация доступна в 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) на вашем хосте без лишних настроек и с поддержкой авторизации.