Ниже преведен пример реализации этой задачи, его можно модернизировать использую curl для авторизации на торренте либо использовать куки, у меня пока не получилось. Поэтому использую поиск по рсс ленте торрента, скачиваю торренты, и редактирую их, вставляю свой uid в торрент файл.
Для того чтобы авторизованно захадить и скачивать торрент файлы с трекеров, можно воспользоватся кукисами, тогда строка wget будет иметь вид
wget -nc --append-output=download_torrents.txt --load-cookies=cookies.txt --content-disposition http://host?id=654321&key=123456
-nc - закачки не будет если файл уже существует
-append-output - выведет информацию о скачанном торрентфайле в файл (может пригодится для мониторинга например)
Итак, приступим:
Определяем рсс ленту
#!/bin/phpЧитаем рсс ленту
<?
$url = "http://torrent/rss.php";
$rss = simplexml_load_file($url); //Интерпретирует XML-файл в объект
//цикл для обхода всей RSS ленты
$i=0;
foreach ($rss->channel->item as $item) {Поиск нужных торрентов
$masstitle[] = $item->title;
$massdesk[] = $item->description;
$massimg[] = $item->enclosure['url'];
$citydate[] = explode("SimpleXMLElement Object", $masstitle[$i][0]);
$masimg[] = explode("SimpleXMLElement Object", $massimg[$i]);
$i++;
}
for($j=0; $j<=count($citydate); $j++) { if(strstr($citydate[$j][0], "The Big Bang Theory") || strstr($citydate[$j][0], "House M.") || strstr($citydate[$j][0], "встретил вашу маму")) { $str2[] = $citydate[$j][0]; $massurls[] = $massimg[$j]; } }Если в названии торрент файл есть ENG, то не закачивать его, но уведомление покажем (нелюблю фильмы без перевода ) в обратном случае скачивать торрент файл, и оповещать об этом.
for($ji=0; $ji<count($massurls); $ji++)Если торрент скачан, то редактируем его
{
if(!strstr($str2[$ji], "ENG") && !strstr($str2[$ji], "встретил вашу маму"))
{
$download = "cd /home/username/torrents/watch/ && wget -nc --output-file=/home/username/scripts/torrent/torrent.log --content-disposition $massurls[$ji]";
exec($download);
sleep("3");
$ff = "cat /home/username/scripts/torrent/torrent.log | grep \" - \" | cut -d \"\`\" -f 2 | cut -d \"'\" -f 1";
$filename = exec($ff);
if($filename != "") {Проверяем прошлые скачанные торренты, если вдруг они совпадают с нынешним, то не закачиваем и не сообщаем об этом торренте
$sed= "sed -e 's/announce65/announce68/' -i \"/home/username/torrents/watch/$filename\"; sed -e 's/pid[=][a-zA-Z,0-9]*/pid=yourpid/' -i \"/home/username/torrents/watch/$filename\"";
exec($sed);
sleep("4");
}
} //Условие проверки ENG
} //Цикл
$fil = fopen("/home/username/scripts/torrent/torrents","a");Сохраняем запись о закаченном торренте, для будущих проверок и для коньков сгодится.
for($i = 0; $i<count($str2); $i++)
{
$stroka = substr($str2[$i], 0, -5);
$eho = "cat /home/username/scripts/torrent/torrents | grep \"$stroka\"";
$t = exec($eho);
if($t == "")
{
$err = "$i";
}
}
fclose($fil);
$fil = fopen("/home/username/scripts/torrent/torrents","w+");Формируем сообщение о появлении нового торрента
for($i = 0; $i<count($str2); $i++)
{
$fw=fputs($fil,$str2[$i]." \n");
1.вариант - Для сообщения в ICQ(IRQ, gtalk)
if($err == "$i") {Сообщаем
$file= fopen("/home/username/scripts/torrent/mailto", "w+");
$textmail = "torrent.dml сообщает:
появился: $str2[$i]
скачать: $massurls[$i]\n";
$ff=fputs($file,$textmail);
exec("cat /home/username/scripts/torrent/mailto | centerim -S a -s msg -p icq -t uin");2. вариант для сообщения notify
fclose($file);
sleep("3");
}
Формируем сообщение
$notify = "notify-send 'Появился торент' '$str[$i]'";Выводим уведомление
exec($notify);Редактируем таблицу incron
fclose($file);
sleep("3");
}
?>
incrontab -eи записываем туда запуск rtorrent'a
Там же должен быть записан скрипт перемещения создаваемых файлов.
Как сделать описано в этой статье
Комментариев нет:
Отправить комментарий