Автоматизируем скачивание торрентов на 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 # Green Bay Packers!!!!
      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 целиком и заработало. Наконец-то!


© 2017. All rights reserved.

Работает на Jekyll, тема Hydejack