Помогите переделать парсер!!!

1R
На сайте с 26.02.2010
Offline
35
698

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

Собственнов от сам код парсера:

<?php


set_time_limit(600000);

define ( 'DATALIFEENGINE', true );
define ( 'ROOT_DIR', dirname ( __FILE__ ) );
define ( 'ENGINE_DIR', ROOT_DIR . '/engine' );
require_once ROOT_DIR . '/engine/init.php';
require_once ROOT_DIR . '/engine/modules/functions.php';

function strtolower_ru($text) {
$alfavitlover = array('ё','й','ц','у','к','е','н','г', 'ш','щ','з','х','ъ','ф','ы','в', 'а','п','р','о','л','д','ж','э', 'я','ч','с','м','и','т','ь','б','ю');
$alfavitupper = array('Ё','Й','Ц','У','К','Е','Н','Г', 'Ш','Щ','З','Х','Ъ','Ф','Ы','В', 'А','П','Р','О','Л','Д','Ж','Э', 'Я','Ч','С','М','И','Т','Ь','Б','Ю');

return str_replace($alfavitupper,$alfavitlover,strtolower($text));
}

function encodestring($st) {
$st=strtr($st,"абвгдеёзийклмнопрстуфхъыэ_", "abvgdeeziyklmnoprstufhqiei");
$st=strtr($st,"АБВГДЕЁЗИЙКЛМНОПРСТУФХЪЫЭ_", "abvgdeeziyklmnoprstufhqiei");
$st=strtr($st,
array(
"ж"=>"zh", "ц"=>"ts", "ч"=>"ch", "ш"=>"sh",
"щ"=>"shch","ь"=>"", "ю"=>"yu", "я"=>"ya",
"Ж"=>"zh", "Ц"=>"ts", "Ч"=>"ch", "Ш"=>"sh",
"Щ"=>"shch","Ь"=>"", "Ю"=>"yu", "Я"=>"ya",
"ї"=>"i", "Ї"=>"yi", "є"=>"ie", "Є"=>"ye",
" "=>"-", "/"=>"", ","=>"", "."=>"", "?"=>"",
"\""=>"", "'"=>"", "["=>"", "]"=>"", ":"=>"", ";"=>"", "№"=>""
)
);
return $st;
}
function utftocp($str) {
return iconv("UTF-8","CP1251",$str);

}
function createThumbs( $pathToImages, $thumbWidth, $pic_path_orig, $pic_path_thumb ) {
// load image and get image size
$img = imagecreatefromjpeg( $pathToImages );
$width = imagesx( $img );
$height = imagesy( $img );

// calculate thumbnail size
$new_width = $thumbWidth;
$new_height = floor( $height * ( $thumbWidth / $width ) );

// create a new temporary image
$tmp_img = imagecreatetruecolor( $new_width, $new_height );

// copy and resize old image into new image
imagecopyresized( $tmp_img, $img, 0, 0, 0, 0, $new_width, $new_height, $width, $height );

// save thumbnail into a file
imagejpeg( $tmp_img, $pic_path_thumb );
imagejpeg( $img, $pic_path_orig );
}

$dop_janr="";
if ($_GET[janr]) {
$dop_janr = "&janr=".$_GET[janr];
}
$content=@file_get_contents('http://dircash.com/xml_movie.php?start='.$_GET['start'].$dop_janr);

if(strpos("<title>",$content)) {
die("Download xml error!");
}

$xmldoc = new SimpleXMLElement($content, LIBXML_NOCDATA);
$xmlresponce = $xmldoc->response;
$nodes = $xmldoc->xpath('/movie_list/movie');

foreach ($nodes as $node) {
$title_xml_search[]=strtolower_ru(trim(utftocp($node->name_ru)));

$id[] = trim(utftocp($node->id));
$addtime[] = trim(utftocp($node->addtime));
$image_small[] = trim(utftocp($node->image_small));
$image[] = trim(utftocp($node->image));
$image_big[] = trim(utftocp($node->image_big));
$name_ru[] = trim(utftocp($node->name_ru));
$name_eng[] = trim(utftocp($node->name_eng));
$description[] = trim(utftocp($node->description));
$gernes[] = trim(utftocp($node->gernes));
$year[] = trim(utftocp($node->year));
$director[] = trim(utftocp($node->director));
$actors[] = trim(utftocp($node->actors));
$movie_lang[] = trim(utftocp($node->movie_lang));
$movie_time[] = trim(utftocp($node->movie_time));
$file_rip[] = trim(utftocp($node->file_rip));
$file_codec[] = trim(utftocp($node->file_codec));
$file_video[] = trim(utftocp($node->file_video));
$file_audio[] = trim(utftocp($node->file_audio));
$file_size[] = trim(utftocp($node->file_size));
$film_tizer[] = trim(utftocp($node->film_tizer));
$screen1[] = trim(utftocp($node->screen1));
$screen2[] = trim(utftocp($node->screen2));
$screen3[] = trim(utftocp($node->screen3));
$screen4[] = trim(utftocp($node->screen4));
$screen5[] = trim(utftocp($node->screen5));
$screen6[] = trim(utftocp($node->screen6));

}

// получение фильмов из базы
$db->query('SELECT title FROM ' . USERPREFIX . '_post');
while($row = $db->get_row()) {
$aTitle[]=strtolower_ru(trim($row['title']));
}


$count=0;
$count_up=0;
//START TO ADD NEWS
foreach($title_xml_search as $i=>$t) {

if (in_array($t,$aTitle)) {
$count_up++;
// ОБВНОЛЕНИЕ

$t_safe = $db->safesql($t);
$db->query("SELECT * FROM " . USERPREFIX . "_post WHERE title = '".$t_safe."'");
while ($row = $db->get_row()) {
$bd_id = $row['id'];
$bd_xfields = $row['xfields'];
// новые данные
$arXfileds = xfieldsdataload($bd_xfields);
if ($arXfileds['id_movie'] == $id[$i]) {
$arXfileds['translate'] = $file_audio[$i];
$arXfileds['quality'] = $file_rip[$i];
$arXfileds['filesize'] = $file_size[$i];
$arXfileds['trailer'] = $film_tizer[$i];
$arXfileds['poster_big'] = $image_big[$i];
$arXfileds['lang'] = $movie_lang[$i];
$arXfileds['time'] = $movie_time[$i];
$arXfileds['screen1'] = $screen1[$i];
$arXfileds['screen2'] = $screen2[$i];
$arXfileds['screen3'] = $screen3[$i];
$arXfileds['screen4'] = $screen4[$i];
$arXfileds['screen5'] = $screen5[$i];
$arXfileds['screen6'] = $screen6[$i];

foreach ($arXfileds as $key => $val) {
$arXfiledsNew[] = $key.'|'.$val;
}
$xfields_new = implode('||', $arXfiledsNew);
unset($arXfiledsNew);
$xfields_new = $db->safesql ($xfields_new);

$db->query("UPDATE " . USERPREFIX . "_post SET xfields = '".$xfields_new."' WHERE id = '".$bd_id."'");
}
}
} else {
// ПАРСИНГ РИСУНКОВ
$big_pic = $image_big[$i];
$small_pic = "http://dirkino-pic.ru/".$id[$i].".jpg";
// КОНЕЦ ПАРСИНГА
$xfields='id_movie|'.$id[$i].'||actor|'.$actors[$i].'||rus|'.$name_ru[$i].'||orig|'.$name_eng[$i].'||year|'.$year[$i].'||lang|'.$movie_lang[$i].'||time|'.$movie_time[$i].'||translate|'.$file_audio[$i].'||quality|'.$file_rip[$i].'||filesize|'.$file_size[$i].'||director|'.$director[$i].'||poster_small|'.$small_pic.'||poster_big|'.$big_pic.'||screen1|'.$screen1[$i].'||screen2|'.$screen2[$i].'||screen3|'.$screen3[$i].'||screen4|'.$screen4[$i].'||screen5|'.$screen5[$i].'||screen6|'.$screen6[$i].'||trailer|'.$film_tizer[$i];

$descr='Кино фильм '.$name_ru[$i].' кино '.$name_ru[$i].' скачать СМС смотреть фильм '.$name_ru[$i];
$keywords='фильм '.$name_ru[$i].', кино '.$name_ru[$i].', скачать '.$name_ru[$i].', скачать фильм '.$name_ru[$i].', '.$name_ru[$i].' фильм скачать';
$metatitle='Скачать фильм '.$name_ru[$i].'';
$aCatId=array();
$category=explode(',', $gernes[$i]);
foreach($category as $cat) {
$cat = $db->safesql (trim($cat));
$row = $db->super_query("SELECT id FROM " . USERPREFIX . "_category WHERE Name='".$cat."'");
$aCatId[] = $row['id'];
}

$alt_name = encodestring($name_ru[$i]);
$shrt_story = $db->safesql($description[$i]);
$xfields = $db->safesql($xfields);
$title = $db->safesql($name_ru[$i]);
$descr = $db->safesql($descr);
$keywords = $db->safesql($keywords);
$bds_cat = $db->safesql(implode(",",$aCatId));
$alt_name = $db->safesql($alt_name);
$metatitle = $db->safesql($metatitle);

$db->query("INSERT INTO ". USERPREFIX . "_post (autor,date,short_story,xfields,title,descr,keywords,category,alt_name,approve,metatitle) ".
"values ('admin',NOW(),'".$shrt_story."','".$xfields."','".$title."','".$descr."','".$keywords."','".$bds_cat."','".$alt_name."',1,'".$metatitle."')");
$count++;
}
}
echo "Добавлено ".$count." новых фильмов<br>\n";
echo "Обновлено ".$count_up." фильмов<br>\n";
?>

Закоментировал строки

" // ОБВНОЛЕНИЕ


// $t_safe = $db->safesql($t);
//$db->query("SELECT * FROM " . USERPREFIX . "_post WHERE title = '".$t_safe."'");
//while ($row = $db->get_row()) {
// $bd_id = $row['id'];
//$bd_xfields = $row['xfields'];"

не помогло, все равно обновляет!

DV
На сайте с 01.05.2010
Offline
644
#1

И чё, while закомментировали, и всё так же работает?

VDS хостинг ( http://clck.ru/0u97l ) Нет нерешаемых задач ( https://searchengines.guru/ru/forum/806725 ) | Перенос сайтов на Drupal 7 с любых CMS. ( https://searchengines.guru/ru/forum/531842/page6#comment_10504844 )
1R
На сайте с 26.02.2010
Offline
35
#2

да, все равно обновляет...

попробовал еще ети две строки закоментировать, результат тотже!

//while($row = $db->get_row()) {
// $aTitle[]=strtolower_ru(trim($row['title']));

писал в тех поддержку... два дня ответа нету!

-----------------------------------

ой, вру, недосмотрел с если заментировать while то скрипт вобще не выполняется

Ёхан Палыч
На сайте с 07.05.2006
Offline
169
#3
10link.ru:
попробовал еще ети две строки закоментировать, результат тотже!

Попробуйте еще закомментировать "$db->query("UPDATE"

1R
На сайте с 26.02.2010
Offline
35
#4
Ёхан Палыч:
Попробуйте еще закомментировать "$db->query("UPDATE"

не помогло.

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

while ($row = $db->get_row()) {

скрипт вобще не работает, закоментировал $db->query("UPDATE", обновление продолжается...

siv1987
На сайте с 02.04.2009
Offline
427
#5

Закаментируй весь внутренний блок иф

/*

после

if (in_array($t,$aTitle)) {

*/

перед

}

} else {

1R
На сайте с 26.02.2010
Offline
35
#6
siv1987:
Закаментируй весь внутренний блок иф

/*
после
if (in_array($t,$aTitle)) {


*/
перед
}
} else {

если оставить только


if (in_array($t,$aTitle)) {
}
} else {
// ПАРСИНГ РИСУНКОВ
$big_pic = $image_big[$i];
...

тоже скрипт тупо отказывается работать...

Mad_Man
На сайте с 10.11.2008
Offline
162
#7

Какая реакция на снос

$db->query("UPDATE*"*.*USERPREFIX*.*"_post*SET*xfields*=*'".$xfields_new."'*WHERE*id*=*'".$bd_id."'");

...?

1R
На сайте с 26.02.2010
Offline
35
#8
Mad_Man:
Какая реакция на снос
$db->query("UPDATE*"*.*USERPREFIX*.*"_post*SET*xfields*=*'".$xfields_new."'*WHERE*id*=*'".$bd_id."'"); 

...?

помогло, блин сколько мороки изза одно строки... вернул оригинальный файл и тупо выкинул это строку... обновление не произошло... огромное спасибо всем!!!

Mad_Man
На сайте с 10.11.2008
Offline
162
#9
10link.ru:
помогло, блин сколько мороки изза одно строки... вернул оригинальный файл и тупо выкинул это строку... обновление не произошло... огромное спасибо всем!!!
Ёхан Палыч:
Попробуйте еще закомментировать "$db->query("UPDATE"
10link.ru:
не помогло.

Сдаётся мне, кто-то не знает как комментировать строки в коде.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий