Pull to refresh

Автоматическое скачивание .torrent-файлов с трекеров

Reading time 2 min
Views 4.9K
Мы с sofrus — большие любители сериалов. Не тех, которые «Рабыня Изаура» или «БТП», а современных типа «Побег» или «Хаус». Однажды, по пути из офиса к метро, мы общались на тему новых серий и sofrus предположил, что было бы очень здорово парсить RSS с популярных российских сериальных трекеров типа lostfilm или novafilm, и, затем, скачивать в автоматическом режиме. Мне очень приглянулась эта мысль, но я отложил ее до лучших времен.



И вот время наступило, когда Вебораме понадобился модуль CURL. Делая для него обвертку под наш фреймворк, я предположил, что лучшим способом потестировать модуль будет как раз написание скрипта для автоматического выкачивания .torrent файлов с трекеров. Для меня этот скрипт очень полезен, так как я очень ценю то, что делают команды релизеров вышеупомянутых трекеров и хочу всячески их поддерживать, если вы меня понимаете.

В общем, приступим:

Так как модуль-обвертка для CURL нашего фреймворка написан на PHP, буду использовать его CLI варинат.

На моем домашнем системнике специального назначения стоит rTorrent. И, если вам не известно, то у него есть функция автосканирования определенной папки на предмет появления там новых торрент-файлов. Значит задача сводится к тому, чтобы просто выкачивать файлы с трекеров и класть их в эту самую папку.

На обеих трекерах есть RSS с раздачами, значит буду выкачивать их, парсить, выкачивать торренты и класть в папку. Просто? Не совсем. Дело в том, что прежде чем скачать торрент с трекера надо на нем авторизоваться. Ну что-ж для CURL это не проблема. Сымитирую поведение обычного браузера, скажем FireFox и дело в шляпе.

Еще было-бы неплохо сделать фильтры для торрент файлов, чтобы скрипт скачивал не все подряд, а только то, что мне интересно. Благо имена файлам на трекерах дают вразумительные и проблемы применить к ним регулярки — нет.

Далее надо-бы сделать конфигурационный файл, чтобы можно было настроить скрипт под себя и добавить любые трекеры (экспериментально). Это тоже не очень сложно, главное правильно продумать структуру конфига.

После нескольких часов работы есть результат.

Просто распакуйте архив туда, куда вам нравится, поправьте config.php (инструкция внутри файла) и поставьте на crontab файл torrents.php. например так:

*/30 * * * * php /path/to/script/torrents.php

и раз в 30 минут он будет заходить на трекер и смотреть есть ли новые интересующие вас раздачи, если есть, то скачивать их в папку, указанную вами в конфиге. Результат работы пишется в файл /var/log/torrents.log.

Бонусом прилагается файл get_torrent.php, который параметрами принимает пути к торрент файлам и, основываясь на том-же конфиге, скачивает их и кладет в ту-же папку.

В общем, отдаю этот скрипт всем, кому он чем-то поможет, ни в коей мере не претендую ни на ноухау ни на гениальность идеи или реализации. :) Если будут вопросы/ пожелания, с удовольствием отвечу в комментариях.
Tags:
Hubs:
+45
Comments 87
Comments Comments 87

Articles