Php парсер ссылок на торрент
Автор : Акшонин Виталий
E-Mail: akshonin-собака-майл-ру
16 ноября 2011 года
Эта небольшая статья будет полезна вебмастерам, которые на своих интернет ресурсах предлагают фильмы, музыку, игры, софт или другой полезный контент который часто можно найти в торрент раздачах.
Обычно вебмастера делая новость для очередного медиа файла ставят ссылку на скачивание этого файла с популярных файлообмеников - летитбит, депозит и тому подобные. Но как мы все знаем ссылки эти живут пока ими пользуются, и если этой ссылкой никто не пользовался она через месяц умирает, и соответственно посетители сайта увидев надпись «Запрашиваемый файл не найден» закроют страницу файлообменники и страницу вашего сайта.
Чтобы клиент (посетитель) остался довольным вашим ресурсом необходимо следить за живучестью ссылок или периодически обновлять ссылки на дееспособные. Работа эта очень кропотливая и нудная, но её вполне можно автоматизировать. Пусть, как говорят, работают механизмы.
Вечно живую ссылки на медиа файл мы будем брать на лету (в реальном времени) с бесплатного торрент трекера tfile.ru. Помимо ссылки на файл также подтянем название файла, размер файла, количество сидов и пиров (отдающих и принимающих).
Полный php код приведен ниже, а сейчас разберем механизм работы парсера.
Запрос к торрнет трекеру выглядит примерно так:
__ИМЯ__ – например, убить боба.
На сайте результат запроса будет выглядеть так:
Получаем выдачу через регулярные выражения в свою переменную:
preg_match("/Загрузка...\<\/center\>\<\/div\>(.*)\<div class=\"pager\"\>Страницы/msi", $text, $out);
$tfile = $out[1];
Нам необходимо отсеять ненужные ссылки и ненужный текст из получаной таблицы. Опишу кратко проделанные действия:
- разделем текст на строки через <tr> и каждую строку через цикл (for) обрабатываем шаблонно;
- для моего сайта я оставил только строки содержащие текст: мультфильм, аниме, фильм;
- произвел прочие преобразования удалив ненужные теги и часть ненужного текста.
Результат получился следующим:
На моём сайте теперь всегда стоят живые ссылки с торрент трекера. Пример страницы на данный момент: http://kharitoshka.ru/video.php?id=20.
Полный текст кода смотрите ниже:
$put = "http://tfile.ru/forum/ssearch.php?q=".urlencode($runame)."&f=&g=&ql=&a=&d=&io=1&o=&size_min=0&size_max=0";
$text = file_get_contents ($put);
preg_match("/Загрузка...\<\/center\>\<\/div\>(.*)\<div class=\"pager\"\>Страницы/msi", $text, $out);
$tfile = $out[1];
$tfile = explode("<tr>", $tfile);
//print_r($tfile);
//$ft_echo .= count($tfile);
$ft_echo .= "<table width=\"100%\">";
$ft_echo .= "<tr>
<td><b>Имя торрент файла</b></td>
<td width=57><b>С | П</b></td>
<td width=60><b>Размер</b></td>
<td width=50><b>Ссылка</b></td>
</tr>
<tr><td colspan=\"4\"><hr></td></tr>
";
for ( $tfi=1; $tfi<=count($tfile); $tfi++)
{
if (preg_match("/download\.php\?/i", $tfile[$tfi]) and (preg_match("/Мультфильмы/i", $tfile[$tfi]) or preg_match("/Фильмы/i", $tfile[$tfi]) or preg_match("/HD и DVD/i", $tfile[$tfi]) or preg_match("/Аниме/i", $tfile[$tfi]) or preg_match("/Мобильное видео/i", $tfile[$tfi]))) {
// убираем сопли
$tfile[$tfi] = preg_replace("/ \<\/tr\>
\<\/table\>/msi","<!-- /tab -->",$tfile[$tfi]);
//$ft_echo .= "<tr><!-- 39 --><!-- $tfi -->".$tfile[$tfi]."</tr><!-- /39 -->";
$t1_file[$tfi] = preg_replace("/\<td class=\"f\"\>(.*)td class=\"t\">/msi","<td class=\"i\">",$tfile[$tfi]);
$t2_file[$tfi] = preg_replace("/\<td class=\"ps\"\>(.*)\<\/nobr\>
\<\/td\>/msi","<tr>",$t1_file[$tfi]);
$t3_file[$tfi] = preg_replace("/\<em\>/msi","",$t2_file[$tfi]);
$t4_file[$tfi] = preg_replace("/\<\/em\>/msi","",$t3_file[$tfi]);
$t5_file[$tfi] = preg_replace("/\<tr\>/msi","",$t4_file[$tfi]);
$t5_file[$tfi] = preg_replace("/
\<a href=\"\/forum\/viewtopic.php\?t=[0-9]{1,8}\"\>/msi","",$t5_file[$tfi]);
$t5_file[$tfi] = preg_replace("/\<\/a\>
\<\/td\>
\<td class=\"dl\">/msi","</td>
<td class=\"dl\">",$t5_file[$tfi]);
preg_match("/\<a href=\"(.*)\"\>[0-9]/msi", $t5_file[$tfi], $tf_url); // выбираем ссылку
$t6_file[$tfi] = preg_replace("/\<a href=\"\/forum\/download.php\?id=[0-9]{1,8}\">/msi","<td>",$t5_file[$tfi]);
$t7_file[$tfi] = preg_replace("/\<\/a\>/msi","</td><td><a href=http://tfile.ru".$tf_url[1].">.torrent</a></td>",$t6_file[$tfi]);
$ft_echo .= "<tr>".$t7_file[$tfi];
$ft_echo .= "<tr><td colspan=\"7\"><hr></td></tr>";
} // if
}
$ft_echo .= "</table>";
//echo strlen($ft_echo);
if (strlen($ft_echo)<=250) $content .= "<h2 align=\"center\">К сожалению торрент файлы не найдены.</h2>"; else $content .="<h2 align=\"center\">Скачать торрент $runame</h2>".$ft_echo."<br>";
?>
Данный код выкладываем на сервер отдельным файлом 'tfile.php'. В том месте где нам нужно получить блок с торрент ссыками вставляем:
echo $content;
Оставить комментарий
Комментарии
Надо использовать либо прокси
либо сразу записывать в БД