После первого моего знакомства с консольным торрент клиентом rtorrent меня не покидала мысль автоматизировать свою работу с торрентами.
Статей по работе с торрентами много, но того, что нужно именно мне, я не нашел.
В этой статье я расскажу и покажу на примере как работать с торрентами средствами php+mysql+rtorrent.
На этом примере форма с выгрузкой torrent файла, но это не имеет значения. Никто не мешает вам парсить трекер и передавать на скрипт готовый torrent файл.
Список всех команд к rtorrent: RTorrentCommands
После того как мы связали rtorrent с php+mysql идей для дальнейшей автоматизации очень много. Лично для себя сделал автоматическую закачку новых серий сериалов и смс оповещение об успешной закачке.
Встроить такой метод в любую CMS и организовать закачку новых фильмов/сериалов/софта и выгрузки их на файлообменники не составит труда.
Статей по работе с торрентами много, но того, что нужно именно мне, я не нашел.
В этой статье я расскажу и покажу на примере как работать с торрентами средствами php+mysql+rtorrent.
Необходимо:
- rtorrent ( --with-xmlrpc-c)
- PHP5 XML_RPC2 library
- PHP Class Torrent.php
Ставим torrent файл на закачку
На этом примере форма с выгрузкой torrent файла, но это не имеет значения. Никто не мешает вам парсить трекер и передавать на скрипт готовый torrent файл.
<?php .......... $torrent = new Torrent($_FILES['file']['tmp_name']); if ($hash = $torrent->hash_info()) { move_uploaded_file($_FILES['file']['tmp_name'], "torrent/new/" . microtime(true) . rand(1000, 9999) . ".torrent"); mysql_query("INSERT INTO video SET `show` = '" . mysql_real_escape_string($show) . "', hash = '" . mysql_real_escape_string($hash) . "'}'"); $error = "Торрент добавлен"; } else { $error = "Это не torrent-файл"; } .......... ?>
Подключаемся к rtorrent:
<?php ...... $xrc = XML_RPC2_Client::create("http://127.0.0.1/RPC2", array("encoding" => "utf-8")); .....
и работаем со списком скачанных торрентов:
..... foreach ($xrc->download_list("complete") as $hash) { $episode = mysql_fetch_assoc(mysql_query("SELECT * FROM video WHERE hash = '" . mysql_real_escape_string($hash) . "'")); if (!$episode) { // Не наш торрент continue; } $base_path = $xrc->{"d.get_base_path"}($hash); if (is_file($base_path)) { // Торрент скачан, обновим запись в базе и удалим его из очереди mysql_query("UPDATE video SET filename = '" . mysql_real_escape_string($base_path) . "', hash = '' WHERE hash = '" . mysql_real_escape_string($hash) . "'"); $xrc->{"d.erase"}($hash); } else { printf("$base_path does not exist!\n"); } } ?>
Список всех команд к rtorrent: RTorrentCommands
Что имеем в итоге?
После того как мы связали rtorrent с php+mysql идей для дальнейшей автоматизации очень много. Лично для себя сделал автоматическую закачку новых серий сериалов и смс оповещение об успешной закачке.
Встроить такой метод в любую CMS и организовать закачку новых фильмов/сериалов/софта и выгрузки их на файлообменники не составит труда.
