- PVSM.RU - https://www.pvsm.ru -
После первого моего знакомства с консольным торрент клиентом rtorrent меня не покидала мысль автоматизировать свою работу с торрентами.
Статей по работе с торрентами много, но того, что нужно именно мне, я не нашел.
В этой статье я расскажу и покажу на примере как работать с торрентами средствами php+mysql+rtorrent.
На этом примере форма с выгрузкой 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-файл";
}
..........
?>
<?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 [3]
После того как мы связали rtorrent с php+mysql идей для дальнейшей автоматизации очень много. Лично для себя сделал автоматическую закачку новых серий сериалов и смс оповещение об успешной закачке.
Встроить такой метод в любую CMS и организовать закачку новых фильмов/сериалов/софта и выгрузки их на файлообменники не составит труда.
Автор: L3n1n
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/pesochnitsa/10721
Ссылки в тексте:
[1] PHP5 XML_RPC2 library: http://pear.php.net/manual/en/package.webservices.xml-rpc2.php
[2] PHP Class Torrent.php: http://www.phpclasses.org/browse/file/24765.html
[3] RTorrentCommands: http://libtorrent.rakshasa.no/wiki/RTorrentCommands
Нажмите здесь для печати.