Автоматизируем скачивание торрентов на Synology
Задача
tenyardtracker.com - закрытый торрент-трекер, где выкладывают записи игр по американскому футболу. Что бы поддерживать нормальный рейтинг, нужно как можно раньше присоединяться к раздаче. Но это сложно, разница во времени между нами и США большая, и я в это время как правило сплю. Добавляем к этому нерабочий RSS у трекера и что для скачивания торрента нужна авторизация.
Задача автоматизировать эту процедуру. Как только появляется раздача, сразу скачиваем торрент, добавляем в клиент и скачиваем.
uTorrent RSS
Конечно, можно было бы решить задачу старым дедовским способом, uTorrent+RSS+данные из cookie файла, но нет - RSS кривой:
<link>
https://tenyardtracker.com/download.php/35382/NFL.2017.Week.04.Redskins.vs.Chiefs.720p60.TYT.mp4.torrent
</link>
А должно быть так:
<link>
https://tenyardtracker.com/download.php?torrent=35382
</link>
Это решается маленьким скриптом на php:
<?php
$code = file_get_contents("https://tenyardtracker.com/rssdd.xml");
$pattern = "/https\:\/\/tenyardtracker\.com\/download\.php\/(\d+)\/[^<]*/";
preg_match_all($pattern, $code, $tmp);
$replacement = "https://tenyardtracker.com/download.php?torrent=$1";
echo preg_replace($pattern, $replacement, $code);
?>
Если кому данный способ подходит, пользуйтесь: https://marand.ru/tyt/tyt.php
Что бы добавить в uTorrent в качестве RSS, добавьте эту строку целиком:
https://marand.ru/tyt/tyt.php:COOKIE:tytracker_ipcheck=xxx;tytracker_pass=xxx;tytracker_uid=xxx;xf_session=xxx
Данные подставьте из своего cookie файла.
Осталось настроить фильтр на вашу любимую команду :)
Synology NAS
В наличии есть NAS Synology и мне захотелось перевесить эту задачу на него. И получилось :)
Flexget это что-то невероятное. Программа умеет логиниться на сайты, переходить по страницам, парсить HTML и скачивать то, что укажешь. Может отличать просмотренные серии от новых, может скачивать фильмы с более высоким качеством по мере появления и т.д. Повторюсь - это какой-то монстр. Почитайте документацию и посмотрите рабочие примеры конфигов пользователей.
Установка на Synology простая. Добавляем репозиторий SynoCommunity и устанавливаем пакет Flexget. Осталось создать конфигурационный файл(на самом деле нет).
Конектимся к NAS по SSH и редактируем /volume1/@appstore/flexget/var/config.yml
. Вот мой с комментариями:
schedules: # задаем интервал проверки
- tasks: [tyt_nfl]
interval:
minutes: 15
tasks:
tyt_nfl:
form: # указываем форму логина и данные для входа
url: https://tenyardtracker.com/members.php?action=login
username: user
password: pass
html: # переходим в нужную категорию
url: https://tenyardtracker.com/browse.php?cat=65
title_from: link # говорим использовать название из ссылки
regexp:
accept: # фильтруем что скачивать
- Packers # Go Pack GO!!!!
reject: # не скачивать
- raw
quality: # только 720p!
- 720p
urlrewrite: # превращаем ссылку на страницу с торрентом на сам торрент
sitename:
regexp: details.php\?id=(?P<id>\d+).*
format: download.php?torrent=\g<id>
download: /volume1/downloads/_inc # скачиваем торрент файл в эту папку. Из этой папки штатный
# Download Station забирает задачи на скачивание.
Сохраняем, перезапускаем в менеджере пакетов Flexget и... Ничего не работает, в логе такая хрень:
2017-10-04 13:23 CRITICAL formlogin tyt_nfl mechanize required (python module), please install it.
2017-10-04 13:23 WARNING task tyt_nfl Aborting task (plugin: form)
Ок, установим pip, затем mechanize.
$ wget https://bootstrap.pypa.io/get-pip.py
$ python get-pip.py
Это займет минут пять, затем:
$ pip install mechanize
Но и после этого Flexget ругался на отсутствие библиотеки mechanize. Решил тем, что скопировал библиотеку в окружение Flexget:
cp -avr /usr/lib/python2.7/site-packages/mechanize /volume1/@appstore/python/lib/python2.7/site-packages
cp -avr /usr/lib/python2.7/site-packages/mechanize-0.3.5.dist-info /volume1/@appstore/python/lib/python2.7/site-packages
Ребутнул NAS целиком и заработало. Наконец-то!
…