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

 • Просмотры: 8722
sm
smollvrn
Поблагодарили: 2 раза
Сообщения: 37
Зарегистрирован: 12 июн 2010, 16:12
Сообщение

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

10 ноя 2010, 23:49

принцип , пхп скрипту скармливаем ссылку на страницу раздачи , загружаем 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"
Перед вставить

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

<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 раз.
Аватара пользователя
serrrios
Благодарил (а): 11 раз
Поблагодарили: 119 раз
Сообщения: 1532
Зарегистрирован: 29 май 2009, 20:22
Сообщение

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

11 ноя 2010, 07:36

smollvrn писал(а):в теории можно научить заполнять доп поля , поля с постерами скриншотами ( еслиб трекер умел загружать их по урлам) , загружать торрент файлы
Вот сделать еще это и вообще тру будет. Сейчас копаю движок на предмет загрузки с удаленных урл, функция есть стандартно, надо только в постинг грамотно прикрутить.
http://aniproject.ru - перспектива... велком епта..
http://www.ppkbb3cker.ru/viewtopic.php?f=35&t=1042 - мои платные услуги по трекеру.
bi
bizZz0n
Откуда: Украина, Харьков
Благодарил (а): 7 раз
Поблагодарили: 4 раза
Сообщения: 327
Зарегистрирован: 28 янв 2010, 00:58
Сообщение

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

11 ноя 2010, 22:43

Жду фулл версии, автору огромное респектище за труды ;)
ma
maksvel1999
Благодарил (а): 16 раз
Поблагодарили: 12 раз
Сообщения: 370
Зарегистрирован: 02 ноя 2009, 15:05
Сообщение

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

11 ноя 2010, 23:38

Неплохо било б увидеть фулл версию.
Аватара пользователя
serrrios
Благодарил (а): 11 раз
Поблагодарили: 119 раз
Сообщения: 1532
Зарегистрирован: 29 май 2009, 20:22
Сообщение

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

12 ноя 2010, 09:38

Меня этот мод вдохновил на доработку скрипта абордажа(парс рутрекера, только в большей степени на пхп, а не на яве). Застопорился на передачи данных обратно в текстареа постинга. Функция window.openner почему-то не срабатывает, написал PPK, если поможет выложу потом скриптик =)
http://aniproject.ru - перспектива... велком епта..
http://www.ppkbb3cker.ru/viewtopic.php?f=35&t=1042 - мои платные услуги по трекеру.
sm
smollvrn
Поблагодарили: 2 раза
Сообщения: 37
Зарегистрирован: 12 июн 2010, 16:12
Сообщение

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

12 ноя 2010, 19:15

думал о переделке в пхп , а зачем собственно нагружать сервер выполнением не нужных сценариев , это просто удобное дополнение для пользователя , пусть тачка клиента занимается преобразованием ...
может поможет кто довести скрипт до ума , нужна проверка на валидность введенной ссылки , ещеб хотелось научить загружать постеры и скриншоты ( ну это если добавят загруз по урлам) ,
еще что-то надо сделать с передачей переменной из пхп в яву
остальное думаю каждый должен под свой трекер делать , ббкоды , трекеры ,оформление , опять же доп. поля у всех разные...
ещеб неплохо сюда запостить ссылки на раздачи которые неправильно парсятся , чтоб сделать скрипт боллее общим ...
в остальном скрипт должен быть полностью рабочим...
fi
filosof
Поблагодарили: 4 раза
Сообщения: 354
Зарегистрирован: 05 май 2010, 20:55
Сообщение

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

13 ноя 2010, 07:54

smollvrn писал(а): поля с постерами скриншотами ( еслиб трекер умел загружать их по урлам)
я так и загружаю (копирую ссылку и трекер сам ее заливает)
fo
foxriver
Поблагодарили: 1 раз
Сообщения: 167
Зарегистрирован: 23 мар 2010, 02:16
Сообщение

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

13 ноя 2010, 16:34

чет не врубился вставил сылку ... для теста пишет
Fatal error: Call to undefined function curl_init() in M:\home\localhost\www\...\converter.php on line 14 орёт ошибка в 14 строке а че и как
Аватара пользователя
serrrios
Благодарил (а): 11 раз
Поблагодарили: 119 раз
Сообщения: 1532
Зарегистрирован: 29 май 2009, 20:22
Сообщение

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

13 ноя 2010, 17:17

У сервера не подключена функция curl..
http://aniproject.ru - перспектива... велком епта..
http://www.ppkbb3cker.ru/viewtopic.php?f=35&t=1042 - мои платные услуги по трекеру.
fo
foxriver
Поблагодарили: 1 раз
Сообщения: 167
Зарегистрирован: 23 мар 2010, 02:16
Сообщение

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

13 ноя 2010, 17:42

serrrios писал(а):У сервера не подключена функция curl..
В php.ini править?

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