Справочник функций

Ваш аккаунт

Логин:
Пароль:
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:
Убрать блок ВКонтакте навсегда

Последние темы форума

Показать новые сообщения »

Почтовая рассылка



Подписчиков: 19249
Последний выпуск: 12.01.2012

Php парсер ссылок на торрент

Автор : Акшонин Виталий
E-Mail: akshonin-собака-майл-ру
16 ноября 2011 года

Эта небольшая статья будет полезна вебмастерам, которые на своих интернет ресурсах предлагают фильмы, музыку, игры, софт или другой полезный контент который часто можно найти в торрент раздачах.

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

Чтобы клиент (посетитель) остался довольным вашим ресурсом необходимо следить за живучестью ссылок или периодически обновлять ссылки на дееспособные. Работа эта очень кропотливая и нудная, но её вполне можно автоматизировать. Пусть, как говорят, работают механизмы.

Вечно живую ссылки на медиа файл мы будем брать на лету (в реальном времени) с бесплатного торрент трекера tfile.ru. Помимо ссылки на файл также подтянем название файла, размер файла, количество сидов и пиров (отдающих и принимающих).

Полный php код приведен ниже, а сейчас разберем механизм работы парсера.

Запрос к торрнет трекеру выглядит примерно так:

Код:
http://tfile.ru/forum/ssearch.php?q=__ИМЯ__&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];

Нам необходимо отсеять ненужные ссылки и ненужный текст из получаной таблицы. Опишу кратко проделанные действия:

  • разделем текст на строки через <tr> и каждую строку через цикл (for) обрабатываем шаблонно;
  • для моего сайта я оставил только строки содержащие текст: мультфильм, аниме, фильм;
  • произвел прочие преобразования удалив ненужные теги и часть ненужного текста.

Результат получился следующим:

 

На моём сайте теперь всегда стоят живые ссылки с торрент трекера. Пример страницы на данный момент: http://kharitoshka.ru/video.php?id=20.

Полный текст кода смотрите ниже:

 

Код:
<?php

$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'. В том месте где нам нужно получить блок с торрент ссыками вставляем:

Код:
include 'tfile.php';
echo $content;

Оставить комментарий

Оставлять комментарии могут только зарегистрированные пользователи.

Если вы не являетесь зарегистрированным пользователем, то вам необходимо зарегистрироваться. Регистрация бесплатна. Если вы уже зарегистрированы на CodeNet, то вам необходимо ввести логин и пароль в верхней (Alt-U) части страницы.

Комментарии

1. dead_star / 24 ноября 2011, 17:41:22
Мне нравитсяМне не нравится

и конечно же никакого ооп и мвк

1.1. mike / 24 ноября 2011, 18:13:31
Мне нравитсяМне не нравится

А зачем? Только потому что модно? В такой простой задаче это не нужно.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог