Универсальный парсер

Универсальный парсер 0.7.2

Virtuoz

Пользователь
Installation Level: easy
## Installation Time: 5 Minutes
## Files To Edit: 4
## ajax.php,
## posting.php,
## library/language/ru/main.php,
## styles/templates/default/posting.tpl
## Included Files: 8
## library/ajax/parser.php
## library/includes/functions_parser.php
## styles/templates/default/images/p/nnm-club.ico
## styles/templates/default/images/p/rutor.ico
## styles/templates/default/images/p/rutracker.ico
## admin/admin_pars_cfg.php
## styles/templates/admin/admin_pars_cfg.tpl
## data/cookies/.htaccess

Я простите не понимаю, в новинку для меня это все.
Идем на любой софт портал или что то подобное, качаем notepad++ открываем файлы и редактируем.
 

ДядяМища

Пользователь
Все сделал по инструкции. Ошибок вроде нет, но торрент файл не добавляет. Паршу с rutracker.org и rutor.info все парсится кроме торрента.
Посмотреть вложение 4836 Посмотреть вложение 4837 Посмотреть вложение 4838


if ($gettorrent === 1) {
preg_match ("#t=(\d+)#si", $url, $r_torrent);
$torrent_url = "

Please Login or Register to view hidden text.

".$r_torrent[1];
preg_match("#(.*)library.includes#i", __FILE__, $pocket);
$cookie_file = $pocket[1]."data".DIRECTORY_SEPARATOR."cookies".DIRECTORY_SEPARATOR."rutracker.txt";
if ( (!file_exists($cookie_file)) || (time() - filemtime($cookie_file) > 86400)) {
$options_cookie = array(CURLOPT_URL => '

Please Login or Register to view hidden text.

',
CURLOPT_REFERER => $url,
CURLOPT_COOKIEFILE => $cookie_file,
CURLOPT_COOKIEJAR => $cookie_file,
CURLOPT_POSTFIELDS => 'redirect=index.php&login_username=' . $bb_cfg['parsmod_rutracker_login'] .'&login_password=' .
$bb_cfg['parsmod_rutracker_password'] . '&ses_short=1&login=Вход');
make_cookie($options_cookie);
}
 

ExPlayer

Пользователь
Доброго времени суток!
Версия TP: 2.1.4 (да, старая. да, не поддерживается.)
VPS располагается в Нидерландах (Inferno Solutions).
Сегодня вечером перестал парсится рутор (снова стало появляться сообщение "Введите текст сообщения", до сегодняшнего вечера парсер работал нормально).
Я уж подумал, что придется снова искать хостинг (в прошлый раз помог только переезд на новый хостинг :( ).
Но, после обращения в тех. поддержку хостинга оказалось, что у рутора стоит редирект на домен free-rutor.org.
Я это всё к тому, что если у кого-то возникнет похожая проблема, то попробуйте добавить free-rutor.org в functions_parser.php и parser.php.
Лично у меня так:
functions_parser.php:
PHP:
function parse_release($url,$p_source, $gettorrent)
{
    switch ($p_source){
        case "free-rutor": $p_release = parse_freerutor($url, $gettorrent);break;
    }
    return $p_release;
}

function parse_freerutor($url, $gettorrent)
{
    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_USERAGENT, 'IE20');
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, '1');
    $copy_page = curl_exec($ch);
    curl_close($ch);
    
    preg_match("#\<table id=\"details\"\>.*?<br />(.*?)\<tr\>\<td class=\"header\"\>#si", $copy_page, $copy_post);
    preg_match ("#<title>free-rutor.org :: (.*?)</title>#si", $copy_page, $r_title);

    $copy_release = @$copy_post[1];

    $text = preg_replace("#<a href=\"(.*?)\".*?>(.*?)</a>#si", "[url=\\1]\\2[/url]", $copy_release);
    $text = preg_replace("#<img src=\"(\S*?)\" style=\"float:(.*?);\" />#si", "[img=\\2]\\1[/img]", $text);
    $text = preg_replace("#<img src=\"(\S*?)\" />#si", "[img]\\1[/img]", $text);
    $text = preg_replace("#<hr />#si", "[hr]", $text);

    //hide
    while (preg_match("#<div class=\"hidewrap\">.*?this\)\)\">(.*?)</div>.*?<textarea class=\"hidearea\">(.*?)</textarea></div>#sie", $text, $match))
    {
        $replace = "[spoiler=\"".strip_tags($match[1])."\"]".$match[2]."[/spoiler]";
        $search = "|".preg_quote($match[0])."|si";
        $text = preg_replace($search, $replace, $text);
    }       
    //u i b center
    while (preg_match("#<(.*?)>(.*?)<\/\\1>#sie", $text, $match))
    {
        switch ($match[1])
        {
          case "center": $replace = "[align=".$match[1]."]".$match[2]."[/align]"; break;
          default: $replace = "[".$match[1]."]".$match[2]."[/".$match[1]."]";break;
        }
        $search = "|".preg_quote($match[0])."|si";
        $text = preg_replace($search, $replace, $text);
    }
    
    //size
    while (preg_match("#<font size=\"(\d+)\">(.*?)<\/font>#sie", $text, $match))
    {
        $replace = "[size=".(intval($match[1])+10)."]".$match[2]."[/size]";
        $search = "|".preg_quote($match[0])."|si";
        $text = preg_replace($search, $replace, $text);
    }
    //color font
    while (preg_match("#<(?:span) (?:(?:style=\"((?:[^>]*?)):((?:[^>]*?));\">))((?:(?!<(?:span) ).)*?)</(?:span)>#sie", $text, $match))
    {
        switch ($match[1]){
          case "font-family": $replace = "[font=\"".$match[2]."\"]".$match[3]."[/font]";break;
          case "color":    $replace = "[".$match[1]."=".$match[2]."]".$match[3]."[/".$match[1]."]";break;
        }
        $search = "|".preg_quote($match[0])."|si";
        $text = preg_replace($search, $replace, $text);
        
    }   

    if ($gettorrent === 1) {
        preg_match ("#<a href=\"(http:\/\/d\.free-rutor\.org\/download\/\d+)\"#si", $copy_page, $r_torrent);
        $torrent_url = @$r_torrent[1];
        $options_torrent = array(CURLOPT_URL => $torrent_url);
        $torrent_hidden = get_torrent($options_torrent);
    }else {
        $torrent_hidden = '';
    }

    $pars_data = array("title" => @$r_title[1], "bbcode" => strip_tags($text), "hidden" => $torrent_hidden);
    return $pars_data;

}

parsep.php:
PHP:
<?php

if (!defined('IN_AJAX')) die(basename(__FILE__));

global $bb_cfg, $userdata, $lang, $bnc_error;

if ($bb_cfg['parsmod_disable']) $this->ajax_die($lang['PARS_NO_WORK']);
if (empty($this->request['pars_url']))     $this->ajax_die($lang['PARS_NO_URL']);

$gettorrent = isset($this->request['gettorrent'])? intval($this->request['gettorrent']):0;
$tor_id = isset($this->request['tor_id'])? intval($this->request['tor_id']):'';
$pars_url = $this->request['pars_url'];
$allowed_sources = array("free-rutor");

preg_match("#.*(?:\.|\/)(.*?)\.\w+\/#si", $pars_url, $s_domain);
if (!in_array($s_domain[1], $allowed_sources)) $this->ajax_die($lang['PARS_NOT_ALLOWED_SOURCES']);

if ($tor_id)    delete_old_torrent($tor_id);

$p_data = parse_release($pars_url, $s_domain[1], $gettorrent);


$this->response['title'] = $p_data['title'];
$this->response['bbcode'] = $p_data['bbcode'];
$this->response['hid'] = $p_data['hidden'];
На данный момент работает. :)
 

Kirkus

Пользователь
Все парсит кроме торрента, не подскажете что не так в блоке

Код:
    if ($gettorrent === 1) {
      
       preg_match ("#<a href=\"(http:\/\/film-tor\.org\/download\/\d+)\"#si", $copy_page, $r_torrent);
        $torrent_url = @$r_torrent[1];
        $options_torrent = array(CURLOPT_URL => $torrent_url);
        $torrent_hidden = get_torrent($options_torrent);
    }else {
        $torrent_hidden = '';
    }

    $pars_data = array("title" => @$r_title[1], "bbcode" => strip_tags($text), "hidden" => $torrent_hidden);
    return $pars_data;
 

daemonz

Пользователь
R600 rus. Запара с аяксом. Может кто сможет, уже как надо отредактированный файл кинуть?
 

Вложения

  • Безымянный.png
    Безымянный.png
    60.9 KB · Просмотры: 57

Kirkus

Пользователь
@Kirkus
парсер не заточен под домен film-tor[.]org

Это конечно прекрасный ответ! Спасибо. Но почему-то у меня ВСЁ парсит кроме торрент файла? Торрент 0 байт. Вероятно, ошибка в строчке

Код:
  preg_match ("#<a href=\"(http:\/\/film-tor\.org\/download\/\d+)\"#si", $copy_page, $r_torrent);
 
Сверху