После недолгих поисков нашел готовый класс, но пришлось дописать, т.к. некоторые данные находятся на другой странице.
Итог. Функция для получения id фильма и информации. Результат работы вывод списка фильмов найденых по переданному имени фильма. Далее возврат результатов парсинга в виде json.
PHP:
скопировать код в буфер обмена
скопировать код в буфер обмена
- function getFromIMDB($tt=1) { // если $tt = 0 тогда делаем поиск, иначе парсим по id
- global $database, $mosConfig_absolute_path, $ka_proxy_ip, $ka_proxy_port, $ka_proxy_user, $ka_proxy_pass, $ka_imdb_user, $ka_imdb_pass;
- require_once($mosConfig_absolute_path.'/administrator/components/com_kinoarhiv/classes/class.snoopy.php');
- require_once($mosConfig_absolute_path.'/administrator/components/com_kinoarhiv/classes/class.parser.imdb.php');
- $search_url = 'http://www.imdb.com/find?s=tt;q=';
- $movie_url = 'http://imdb.com/title/tt';
- $snoopy = new Snoopy;
- $snoopy->proxy_host = $ka_proxy_ip;
- $snoopy->proxy_port = $ka_proxy_port;
- $snoopy->proxy_user = $ka_proxy_user;
- $snoopy->proxy_pass = $ka_proxy_pass;
- $snoopy->user = $ka_imdb_user;
- $snoopy->pass = $ka_imdb_pass;
- $snoopy->agent = 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)';
- $snoopy->rawheaders['Cache-Control'] = 'no-store, no-cache, must-revalidate, post-check=0, pre-check=0';
- $snoopy->rawheaders['Pragma'] = 'no-cache';
- $snoopy->rawheaders['Accept'] = 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8';
- $snoopy->rawheaders['Accept-Language'] = 'ru,en-us;q=0.7,en;q=0.3';
- $imdb = new IMDB_Parser;
- if ($tt == 1 && $movie_name != '') {
- if ($snoopy->fetch($search_url.$movie_name)) {
- $raw_search_page = $snoopy->results;
- echo '<div align="left">';
- // Get "Popular Titles"
- if ($pt !== '') {
- echo preg_replace('@<a href="/title/tt(.*?)/">@', '<a id="link_to_movie" href="javascript:void(0);" onClick="getIMDB(\'\\1\');">', $strip_pt);
- }
- // Get "Exact Matches"
- if ($em !== '') {
- echo preg_replace('@<a href="/title/tt(.*?)/">@', '<a id="link_to_movie" href="javascript:void(0);" onClick="getIMDB(\'\\1\');">', $strip_em);
- }
- // Get "Partial Matches"
- if ($pm !== '') {
- echo preg_replace('@<a href="/title/tt(.*?)/">@', '<a id="link_to_movie" href="javascript:void(0);" onClick="getIMDB(\'\\1\');">', $strip_pm);
- }
- echo '</div>';
- } else {
- echo 'error fetching document: '.$snoopy->error;
- }
- } else {
- if ($snoopy->fetch($movie_url.$movie_id)) {
- $movie_name = $database->getEscaped($imdb->getMovieTitle($snoopy->results, true));
- $tagline = $imdb->getMovieTagline($snoopy->results);
- $time = $imdb->getMovieRuntime($snoopy->results);
- $directed_by = $imdb->getMovieDirectedBy($snoopy->results);
- $rate = $imdb->getMovieStars($snoopy->results);
- if ($snoopy->fetch($movie_url.$movie_id.'/fullcredits')) {
- $scenario = $imdb->getMovieScenarists($snoopy->results);
- $actors = $imdb->getMovieCast($snoopy->results);
- $producers = $imdb->getMovieProducedBy($snoopy->results);
- $music_by = $imdb->getMovieMusicBy($snoopy->results);
- $operators = $imdb->getMovieOperator($snoopy->results);
- }
- $result = '{"movie_name":"'.$movie_name.'"},{"year":"'.$year.'"},{"genres":"'.$genres.'"},{"countries":"'.$cns.'"},{"slogan":"'.$tagline.'"},{"time":"'.$time.'"},{"dir_by":"'.$directed_by.'"},{"rate":"'.$rate.'"},{"imdb_id":"'.$movie_id.'"},{"scenarists":"'.$scenario.'"},{"actors":"'.$actors.'"},{"prod_by":"'.$producers.'"},{"music_by":"'.$music_by.'"},{"operators":"'.$operators.'"}';
- echo $result;
- } else {
- echo '{"error":"Error fetching document - '.$snoopy->error.'"}';
- }
- }
- }