
Недавно мой знакомый (журналист на новостном портале) попросил меня "накатать" небольшой скриптик, для упрощения рутиной работы (копипастинг данных и оборачивание в BB-code).
Парсит нижеприведенный список значений:
1)Назывние
2)Оригинальное название
3)Год
4)Страна
5)Слоган
6)Режиссер
7)Сценарий
8)Продюсер
9)Оператор
10)Композитор
11)Жанр
12)Бюджет
13)Сборы в США
14)Сборы в мире
15)Сборы в России
16)Премьера (мир)
17)Премьера (РФ)
18)Релиз на DVD
19)Релиз на Blu-Ray
20)Рейтинг MPAA
21)Время
22)Описание
23)Рейтинг Кинопоиск
24)Рейтинг IMDb
25)Картинка(логотип фильма)
26)Ссылку на трейлер
27)Картинку к трейлеру
Парсер съедает ссылки вида: http://www.kinopoisk.ru/level/1/film/251733/ и просто ID фильма: 251733
Авторизация необходима для обхода бана.
Код:
<form method='get'>
<input type='text' name='id' value='<?php echo $m[0];?>' size="40">
<input type='submit' value='get' name='submit'>
</form>
<?
#################################
# Kinopoisk.ru parser
# by #Wolf#
# http://wolf-et.ru/
#################################
if(empty($_REQUEST['id'])){die("die");}
//header ("Content-type: text/html; charset=utf-8");
$user='login';
$password='password';
function post($url,$post,$refer)
{
if($post==null){$post=false;}
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.4) Gecko/2008102920 AdCentriaIM/1.7 Firefox/3.0.4");
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
curl_setopt($ch, CURLOPT_REFERER, $refer);
curl_setopt($ch, CURLOPT_COOKIEJAR, "./cookie.txt");
curl_setopt($ch, CURLOPT_COOKIEFILE, "./cookie.txt");
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec($ch);
return $result;
}
preg_match('#([0-9]{2,7})#',$_REQUEST['id'],$m);
post('http://www.kinopoisk.ru/level/30/','shop_user[login]='.$user.'&shop_user[pass]='.$password.'&shop_user[mem]=on&auth=%E2%EE%E9%F2%E8+%ED%E0+%F1%E0%E9%F2','http://www.kinopoisk.ru');
$result=post('http://www.kinopoisk.ru/level/1/film/'.$m[0].'/',null,'http://www.kinopoisk.ru/');
$result= iconv("cp1251", "utf8", $result);
//echo $result;
$parse=array(
'name' => '#<h1 style=\"margin: 0; padding: 0\" class="moviename-big">(.*?)</h1>#si',
'originalname'=> '#13px">(.*?)</span>#si',
'year' => '#год</td><td class=\"\">(.*?)</td></tr>#si',
'country' => '#страна</td><td class=\"\">(.*?)</td></tr>#si',
'slogan' => '#слоган</td><td style="color: \#555">(.*?)</td></tr>#si',
'director' => '#режиссер</td><td>(.*?)</td></tr>#si',
'script' => '#сценарий</td><td>(.*?)</td></tr>#si',
'producer' => '#продюсер</td><td>(.*?)</td></tr>#si',
'operator' => '#оператор</td><td>(.*?)</td></tr>#si',
'composer' => '#композитор</td><td>(.*?)</td></tr>#si',
'genre' => '#жанр</td><td>(.*?)</td></tr>#si',
'budget' => '#бюджет</td><td class=\"dollar\">(.*?)</td></tr>#si',
'usa_charges' => '#США</td><td class=\"dollar\">(.*?)</td></tr>#si',
'world_charges'=> '#мире</td><td class=\"dollar\">(.*?)</td></tr>#si',
'rus_charges' => '#России</td><td class=\"dollar\">(.*?)</td></tr>#si',
'world_premiere'=>'#мир\)</td><td class=\"calendar\">(.*?)</td></tr>#si',
'rus_premiere' => '#РФ\)</td><td class="calendar">(.*?)</td></tr>#si',
'dvd' => '#dvd">(.*?)</td></tr>#is',
'bluray' => '#bluray">(.*?)</td></tr>#is',
'MPAA' => '#MPAA</td><td class=\"[\S]{1,100}\"><a href=\'[\S]{1,100}\'><img src=\'/[\S]{1,100}\' height=11 alt=\'(.*?)\' border=0#si',
'time' => '#id="runtime">(.*?)</td></tr>#si',
'description' => '#<span class=\"_reachbanner_\">(.*?)</span>#si',
'imdb' => '#IMDB:\s(.*?)</div>#si',
'kinopoisk' => '#text-decoration: none">(.*?)<span#si',
'kp_votes' => '#<span style=\"font:100 14px tahoma, verdana\">(.*?)</span>#si',
);
$new=array();
foreach($parse as $index => $value)
{
preg_match($value,$result,$matches);
$new[$index]=preg_replace("#<a.+?>(.+?)</a>#is","$1",$matches[1]);
}
preg_match('#getTrailer\("(.*?)","(.*?)","(.*?)","[0-9]+","[0-9]+","(.*?)",""\);#i',$result,$trailer);
/////////////////////////print//////////////////////////////
echo '[img]http://www.kinopoisk.ru/images/film/'.$m[0].'.jpg[/img]<br />';
echo '[Ссылка на трейлер] http://'.$trailer[4].'.kinopoisk.ru/trailers/flv/'.$trailer[2].'<br />';
echo '[Трейлер preview] http://'.$trailer[4].'.kinopoisk.ru/trailers/flv/'.$trailer[3].'<br />';
echo '[b]Назывние:[/b]'.$new['name'].'<br />';
echo '[b]Оригинальное название:[/b]'.$new['originalname'].'<br />';
echo '[b]Год:[/b]'.$new['year'].'<br />';
echo '[b]Страна:[/b]'.$new['country'].'<br />';
echo '[b]Слоган:[/b]'.$new['slogan'].'<br />';
echo '[b]Режиссер:[/b]'.$new['director'].'<br />';
echo '[b]Сценарий:[/b]'.$new['script'].'<br />';
echo '[b]Продюсер:[/b]'.$new['producer'].'<br />';
echo '[b]Оператор:[/b]'.$new['operator'].'<br />';
echo '[b]Композитор:[/b]'.$new['composer'].'<br />';
echo '[b]Жанр:[/b]'.$new['genre'].'<br />';
echo '[b]Бюджет:[/b]'.$new['budget'].'<br />';
echo '[b]Сборы в США:[/b]'.$new['usa_charges'].'<br />';
echo '[b]Сборы в мире:[/b]'.$new['world_charges'].'<br />';
echo '[b]Сборы в России:[/b]'.$new['rus_charges'].'<br />';
echo '[b]Премьера (мир):[/b]'.$new['world_premiere'].'<br />';
echo '[b]Премьера (РФ):[/b]'.$new['rus_premiere'].'<br />';
echo '[b]Релиз на DVD:[/b]'.$new['dvd'].'<br />';
echo '[b]Релиз на Blu-Ray:[/b]'.$new['bluray'].'<br />';
echo '[b]Рейтинг MPAA:[/b]'.$new['MPAA'].'<br />';
echo '[b]Время:[/b]'.$new['time'].'<br />';
echo '[b]Описание:[/b]'.$new['description'].'<br />';
echo '[b]Рейтинг Кинопоиск:[/b]'.$new['kinopoisk'].'('.$new['kp_votes'].' )<br />';
echo '[b]Рейтинг IMDb:[/b]'.$new['imdb'].'<br />';
?>