Как стать автором
Обновить

Jackett и альтернативные решения (интерфейсы и api) для поиска торрентов

Уровень сложностиПростой
Время на прочтение8 мин
Количество просмотров4.7K

Всем привет! В этой небольшой статье расскажу о том, что такое Jackett, на сколько это полезное и простое решение в вопросе поиска нужных раздач, а также, какие существуют альтернативы как для пользовательского интерфейса, так и для API (Application Programming Interface).

Вступление

Ранее уже рассказывал (тут и тут) про свой небольшой проект, который позволяет настроить управление торрент-клиентами и предоставляет доступ к интерфейсу трекера Кинозал (+ интеграция с базой данных TMDB) через бота в Telegram. Хотя дальше речь пойдет немного о другом, хотел акцентировать, что такое решение уже является неплохой альтернативой стека servarr (а исходя из полученной обратной связи, запуск бота оказался для некоторых даже проще), цель которого объединить в себе все интерфейсы в один и возможность производить поиск и управлять загрузкой контента с телефона, находясь удаленно от дома. Из очевидных минусов бота, поддерживается только один трекер для поиска медиа контента, хотя и этого за частую может быть достаточно.

К слову, совсем недавно добавил возможность и инструкцию для запуска бота в контейнере Docker.

Возвращаясь к servarr стоит уточнить, что в отличии от бота, такое решение имеет архитектурно другой подход, например, Sonarr позволяет автоматизировать процесс поиска и загрузки сериалов, отслеживая выход новых серий, и на основе заданных критериев автоматически производить загрузку, хотя для этого все равно периодически придется пользоваться интерфейсом. Главной проблемой с которой я столкнулся, является отсутствие поиска контента с русскоязычной локализацией, отчасти которую как раз решает Jackett (как и другие сервисы в данной статье, он имеет открытый исходный код на GitHub).

Jackett

Jackett - это куртка для трекеров в первую очередь API (простыми словами, программный интерфейс удаленного управления для использования его функций в других приложениях) для очень большого количества провайдеров с целью централизованного и одновременного (параллельного) поиска раздач в нескольких трекерах. Но помимо API, для обычного пользователя он может быть полезен в первую очередь за его интерфейс поиска, после знакомства с которым, вам больше не придется ходить по различным сайтам для поиска подходящей для вас раздачи и скорее всего вы вовсе удалите все закладки с трекерами из браузера. Особенно удивляет то, что все сразу доступно из коробки, без необходимости устанавливать дополнительные плагины или модули (как в случае с плагинами для qBittorrent, про который я расскажу чуть ниже), а запустить можно с помощью исполняемого файла, так и сервисом в системе Windows (скачать который вы можете в репозитории на GitHub), или например в контейнере Docker (что куда удобнее). Вот пример запуска контейнера одной командой:

# Создаем директорию для хранения файлов конфигурации, которые будут сохранены в системе даже после удаления образа
sudo mkdir /jackett
# Скачиваем образ и запускаем контейнер
sudo docker run -d \
  --name=jackett \
  -e PUID=1000 \
  -e PGID=1000 \
  -e TZ=Etc/UTC \
  -e AUTO_UPDATE=true `#optional` \
  -e RUN_OPTS= `#optional` \
  -p 9117:9117 \
  -v /jackett/data:/config \
  -v /jackett/blackhole:/downloads \
  --restart unless-stopped \
  lscr.io/linuxserver/jackett:latest

Настройки для всех трекеров (они же индексаторы) будут храниться в директории /jackett/data/Jackett/Indexers/ (в Windows: C:\ProgramData\Jackett\Indexers), а конфигурация самого сервера располагается тут: /jackett/data/Jackett/ServerConfig.json (в Windows: C:\ProgramData\Jackett\ServerConfig.json). Можно без проблем переехать с Windows на Linux (сразу в контейнер, что я и сделал), без необходимости настраивать все подключения заново, только лишь заменив файлы в указанных директориях.

Интерфейс максимально простой и в тоже самое время удобный, который можно вообще себе представить. Все настройки находятся на главной и единственной странице в браузере, а добавление трекеров для индексации запросов производится в модальном окне интерфейса.

Интерфейс Jackett.
Интерфейс Jackett.

Количество русскоязычных трекеров для поиска насчитывается 63, из которых 26 являются публичными (т.е. не требуют авторизации для поиска и загрузки файлов). Общее количество составляет целых 612. Возможно из списка получится найти для себя новый полезный источник, но в любом случае удобнее добавить и использовать сразу несколько индексаторов.

Фильтрация индексеров (трекеров) по региону для добавлению и дальнейшего использованя при поиске.
Фильтрация индексеров (трекеров) по региону для добавлению и дальнейшего использованя при поиске.

Все что требуется от пользователя, это выбрать подходящие вам провайдеры (что очень просто сделать, используя встроенные фильтры) и нажать ➕ для его добавления. В случае если это приватный трекер, нужно нажать на кнопку с настройками и заполнить авторотационные данные, после чего сразу можно приступать к поиску и загрузки торрент файлов, вызвав интерфейс с помощью кнопки Manual search:

Ищем раздачи по ключевому слову "The Rookie" в 5 трекерах и фильтруем по ключевому слову 1080, что соответствует разрешению Full HD.
Ищем раздачи по ключевому слову "The Rookie" в 5 трекерах и фильтруем по ключевому слову 1080, что соответствует разрешению Full HD.

По мимо поиска, Jackett предоставляет RSS-ленту новостей с поддержкой категорий (фильтрация по типу контента, жанру, региону и т.п.). Это очень удобно, если вы хотите наблюдать за раздачами по конкретной тематике. Например, меня интересуют ROM-ы на Nintendo Switch, для этого я открываю настройки трекера и нахожу нужный идентификатор категории (через комбинацию клавиш Ctrl+F в браузере) по названию:

Поиск идентификатора Category для RSS Feed.
Поиск идентификатора Category для RSS Feed.

В списке индексаторов нажимаем сору RSS Feed и подставляем нужный нам идентификатор в конец строки скопированного url-адреса. В итоге получаем что-то типо такого: http://127.0.0.1:9117/api/v2.0/indexers/tracker/results/torznab/api?apikey=<ВАШ_ТОКЕН>&t=search&cat=101605 (где 101605 - номер идентификатора) который можно добавить в любой RSS клиент для наблюдения. Для чтения лент могу порекомендовать десктопное приложение Fluent Reader (доступно для всех платформ, имеет приятный и современный интерфейс) или расширение для браузеров - Feedbro.

На этом в общем-то по интерфейсу и все, дальше уже можно привязывать Jackett к Sonarr, Radarr или другим приложениям в настройках их интерфейсов (о том как это сделать сказано на странице интерфейса) через API (токен доступа находится в правом верхнем углу интерфейса) для использования поиска раздач через Jackett. Вот пример добавления в настройках Sonarr:

Добавление Jackett в настройках Sonarr.
Добавление Jackett в настройках Sonarr.

qBittorrent Search Plugins

Если вас больше интересует интерфейс поиска, то в случае с Jackett есть всего один минус, требуется установка серверной части на устройстве (ну еще доступ к локальной сети до сервера, если вы используете выделенный компьютер для подобных целей), и тут существуют альтернативы, например, плагины для торрент клиента qBittorrent (который также может выступать RSS-клиентом в соседней вкладке), где поиск выглядит следующим образом:

Поиск раздач через интерфейс поиска в клиенте qBittorrent.
Поиск раздач через интерфейс поиска в клиенте qBittorrent.

Удобство такого решения заключается в том, что по результатам поиска возможно сразу просматривать содержимое любой раздачи и производить загрузку контента на клиенте. Интерфейс очень похож на Jackett, хотя на мой взгляд менее привлекательный, каждый новый запрос открывает новое окно (что может быть порой удобнее), а для подключения большого количества трекеров требует куда больше настроек.

Что бы данный функционал заработал, нужно установить плагин для соответствующих трекеров. Неофициальный (созданные сторонними разработчиками) список плагинов можно найти в Wiki на GitHub. Например, для самой популярной русскоязычной четверки репозиторий находится тут, поддержка которых осуществляется по сей день. Инструкцию по установке чаще всего можно найти в описании репозитория с плагином, хотя в целом процесс всегда одинаков (за исключением заполнения авторизационных данных через конфигурацию), с которым можно ознакомиться тут. Что бы немного упростить установку плагинов, можно воспользоваться скриптом на PowerShell (удобно также для отладки при написании собственных плагинов, где применяется язык Python).

Немного про API

Хотя возможность поиска в интерфейсе Jackett это очень удобная опция, она является скорее демонстрацией его функций, которые доступны через API внешним приложениям. Вот пример запроса к API через Windows PowerShell:

# Переменная с API токеном доступа
$API_KEY = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
# Прочитать RSS в указанном трекере (RuTor)
Invoke-RestMethod "http://127.0.0.1:9117/api/v2.0/indexers/rutor/results/torznab/api?apikey=$API_KEY"
# Используем категорию для фильтрации новостной ленты
Invoke-RestMethod "http://192.168.3.101:9117/api/v2.0/indexers/rutor/results/torznab/api?apikey=$API_KEY&cat=8000"
# Производим поиск
$query = "The+Rookie"
Invoke-RestMethod "http://127.0.0.1:9117/api/v2.0/indexers/rutor/results/torznab/api?apikey=$API_KEY&t=search&cat=&q=$query"

Вывод данных по умолчанию производится в формате XML:

Поисковой запрос через PowerShell и Curl к Jackett API.
Поисковой запрос через PowerShell и Curl к Jackett API.

На выходе мы получаем типизированное количество свойств, где ключевыми параметрами здесь являются Title с заголовком раздачи, размер раздачи (size), а также guid и link (магнитная ссылка с содержимым info hash) для загрузки, которые не всегда в достаточной мере описывают содержимое раздачи (нет информации о переводе, озвучке и прочего).

При создании Кинозал бота (упомянутого в начале статьи), я долго искал API, который бы отдавал куда больше информации для анализа раздачи и удобного использования в боте без необходимости извлечения данных напрямую со страницы трекера. Хотя решения так и не нашлось, у меня получилось найти еще один интересный проект - Torrent-Api. По сути это альтернатива Jackett api, только для 16 трекеров, но без пользовательского интерфейса. Изначально он был написан на JavaScript с использованием Express, позднее переписан на Python с использованием FastAPI, а для удобства ознакомления доступна документация Swagger, которую данный framework генерирует автоматически. Именно данный проект и отсутствие подобного решения для русскоязычных провайдеров побудило создать свой API сервер - TorAPI, в котором по мимо поиска, будет возможность получить дополнительную информацию для каждой раздачи по ее идентификатору.

Подробную информацию о проекте TorAPI вы можете найти в репозитории на GitHub. Цель этого API по мимо поиска - получение подробной информации о любой раздаче в указанном трекере. В описание к публикуемым раздачам очень часто содержится много полезной информации, которая за частую берется из различных источников и может также быть дополнена автором, что делает ее по своему уникальной. При поиске по идентификатору возможно получить подробное описание фильма, сериала или другого контента, а также содержимое раздачи (список файлов), ссылки на постеры, рейтинги в базах данных о кинематографе, информация о переводе, озвучке и т.п. Это публичное и доступное всем API, которое опубликовано на Vercel, а также его возможно запустить локально в контейнере Docker. Спецификация OpenAPI доступна на официальном сайте Swagger Hub.

Расширение для Google Chrome

API это только backend (по своей сути - информация в текстовом виде), по этому для демонстрации работы TorAPI был написан простой интерфейс, который работает в модальном окне (поверх текущий вкладки в браузере), и визуальной напоминающий Jackett. Интерфейс доступен через расширение LibreKinopoisk для Google Chrome, при этом от вас не требует (но такая возможность поддерживается) установки серверной части и других настроек для его работы, кроме установки самого расширения. Поиск выглядит так:

Интерфейс расширения LibreKinopoisk для поиска раздач.
Интерфейс расширения LibreKinopoisk для поиска раздач.

Изначально (до внедрения упомянутого функционала) это расширение было вдохновлено другим проектом - YoK, но ввиду неработоспособности отдаваемых плееров в исходном расширении, было переписано и расширено дополнительными кнопками для более быстрого поиска контента во внешних источниках. Подробную информацию о возможностях расширения, а также инструкцию по установки вы можете найти на GitHub.

Итог

Вы можете выбрать любое удобное для вас решение, как по мне, использовать централизованный поиск куда удобнее, а главное быстрее, чем посещать каждый сайт по отдельности. Чего мне все еще не хватает, так это мобильного решения, особенно когда я нахожусь в дороге и хочу найти и загрузить что-то на телефон или планшет. Такую задачу также решает бот, но для меня этого не всегда достаточно, по этому в будущем есть планы по реализации полноценного приложения. А если вы знаете о других интересных и полезных проектах по данной тематике, то расскажите о них в комментариях!

Теги:
Хабы:
Всего голосов 6: ↑6 и ↓0+7
Комментарии9

Публикации

Истории

Ближайшие события

15 – 16 ноября
IT-конференция Merge Skolkovo
Москва
22 – 24 ноября
Хакатон «AgroCode Hack Genetics'24»
Онлайн
28 ноября
Конференция «TechRec: ITHR CAMPUS»
МоскваОнлайн
25 – 26 апреля
IT-конференция Merge Tatarstan 2025
Казань