Магазин
Правила Ответы на вопросы Конфиденциальность
Магазин
Правила Ответы на вопросы Конфиденциальность
  • Быстрые действия Ярлыки
    Общие действия
    Связаться с администрацией
    • Бот

       

Моды в разработке

  • Список форумов
  • Форумы по phpBB 3.0
  • Мод трекера ppkBB3cker
  • Моды и стили для трекера
  • Моды в разработке

парсер с других трекеров

25 сообщений
  • 1
  • 2
  • 3
  • След.
Просмотры: 9195 • 
  • smollvrn Сообщение 10.11.2010
    принцип , пхп скрипту скармливаем ссылку на страницу раздачи , загружаем html код старницы в переменную , переменную передаем в яваскрипт , в яваскрипте извлекаем переменную , регулярным выражением удаляем яваскрипты из html кода страницы , т.к. трекеров будет много определяем тип трекера , регулярным выражением ищем вхождение названия трекера в определенном месте html кода , ( сделал лесенкой незнаю зачем , если нет то сравнение идет дальше), в сравнении две переменные , что ищем и где ищем , дальше для каждого трекера свои земены html кода на bbcode, регулярные выражения можно объеденять в группы , например разные трекеры на торрент пире можно объеденить в одну группу т.к. двиг один и одни и теже ббкоды , и т.п. для каждого трекера опеределяем ссылку на оригинальный источник , название темы , находим начало первого поста и удаляем все выше , находим конец первого поста и удаляем все ниже, что осталось меняем на bbcode , дальше проверка в цикле , т.к. очень много тегов начинается на <span и заканчивается на </span> или <div>...</div> нельзя точно определить какой из тегов закрылся ( регулярными выражениями) поэтому замена спана будет проходить если в до следующего закрывающегося спана не будет еще одного открывающегося , для дива тоже самое ... тоже можно объеденять в группы трекеры на одном двиге
    лирическое отступление....
    у меня установлен мод prime nest bbcodes , т.е. поддерживаются вложенные bbcodes как в торрентпире , в настройках мода можно посматреть как глубоко искать вложенные ббкоды , были созданы аналоги станадртных ббкодов но поодерживающе вложенность , nest bbcodes работает только для самостоятельно добавленных ббкодов, в очень длинных постах с большим количеством вложенных ббкодов были замечены проблемы , при замене части их на стандартные проблемы пропадали,
    поэтому ниже в скрипте проверяем если нет вложенных аналогичных ббкодов меняем ббкод на стандартный...
    результат работы выводится в текстареа
    в теории можно научить заполнять доп поля , поля с постерами скриншотами ( еслиб трекер умел загружать их по урлам) , загружать торрент файлы

    проблемы : так и не смог найти способ передать переменную из пхп в явскрипт челевеским образом , сейчас работает так , в html коде все символы открытия и закрытия тегов меняем соответственно < > на { }
    потом вставлем содержимое этой переменной в текстариа , и яваскриптом берем из текстареа и присваеваем переменной ,
    проблема в том что , переменная без преобразования содержит много html мусора и обозначить как то конец переменной в php не представляется возможным , а чтоб нормально отображалось в текстареа убираем html теги заменив начало и конец тега...

    в поле ввода ссылки не проверяется что там вводят , нужно проверять чтоб там была ссылка на релиз а не понятно что
    интеграция в трекер как в моде Парсер кинопоиска
      3.Залить файлы в корневую директорию.
    4.Открываем "корневая директория\styles\ваш шаблон\template\overall_header.html"
    Перед

    Код: Выделить всё

    </head>
    вставить

    Код: Выделить всё

    <script src="{PPKBB3CKER_ADDONS}js/tracker_parser.js" type="text/javascript" ></script>
    5.Открываем "корневая директория\styles\ваш шаблон\template\posting_tracker_layout.html"
    Ищем на 72 строчке(может быть другая строчка)

    Код: Выделить всё

    {TRACKER_ANNOUNCE_URL}
    Рядом вставляем

    Код: Выделить всё

    <input type="button" onclick="javascripttrackerparser();" value="Parser" />
    ссылка для скачивания файлов http://www.smollvrn.ru/root.7z

    сейчас добавлены трекеры , рутрекер.орг тфайл.ру рутор.орг фри-торрентс.орг рупиер.орг порнолаб.нет

    скрипт пилится , ббкоды нужно переделывать под свой трекер
    версия 0.0.2

    создаем новую тему , в поле заголовка темы вставляем ссылку с релизом с другого трекера , нажимаем обновить

    скрипт будет работать в одном окне с трекером , что позволит ему заполнять поля
    независим от старого мода , т.е. могут работать оба , установка :
    редактируем posting.php в районе 730 строки , меняем код на следующий

    Код: Выделить всё

    if ($submit || $preview || $refresh)
    {
    	if($forum_data['astracker'] && ($mode == 'post' || ($mode == 'edit' && $post_id == $post_data['topic_first_post_id'])))
    	{
    		if($array_addfields)
    		{
    			include_once($phpbb_root_path.'tracker/include/posting_add1.'.$phpEx);
    		}
    	}
    	
    	$post_data['topic_cur_post_id']	= request_var('topic_cur_post_id', 0);
    	$post_data['post_subject']		= utf8_normalize_nfc(request_var('subject', '', true));
    	$message_parser->message = utf8_normalize_nfc(request_var('message', '', true));
    	
    	if ($preview || $refresh)
    {
    //тут нужно проверить что в заголовке сообщения нужная нам ссылка , если так то по ссылке загрузиться в переменную страница, и произодут необходимые операции для пхп
    //проверять на длинну не нужно , т.к. на том же руторе длина хрен знает какая может быть.... 
    //тут нужно проверить что в теме ссылка нужно нам вида 
    if(preg_match("/http:\/\/rutracker\.org\/forum\/viewtopic\.php\?t=[0-9]{1,10}|http:\/\/pornolab\.net\/forum\/viewtopic\.php\?t=[0-9]{1,10}|http:\/\/www.rutor.org\/torrent\/[0-9]{1,10}\/.?|http:\/\/free-torrents.org\/forum\/viewtopic\.php\?p=[0-9]{1,10}|http:\/\/rupier.com\/forum\/viewtopic\.php\?p=[0-9]{1,10}|http:\/\/tfile.ru\/forum\/viewtopic\.php\?p=[0-9]{1,10}/", (request_var('subject', '', true)))) 
    {
    
     
    //итак если в названии темы правельная ссылка , тогда загружаем страницу в переменную
    $fe_text=request_var('subject', '', true); 
    function get_web_page( $url )
    {
    $uagent = "Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8";
    $ch = curl_init( $url );
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
    curl_setopt($ch, CURLOPT_ENCODING, "");
    curl_setopt($ch, CURLOPT_USERAGENT, $uagent);
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 1200);
    curl_setopt($ch, CURLOPT_TIMEOUT, 1200);
    curl_setopt($ch, CURLOPT_MAXREDIRS, 30);
    $content = curl_exec( $ch );
    curl_close( $ch );
    $header = $content;
    return $header;
    }
    $bbcodetext=get_web_page("$fe_text");
    function jsAddSlashes($str) 
    {
    $pattern = array(
    "/</" , "/>/" 
    );
    $replace = array(
    "{" , "}" 
    );
    return preg_replace($pattern, $replace, $str);
    }
    $bbcodetext=jsAddSlashes($bbcodetext);
    //## перекодировка win1251 -> unicode (UTF-8) http://zhilinsky.ru/2007/08/10/php-unicode/
    //## Тоже самое что и выше, только нет экономии места... 
    
    function win_utf8 ($in_text){ 
    $output=""; 
    $other[1025]="Ё"; 
    $other[1105]="ё"; 
    $other[1028]="Є"; 
    $other[1108]="є"; 
    $other[1030]="I"; 
    $other[1110]="i"; 
    $other[1031]="Ї"; 
    $other[1111]="ї"; 
    
    for ($i=0; $i<strlen($in_text); $i++){ 
    if (ord($in_text{$i})>191){ 
      $output.="&#".(ord($in_text{$i})+848).";"; 
    } else { 
      if (array_search($in_text{$i}, $other)===false){ 
       $output.=$in_text{$i}; 
      } else { 
       $output.="&#".array_search($in_text{$i}, $other).";"; 
      } 
    } 
    } 
    return $output; 
    } 
    //ниже будет происходить перекодировка в утф8 если кодировка страницы 1251
    if(preg_match("/charset=windows/", ($bbcodetext))) {
    //$bbcodetext=iconv($bbcodetext);
    $bbcodetext=iconv("windows-1251", "utf-8",$bbcodetext);
    
    }
    
    //итак в переменной bbcodetext содержитася нужный нам код страницы
    //теперь произведем подмену в родной переменной ppk3bbcker 
    $message_parser->message = utf8_normalize_nfc($bbcodetext);
    //$message_parser->message = $bbcodetext;
    } 
    
     
    
    
    }
    	
    
    	//PPK START TD
    создаем файл .js допустим new_tracker_parser.js кладем в \tracker\addons\js

    со следующим кодом

    Код: Выделить всё

    //нужно задать условие при котором бы выполнялся скрипт, по идее скрипт должен выполнятся когда страница польностью загружена ,  и если в  заголовке темы присутствует нужная ссылка, будем выполнять скрипт не когда страница загрузится , а прочто разместим его в самом низу
    //ниже нужно проверить что поле сабжект содержит подходящую нам ссылку
    // и здесь и пхп помимо ссылки на релиз нужно отсечь все лишнее, сделать позже, прег реплайсом
    
     var linker=document.getElementById('subject').value;
     
    
    
    if (/http:\/\/rutracker\.org\/forum\/viewtopic\.php\?t=[0-9]{1,10}|http:\/\/pornolab\.net\/forum\/viewtopic\.php\?t=[0-9]{1,10}|http:\/\/www\.rutor\.org\/torrent\/[0-9]{1,10}\/.?|http:\/\/free-torrents.org\/forum\/viewtopic\.php\?p=[0-9]{1,10}|http:\/\/rupier.com\/forum\/viewtopic\.php\?p=[0-9]{1,10}|http:\/\/tfile.ru\/forum\/viewtopic\.php\?p=[0-9]{1,10}/.test(linker))
    {
    
    var codetype;
    var rupier1 = /rupier.com/i;
     var rutracker1 = /rutracker.org/i;
     var tfile1 = /tfile.ru/i;
     var freetorrents1 = /free-torrents.org/i;
     var pornolab1 = /PornoLab.Net/i;
     var rutor1 = /rutor.org/i;
     var bbcodetext2 = document.getElementById('message').value;
    // var bbcodetext2 = document.postform.message.value;
    bbcodetext2 = bbcodetext2.replace(/\{script(?:[\s\S]*?)\/script\}/gim, "");
    //ниже уберу wbr потому что если делать внизу то в названии темы не уберется
    bbcodetext2 = bbcodetext2.replace(/\{wbr\}/img, "");
    var tfile2 =  bbcodetext2.replace(/([\s\S]*?)\{link/im, "");
    var tfile2 =  tfile2.replace(/\}([\s\S]*)/im, "");
    var rutracker2 =  bbcodetext2.replace(/([\s\S]*?)\{title\}/im, "");
    var rutracker2 =  rutracker2.replace(/\{\/title\}([\s\S]*)/im, "");
    var freetorrents2 = bbcodetext2.replace(/([\s\S]*?)\{title\}/im, "");
    var freetorrents2 = freetorrents2.replace(/\{\/title\}([\s\S]*)/im, "");
    var rupier2 =  bbcodetext2.replace(/([\s\S]*?)\{title\}/im, "");
    var rupier2 =  rupier2.replace(/\{\/title\}([\s\S]*)/im, "");
    var rutor2 =  bbcodetext2.replace(/([\s\S]*?)\{title\}/im, "");
    var rutor2 =  rutor2.replace(/\{\/title\}([\s\S]*)/im, "");
    var pornolab2 = bbcodetext2.replace(/([\s\S]*?)\{title\}/im, "");
    var pornolab2 = pornolab2.replace(/\{\/title\}([\s\S]*)/im, "");
    if (rupier1.test(rupier2)) 
     {
      codetype = 'torrent71'
      alert(rupier2)
     }
    else {
    			if (rutracker1.test(rutracker2))
    				{
    					codetype = 'rutracker';
    					
    		         }
    			else 	{                                                  
    							if (rutor1.test(rutor2))
    									{
    										codetype = 'rutor';
    										
    									}
    								else 	{
    												if (freetorrents1.test(freetorrents2))
    															{
    																	codetype = 'free-torrents';
    																	
    															}
    														else 	{
    																			if (pornolab1.test(pornolab2))
    																					{
    																								codetype = 'pornolab';
    																								alert(pornolab2)
    																					}
    																				else 		{
    																									if (tfile1.test(tfile2))
    																											{
    																													codetype = 'tfile';
    																													
    																											}
    																										else 		{ 
    																															alert("тип трекера не определен , установлен тип rutracker");
    																															codetype = 'rutracker';
    																													}
    																							}
    																}
    										}
    					}
    	}
    	
    	if (codetype == "rutracker")
      {
       topicname =  bbcodetext2.replace(/\{!DOCTYPE(?:[\s\S]*?)\{h1 class="maintitle"\}\{a href=".(?:[\s\S]*?)"\}([\s\S]*?)\{\/a\}\{\/h1\}(?:[\s\S]*?)post_body(?:[\s\S]*)/im, "$1");
      bbcodetext2 = bbcodetext2.replace(/\{!DOCTYPE(?:[\s\S]*?)\{h1 class="maintitle"\}\{a href=".([\s\S]*?)"\}([\s\S]*?)\{\/a\}\{\/h1\}(?:[\s\S]*?)post_body(?:[\s\S]*?)\}/im, "[sizer=16][colored=red]Ссылка на оригинальный источник:[\/colored][urled]http:\/\/rutracker.org\/forum$1[\/urled][\/sizer]\r\r");
       }  
      if (codetype == "pornolab")
      {
      topicname = bbcodetext2.replace(/\{!DOCTYPE(?:[\s\S]*?)\{h1 class="maintitle"\}\{a href=".(?:[\s\S]*?)"\}([\s\S]*?)\{\/a\}\{\/h1\}(?:[\s\S]*?)post_body(?:[\s\S]*)/im, "$1");
      bbcodetext2 = bbcodetext2.replace(/\{!DOCTYPE(?:[\s\S]*?)\{h1 class="maintitle"\}\{a href=".([\s\S]*?)"\}([\s\S]*?)\{\/a\}\{\/h1\}(?:[\s\S]*?)post_body(?:[\s\S]*?)\}/im, "[sizer=16][colored=red]Ссылка на оригинальный источник:[\/colored][urled]http:\/\/pornolab.net\/forum$1[\/urled][\/sizer]\r\r");
       }  
     
      if (codetype == "free-torrents")
      {
       topicname = bbcodetext2.replace(/\{!DOCTYPE(?:[\s\S]*?)\{h1 class="maintitle"\}\{a href=".(?:[\s\S]*?)"\}Скачать бесплатно торрент([\s\S]*?)\{\/a\}\{\/h1\}(?:[\s\S]*?)post_body(?:[\s\S]*)\}/im, "$1");
       bbcodetext2 = bbcodetext2.replace(/\{!DOCTYPE(?:[\s\S]*?)\{h1 class="maintitle"\}\{a href=".([\s\S]*?)"\}([\s\S]*?)\{\/a\}\{\/h1\}(?:[\s\S]*?)post_body(?:[\s\S]*?)\}/im, "[sizer=16][colored=red]Ссылка на оригинальный источник:[\/colored][urled]http:\/\/free-torrents.org\/forum\/$1[\/urled][\/sizer]\r\r");
       bbcodetext2 = bbcodetext2.replace(/\{table width="100%"\}([\s\S]*)/im, "");
       bbcodetext2 = bbcodetext2.replace(/\{div\}\{\/div\}/img, "\r");
       bbcodetext2 = bbcodetext2.replace(/\{!--\/spoiler-wrap--\}/img, "");
       bbcodetext2 = bbcodetext2.replace(/\{!--\/spoiler-body--\}/img, "");
       bbcodetext2 = bbcodetext2.replace(/\{br \/\}/img, "\r");
       
       bbcodetext2 = bbcodetext2.replace(/\{hr(?:[\s\S]*?)}/img, "[hr][/hr]");
       bbcodetext2 = bbcodetext2.replace(/\{embed src="http:\/\/www.youtube.com\/v\/([\s\S]*?)&(?:[\s\S]*?)}{\/embed}/img, "[youtube]http:\/\/www.youtube.com\/watch\?v\=$1[\/youtube]");
      } 
      if (codetype == "torrent71")
      {
      topicname = bbcodetext2.replace(/\{!DOCTYPE(?:[\s\S]*?)\{h1 class="maintitle"\}\{a href="(?:[\s\S]*?)"\}([\s\S]*?)\{\/a\}\{\/h1\}(?:[\s\S]*?)post_body(?:[\s\S]*)/im, "$1");
      bbcodetext2 = bbcodetext2.replace(/\{!DOCTYPE(?:[\s\S]*?)\{h1 class="maintitle"\}\{a href="([\s\S]*?)"\}([\s\S]*?)\{\/a\}\{\/h1\}(?:[\s\S]*?)post_body(?:[\s\S]*?)\}/im, "[sizer=16][colored=red]Ссылка на оригинальный источник:[\/colored][urled]http:\/\/rupier.com\/forum\/$1[\/urled][\/sizer]\r\r");
      bbcodetext2 = bbcodetext2.replace(/\{div\}([^\{]*?)\{fieldset class="attach"\}([\s\S]*)\{\/html\}/im, "");
      bbcodetext2 = bbcodetext2.replace(/\{div\}([\s\S]*?)\{\/div\}/img, "\n");
      bbcodetext2 = bbcodetext2.replace(/\{div class="sp-wrap"\}/img, "");
      bbcodetext2 = bbcodetext2.replace(/\{div class="sp-body" title="([\s\S]*?)"\}/img, "[spoiler=\"$1\"]");
      bbcodetext2 = bbcodetext2.replace(/\{\/div\}\{!--\/spoiler-body--\}\{\/div\}\{!--\/spoiler-wrap--\}/img, "[\/spoiler]");
      bbcodetext2 = bbcodetext2.replace(/\{br \/\}\{br \/\}/img, "\n");
      }  
      if (codetype == "rutracker" || codetype == "pornolab" || codetype == "free-torrents" || codetype == "torrent71")
      { 
      bbcodetext2 = bbcodetext2.replace(/\{div class="clear"\}([\s\S]*)/im, "");
      bbcodetext2 = bbcodetext2.replace(/\{h3 class="sp-title"\}([\s\S]*?)\{\/h3\}/img, "")
      bbcodetext2 = bbcodetext2.replace(/\{a name="1"\}\{\/a\}/img, "");
      bbcodetext2 = bbcodetext2.replace(/\{span class="post-hr"\}-\{\/span\}/img, "[hr][\/hr]");
      poster = bbcodetext2.replace(/{var class="postImg postImgAligned img-right" title="([\s\S]*?)"}(?:[\s\S]*)/im, "$1");
       bbcodetext2 = bbcodetext2.replace(/{var class="postImg postImgAligned img-right" title="([\s\S]*?)"}(?:[\s\S]*?){\/var}/img, "[img_r]$1[\/img_r]");
      }
     if (codetype == "tfile")
      {
      topicname = bbcodetext2.replace(/(?:[\s\S]*?)\{h1\}\{a href="(?:[\s\S]*?)"\}([\s\S]*?)\{\/a\}\{\/h1\}(?:[\s\S]*?)\{div class="pT"\}(?:[\s\S]*)/im, "$1");
      bbcodetext2 = bbcodetext2.replace(/([\s\S]*?)\{h1\}\{a href="([\s\S]*?)"\}([\s\S]*?)\{\/a\}\{\/h1\}([\s\S]*?)\{div class="pT"\}/im, "[sizer=16][colored=red]Ссылка на оригинальный источник:[\/colored][urled]http:\/\/tfile.ru$2[\/urled][\/sizer]\r\r");
      bbcodetext2 = bbcodetext2.replace(/\{\/div\}([^v]*?)\{table\}([\s\S]*)\{\/html\}/im, "");
      bbcodetext2 = bbcodetext2.replace(/\{\/div\}([^v]*?)\{table\}([\s\S]*)\{\/html\}/im, "");
      bbcodetext2 = bbcodetext2.replace(/\{div id="MarketGid([\s\S]*)/im, "");
      bbcodetext2 = bbcodetext2.replace(/\{span id="cpx1"\}([\s\S]*)/im, "");
      bbcodetext2 = bbcodetext2.replace(/\{td\}/img, "");
      bbcodetext2 = bbcodetext2.replace(/\{\/td\}/img, "");
      bbcodetext2 = bbcodetext2.replace(/\{\/tr\}/img, "");
      bbcodetext2 = bbcodetext2.replace(/\{tr\}/img, "");
      bbcodetext2 = bbcodetext2.replace(/\{h2 style="color:red;margin:0;font-weight:normal"\}([\s\S]*?)\{\/h2\}/img, "[title]$1[\/title]");
      }
     
     if (codetype == "rutor")
      {
      topicname = bbcodetext2.replace(/\{html\}(?:[\s\S]*?)\{h1\}([\s\S]*?)\{\/h1\}(?:[\s\S]*)/im, "$1");
      //topicname = bbcodetext2.replace(/\{html\}(?:[\s\S]*?)\{h1\}([\s\S]*?)\{\/h1\}(?:[\s\S]*?)\{a href="\/download\/(?:[\s\S]*?)"\}\{img src="http:\/\/s.rutor.org\/t\/down.png"\}(?:[\s\S]*?)\{tr\}\{td style="vertical-align:top;"\}\{\/td\}\{td\}/im, "$1");
      
      linkdownload = bbcodetext2.replace(/(?:[\s\S]*?)\{a href="\/mail\.php\?send_torrent=([0-9]{1,10})"\}(?:[\s\S]*)/im, "http:\/\/www\.rutor.org\/download\/$1");
      bbcodetext2 = bbcodetext2.replace(/\{html\}([\s\S]*?)\{h1\}([\s\S]*?)\{\/h1\}([\s\S]*?)\{a href="\/download\/([\s\S]*?)"\}\{img src="http:\/\/s.rutor.org\/t\/down.png"\}([\s\S]*?)\{tr\}\{td style="vertical-align:top;"\}\{\/td\}\{td\}/im, "[sizer=16][colored=red]Ссылка на оригинальный источник:[\/colored][urled]http:\/\/rutor.org\/torrent\/$4\/[\/urled][\/sizer]\r\r");
      bbcodetext2 = bbcodetext2.replace(/\{\/span\}\{\/td\}\{td\}(?:[\s\S]*?)\{div id="displayfiles([\s\S]*)/im, "");
      bbcodetext2 = bbcodetext2.replace(/\{center\}/img, "[align=center]");
      bbcodetext2 = bbcodetext2.replace(/\{\/center\}/img, "[\/align]");
      bbcodetext2 = bbcodetext2.replace(/\{tr\}\{td class="header"\}Залил([\s\S]*?)\{\/tr\}/img, "\{tr\}\{td class=\"header\"\}Залил$1\{\/tr\}\{/a\}");
      bbcodetext2 = bbcodetext2.replace(/\{tr\}\{td class='header'\}Раздают(?:([\s\S]*?))\{\/tr\}/img, "");
      bbcodetext2 = bbcodetext2.replace(/\{tr\}\{td class='header'\}Качают(?:([\s\S]*?))\{\/tr\}/img, "");
      bbcodetext2 = bbcodetext2.replace(/\{tr\}\{td class='header'\}Сидер замечен(?:([\s\S]*?))\{\/tr\}/img, "");
      bbcodetext2 = bbcodetext2.replace(/\{td class="header"\}([\s\S]*?)\{\/td\}/img, "[b]$1 [\/b]");
      bbcodetext2 = bbcodetext2.replace(/\{td class='header'\}([\s\S]*?)\{\/td\}/img, "[b]$1 [\/b]");
      bbcodetext2 = bbcodetext2.replace(/\{td class="header" nowrap="nowrap"\}Добавить в([\s\S]*?)'displayfiles'\)\;\" class="button"\}/img, "");
      bbcodetext2 = bbcodetext2.replace(/\{font size="([^\}]*?)"\}([\s\S]*?)\{\/font\}/img, "[sized=$1]$2[\/sized]");
      bbcodetext2 = bbcodetext2.replace(/\{a href="\/([\s\S]*?)" target="_blank"\}([\s\S]*?)\{\/a\}/img, "[urled=http:\/\/rutor.org\/$1]$2[/urled]");
      bbcodetext2 = bbcodetext2.replace(/\{b\}\{a href="\/([\s\S]*?)" target="_blank"\}([\s\S]*?)\{\/b\}/img, "[urled=http:\/\/rutor.org\/$1]$2[/urled]");
      bbcodetext2 = bbcodetext2.replace(/\{a href="([\s\S]*?)"([\s\S]*?)\}([\s\S]*?)\{\/a\}/img, "[urled=$1]$3[\/urled]");
      bbcodetext2 = bbcodetext2.replace(/\{a href="([\s\S]*?)"([\s\S]*?)\}([\s\S]*?)\{\/a\}/img, "[urled=$1]$3[\/urled]");
      bbcodetext2 = bbcodetext2.replace(/\{td\}/img, "");
      bbcodetext2 = bbcodetext2.replace(/\{\/td\}/img, "");
      bbcodetext2 = bbcodetext2.replace(/\{\/tr\}/img, "");
      bbcodetext2 = bbcodetext2.replace(/\{tr\}/img, "");
      
      }
    	bbcodetext2 = bbcodetext2.replace(/\{object(?:[\s\S]*?)value="http:\/\/www.youtube.com\/v\/([\s\S]*?)"(?:[\s\S]*?)\{\/object\}/img, "[youtube]http:\/\/www.youtube.com\/watch\?v\=$1[\/youtube]");
    	bbcodetext2 = bbcodetext2.replace(/\{img src="([\s\S]*?)"\/\}/img, "[img]$1[\/img]");
    	
    	bbcodetext2 = bbcodetext2.replace(/\{pre class="post-pre"\}([\s\S]*?)\{\/pre\}/img, "[pre][\/pre]");
    	bbcodetext2 = bbcodetext2.replace(/\{var class="postImg" title="([\s\S]*?)"\}&#10;\{\/var\}/img, "[imged]$1\[\/imged]");
    	bbcodetext2 = bbcodetext2.replace(/\{var class="postImg" title="([\s\S]*?)"\}(?:[\s\S]*?)\{\/var\}/img, "[imged]$1\[\/imged]");
    	bbcodetext2 = bbcodetext2.replace(/\{var class="postImg postImgAligned img-(.)([\s\S]*?)" title="([\s\S]*?)"\}&#10;\{\/var\}/img, "[img_$1]$3\[\/img_$1]");
    	bbcodetext2 = bbcodetext2.replace(/\{span class="post-br"\}\{br \/\}\{\/span\}/img, "\r"); 
    	bbcodetext2 = bbcodetext2.replace(/\{br([\s\S]*?)\}/img, "");
    	bbcodetext2 = bbcodetext2.replace(/\{ul\}/img, "[list]");
    	bbcodetext2 = bbcodetext2.replace(/\{\/ul\}/img, "[\/list]");
    	bbcodetext2 = bbcodetext2.replace(/\{ul([\s\S]*?)\}/img, "[list]"); 
    	bbcodetext2 = bbcodetext2.replace(/\{li\}/img, "[*]");
    	bbcodetext2 = bbcodetext2.replace(/\{\/li\}/img, "");
    	bbcodetext2 = bbcodetext2.replace(/\{li style="list-style: none"\}/img, "[*]");
    	bbcodetext2 = bbcodetext2.replace(/\{b class="field"\}/img, "[b]");
    	bbcodetext2 = bbcodetext2.replace(/\{b\}/img, "[b]");
    	bbcodetext2 = bbcodetext2.replace(/\{\/b\}/img, "[\/b]");
    	bbcodetext2 = bbcodetext2.replace(/\{u\}/img, "[u]");
    	bbcodetext2 = bbcodetext2.replace(/\{\/u\}/img, "[\/u]");
    	bbcodetext2 = bbcodetext2.replace(/\{i\}/img, "[i]");
    	bbcodetext2 = bbcodetext2.replace(/\{\/i\}/img, "[\/i]");
    	bbcodetext2 = bbcodetext2.replace(/&#(\d+);/g, function (m, n) { return String.fromCharCode(n); })
    	bbcodetext2 = bbcodetext2.replace(/\{img([\s\S]*?)src="([\s\S]*?)"([\s\S]*?)\}/img, "[img]$2\[\/img]");
    	bbcodetext2 = bbcodetext2.replace(/\{a href="([^\{]*?)"([^\{]*?)\}([\s\S]*?)\{\/a\}/img, "[urled=$1]$3[\/urled]");
    	
    
      for (var i = 0; i<=30 ; i++) 
     {
    if (codetype == "rutracker" || codetype == "pornolab" || codetype == "torrent71" || codetype == "free-torrents"  )
      { 
    bbcodetext2 = bbcodetext2.replace(/\{span class="post-b"\}((?:(?!\{span)[\s\S])*?)\{\/span\}/igm, "[bold]$1\[\/bold]");
    bbcodetext2 = bbcodetext2.replace(/\{span class="post-u"\}((?:(?!\{span)[\s\S])*?)\{\/span\}/igm, "[underline]$1\[\/underline]");
    bbcodetext2 =bbcodetext2.replace(/\{span class="post-i"\}((?:(?!\{span)[\s\S])*?)\{\/span\}/igm, "[italic]$1\[\/italic]");
    bbcodetext2 = bbcodetext2.replace(/\{span style="font-size: ((?:(?!\{span)[\s\S])*?)px; line-height: normal;"\}((?:(?!\{span)[\s\S])*?)\{\/span\}/igm, "[sizer=$1]$2\[\/sizer]");
    bbcodetext2 = bbcodetext2.replace(/\{span style="font-family: '((?:(?!\{span)[\s\S])*?)';"\}((?:(?!\{span)[\s\S])*?)\{\/span\}/igm, "[font=$1]$2\[\/font]");
    bbcodetext2 = bbcodetext2.replace(/\{span style="font-family: ((?:(?!\{span)[\s\S])*?);"\}((?:(?!\{span)[\s\S])*?)\{\/span\}/igm, "[font=$1]$2\[\/font]");
    bbcodetext2 = bbcodetext2.replace(/\{span class="post-align" style="text-align: ((?:(?!\{span)[\s\S])*?);"\}((?:(?!\{span)[\s\S])*?)\{\/span\}/igm, "[align=$1]$2\[\/align]" );
    bbcodetext2 = bbcodetext2.replace(/\{span style="color: ((?:(?!\{span)[\s\S])*?);"\}((?:(?!\{span)[\s\S])*?)\{\/span\}/img, "[colored=$1]$2[\/colored]" );
    bbcodetext2 = bbcodetext2.replace(/\{div class="sp-wrap"\}(?:(?:(?!\{div)[\s\S])*?)\{div class="sp-body" title="((?:(?!\{div)[\s\S])*?)"\}((?:(?!\{div)[\s\S])*?)\{\/div\}(?:(?:(?!\{div)[\s\S])*?)\{\/div\}/img, "[spoiler=$1]$2[\/spoiler]" );
    bbcodetext2 = bbcodetext2.replace(/\{div class="sp-wrap"\}(?:(?:(?!\{div)[\s\S])*?)\{div class="sp-body"\}((?:(?!\{div)[\s\S])*?)\{\/div\}((?:(?!\{div)[\s\S])*?)\{((?:(?!\{div)[\s\S])*?)\/div\}/img, "[spoiler]$1[\/spoiler]");
    bbcodetext2 = bbcodetext2.replace(/\{div class="q"\}((?:(?!\{div)[\s\S])*?)\{\/div\}((?:(?!\{div)[\s\S])*?)\{\/div\}/img, "[quote]$1[\/quote]");
    bbcodetext2 = bbcodetext2.replace(/\{div class="q" head="((?:(?!\{div)[\s\S])*?)"\}((?:(?!\{div)[\s\S])*?)\{\/div\}((?:(?!\{div)[\s\S])*?)\{\/div\}/img, "[quote=\"$1\"]$2[\/quote]");
    bbcodetext2 = bbcodetext2.replace(/\{div class="c-wrap"\}((?:(?!\{div)[\s\S])*?)\{div class="c-head"\}((?:(?!\{div)[\s\S])*?)\{\/div\}((?:(?!\{div)[\s\S])*?)\{div class="c-body"\}((?:(?!\{div)[\s\S])*?)\{\/div\}((?:(?!\{div)[\s\S])*?)\{\/div\}/img, "[code]$4[\/code]");
    
    }
    if (codetype == "tfile")
      {
    bbcodetext2 = bbcodetext2.replace(/\{span style="font-size: ([^\{]*?)px; line-height: normal"\}([^\{]*?)\{(?=\/)\/span\}/igm, "[sizer=$1]$2\[\/sizer]");
    bbcodetext2 = bbcodetext2.replace(/\{span style="font-family: '([^\{]*?)'"\}([^\{]*?)\{(?=\/)\/span\}/igm, "[font=$1]$2\[\/font]");
    bbcodetext2 = bbcodetext2.replace(/\{span style="font-family: ([^\{]*?)"\}([^\{]*?)\{(?=\/)\/span\}/igm, "[font=$1]$2\[\/font]");
    bbcodetext2 = bbcodetext2.replace(/\{span style="font-style: italic"\}([^\{]*?)\{(?=\/)\/span\}/igm, "[i]$1\[\/i]");
    bbcodetext2 = bbcodetext2.replace(/\{span style="font-weight: bold"\}([^\{]*?)\{(?=\/)\/span\}/igm, "[b]$1\[\/b]");
    bbcodetext2 = bbcodetext2.replace(/\{span style="color: ([^\{]*?)"\}([^\{]*?)\{(?=\/)\/span\}/img, "[colored=$1]$2\[\/colored]" );
    bbcodetext2 = bbcodetext2.replace(/\{div class="spoiler"\}\[urled=#\]\[b\]\[\/b\]([^\{]*?)\[\/urled]\{div([^\{]*?)\}([^\{]*?)\{\/div\}([^\{]*?)\{\/div\}/img, "[spoiler=\"$1\"]$3[\/spoiler]");
    bbcodetext2 = bbcodetext2.replace(/\{a href="([^\{]*?)"([^\{]*?)\}\[img\]([^\{]*?)radikal([^\{]*?)\[\/img\]\{(?=\/)\/a\}/img, "[img]$3radikal$4[\/img]" );
     }
    if (codetype == "torrent71")
     {
    bbcodetext2 = bbcodetext2.replace(/\{span style="font-weight: bold;"\}([^\{]*?)\{(?=\/)\/span\}/igm, "[bold]$1\[\/bold]");
    bbcodetext2 = bbcodetext2.replace(/\{div style="text-align: ([\s\S]*?);"\}([^\{]*?)\{(?=\/)\/div\}/igm, "[align=$1]$2\[\/align]" );
    }
    if (codetype == "free-torrents")
    {
    bbcodetext2 = bbcodetext2.replace(/\{span style="font-style: italic;"\}([^\{]*?)\{(?=\/)\/span\}/img, "[i]$1\[\/i]" );
    bbcodetext2 = bbcodetext2.replace(/\{span style="font-family:'([^\{]*?)'"\}([^\{]*?)\{(?=\/)\/span\}/igm, "[font=$1]$2\[\/font]");
    bbcodetext2 = bbcodetext2.replace(/\{span style="text-decoration: underline;"\}([^\{]*?)\{(?=\/)\/span\}/img, "[u]$1\[\/u]" );
    bbcodetext2 = bbcodetext2.replace(/\{span style="font-weight: bold;"\}([^\{]*?)\{(?=\/)\/span\}/img, "[b]$1\[\/b]" );
    bbcodetext2 = bbcodetext2.replace(/\{span style="font-family:([^\{]*?)"\}([^\{]*?)\{(?=\/)\/span\}/igm, "[font=$1]$2\[\/font]");
    bbcodetext2 = bbcodetext2.replace(/\{div align="([^\{]*?)"\}([^\{]*?)\{\/div\}/igm, "[align=$1]$2\[\/align]" );
    
    }
    if (codetype == "rutor")
    {
    bbcodetext2 = bbcodetext2.replace(/\{fieldset style="border: 1px dashed black;"\}\{legend\}(?:[^\{]*?)\{\/legend\}([^\{]*?)\{\/fieldset\}/img, "[quote]$1[\/quote]");
    bbcodetext2 = bbcodetext2.replace(/\{div class="hidewrap"\}\{div class="hidehead" onclick="hideshow\(\$\(this\)\)"\}([^\{]*?)\{\/div\}\{div class="hidebody"\}\{\/div\}\{textarea class="hidearea"\}([^\{]*?)\{\/textarea\}\{\/div\}/img, "[spoiler=$1]$2[\/spoiler]");
    bbcodetext2 = bbcodetext2.replace(/\{span style="color:([^\{]*?);"\}([^\{]*?)\{(?=\/)\/span\}/img, "[colored=$1]$2\[\/colored]" );
    bbcodetext2 = bbcodetext2.replace(/\{span style="font-family:([^\{]*?);"\}([^\{]*?)\{(?=\/)\/span\}/igm, "[font=$1]$2\[\/font]");
    }
    if (codetype == "tfile" || codetype == "free-torrents")
      {
      
      bbcodetext2 = bbcodetext2.replace(/\{div style="text-align:((?:(?!\{div)[\s\S])*?)"\}((?:(?!\{div)[\s\S])*?)\{\/div\}/igm, "[align=$1]$2\[\/align]" );
      
      }
     
      
      
    }
    bbcodetext2 = bbcodetext2.replace(/\[colored=((?:(?!\[colored=)[\s\S])*?)\]((?:(?!\[colored=)[\s\S])*?)\[\/colored\]/igm, "[color=$1]$2[\/color]" );
    bbcodetext2 = bbcodetext2.replace(/\[underline]((?:(?!\[underline)[\s\S])*?)\[\/underline\]/igm, "[u]$1[\/u]" );
    bbcodetext2 = bbcodetext2.replace(/\[italic]((?:(?!\[italic)[\s\S])*?)\[\/italic\]/igm, "[u]$1[\/u]" );
    bbcodetext2 = bbcodetext2.replace(/\[bold]((?:(?!\[bold)[\s\S])*?)\[\/bold\]/igm, "[b]$1[\/b]" );
    bbcodetext2 = bbcodetext2.replace(/'/g, "'");
    bbcodetext2 = bbcodetext2.replace(/&nbsp;/g, " ");
    bbcodetext2 = bbcodetext2.replace(/>/g, "\}");
    bbcodetext2 = bbcodetext2.replace(/</g, "\{");
    
    //ниже нужно изменить код , чтоб заполнялись нужные поля , и чтоб нажималась кнопка обновить автоматически
    document.getElementById('message').value = bbcodetext2;
    document.getElementById('subject').value = topicname; 
    //document.b2form.poster.value = poster; 
    document.getElementById('postform').preview.click();
    //alert("ссылка на закачку торрента"+linkdownload)
    }
    
    
    
    
    [/code]

    теперь нужно добавить загрузку этого файла , необходимо чтоб он загружался в предпросмотре нового сообщения после загрузки предпросмотра , грузить будем через posting_editor.html

    Код: Выделить всё

     в самый конец posting_editor.html добавляем <script src="{PPKBB3CKER_ADDONS}js/new_tracker_parser.js" type="text/javascript" ></script>
    в php используется curl для загрузки страниц ( соответственно можно допилить чтоб выдавал номер ошибки если не смог загрузить страницу и .т.п.) и iconv для перекодировки, если в html коде страницы есть charset windows то конвертирует в utf-8 , иначе считается что уже utf-8 ( тут можно расширить) ,
    код впринципе не менялся трекеры теже , tfile.ru, rutracker.org, pornolab.net free-torrents.org , rupier.org, rutor.org , трекеры без проблем ( в виде необходимой регистрации для просмотра описания релиза) можно добавлять самостоятельно
    скрипт заточен под мои ббкоды это связано с ограничениями встроенных в phpbb3 т.е.
    торрентпир поддерживает вложенность ббкодов например

    Код: Выделить всё

     [color][color] текс [/color][/color]
    отработает нормально , а в phpbb3 не прокатит, т.к. мы парсим с других трекеров , которые вложенность поддерживают , в наш тоже нужно добавить поддержку вложенных ббкодов ( свои позже опишу( может быть :))) это делает мод http://www.absoluteanime.com/admin/mods ... st_bbcodes , на 3.0.8 работает , также phpbb3 криво работает с русскими символами в ссылках

    вобщем пока все на этом
    Последний раз редактировалось smollvrn 06 мар 2011, 23:58, всего редактировалось 6 раз.
smollvrn
  • Аватара пользователя
    serrrios Сообщение 11.11.2010
    smollvrn писал(а):в теории можно научить заполнять доп поля , поля с постерами скриншотами ( еслиб трекер умел загружать их по урлам) , загружать торрент файлы
    Вот сделать еще это и вообще тру будет. Сейчас копаю движок на предмет загрузки с удаленных урл, функция есть стандартно, надо только в постинг грамотно прикрутить.
    http://aniproject.ru - перспектива... велком епта..
    http://www.ppkbb3cker.ru/viewtopic.php?f=35&t=1042 - мои платные услуги по трекеру.
serrrios
  • bizZz0n Сообщение 11.11.2010
    Жду фулл версии, автору огромное респектище за труды ;)
bizZz0n
  • maksvel1999 Сообщение 11.11.2010
    Неплохо било б увидеть фулл версию.
maksvel1999
  • Аватара пользователя
    serrrios Сообщение 12.11.2010
    Меня этот мод вдохновил на доработку скрипта абордажа(парс рутрекера, только в большей степени на пхп, а не на яве). Застопорился на передачи данных обратно в текстареа постинга. Функция window.openner почему-то не срабатывает, написал PPK, если поможет выложу потом скриптик =)
    http://aniproject.ru - перспектива... велком епта..
    http://www.ppkbb3cker.ru/viewtopic.php?f=35&t=1042 - мои платные услуги по трекеру.
serrrios
  • smollvrn Сообщение 12.11.2010
    думал о переделке в пхп , а зачем собственно нагружать сервер выполнением не нужных сценариев , это просто удобное дополнение для пользователя , пусть тачка клиента занимается преобразованием ...
    может поможет кто довести скрипт до ума , нужна проверка на валидность введенной ссылки , ещеб хотелось научить загружать постеры и скриншоты ( ну это если добавят загруз по урлам) ,
    еще что-то надо сделать с передачей переменной из пхп в яву
    остальное думаю каждый должен под свой трекер делать , ббкоды , трекеры ,оформление , опять же доп. поля у всех разные...
    ещеб неплохо сюда запостить ссылки на раздачи которые неправильно парсятся , чтоб сделать скрипт боллее общим ...
    в остальном скрипт должен быть полностью рабочим...
smollvrn
  • filosof Сообщение 13.11.2010
    smollvrn писал(а): поля с постерами скриншотами ( еслиб трекер умел загружать их по урлам)
    я так и загружаю (копирую ссылку и трекер сам ее заливает)
filosof
  • foxriver Сообщение 13.11.2010
    чет не врубился вставил сылку ... для теста пишет
    Fatal error: Call to undefined function curl_init() in M:\home\localhost\www\...\converter.php on line 14 орёт ошибка в 14 строке а че и как
foxriver
  • Аватара пользователя
    serrrios Сообщение 13.11.2010
    У сервера не подключена функция curl..
    http://aniproject.ru - перспектива... велком епта..
    http://www.ppkbb3cker.ru/viewtopic.php?f=35&t=1042 - мои платные услуги по трекеру.
serrrios
  • foxriver Сообщение 13.11.2010
    serrrios писал(а):У сервера не подключена функция curl..
    В php.ini править?
foxriver
25 сообщений
  • 1
  • 2
  • 3
  • След.

Вернуться в «Моды в разработке»

Time: 0.000s | Queries: 0 | Peak Memory Usage: 0.00 МБ | GZIP: Unknown | SQL Explain
  • Список форумов
2018, made with by ThemeKita Создано на основе phpBB® Forum Software © phpBB Limited Русская поддержка phpBB (C) 2009-2026 @ PPK
  • Часовой пояс: UTC+04:00
Участники темы
Список форумов Участники темы
Перейти
Сайт ↳   Новости по сайту ↳   Новости обновлений ↳   Вопросы по сайту ↳   Non-russian speakers forum Форумы по phpBB 3.1-3.3 ↳   Расширения для phpBB 3.1-3.3 ↳   Бета-версии и расширения в разработке ↳   База расширений ↳   Поиск и запросы расширений ↳   Расширения для phpBB 3.1-3.3 для донаторов ↳   Условно-бесплатные расширения ↳   Платные расширения ↳   Расширения для подписчиков ↳   Запросы расширений, функционала и переводов для подписчиков ↳   Переводы расширений для phpBB3.1-3.3 ↳   Стили для phpBB 3.1-3.3 ↳   Вопросы по phpBB 3.1-3.3 Форумы по phpBB 3.0 ↳   Мод трекера ppkBB3cker ↳   Новости по трекеру и обновлениям ↳   Ошибки, проблемы, недочёты ↳   Предложения по новым функциям и возможностям ↳   Вопросы, ответы и примеры решений ↳   Моды и стили для трекера ↳   Готовые стили для трекера ↳   Запросы стилей для трекера ↳   Стили в разработке ↳   Готовые моды для трекера ↳   Запросы модов для трекера ↳   Моды в разработке ↳   Остальное ↳   Часто задаваемые вопросы ↳   Ваши трекеры ↳   Мод трекера xbtBB3cker ↳   Новости по трекеру и обновлениям ↳   Вопросы, ответы, ошибки и обсуждение ↳   Другие моды для phpBB 3.0 ↳   Минимоды и хаки для phpBB3 ↳   phpBB 3.0 ppkBB3cker Edition ↳   Платные услуги, моды, стили для phpBB 3.0 ↳   BB2Spoiler/BB3Spoiler ↳   BB3Topics ↳   BB3Sape ↳   BB3UserAgentInfo ↳   Вопросы по phpBB 3.0 ↳   Вне тематики форума