getIMDbIdFromSearch(trim($title)); if($imdbId === NULL){ $arr = array(); $arr['error'] = "No Title found in Search Results!"; return $arr; } return $this->getMovieInfoById($imdbId, $getExtraInfo); } // Get movie information by IMDb Id. public function getMovieInfoById($imdbId, $getExtraInfo = true) { $arr = array(); $imdbUrl = "http://www.imdb.com/title/" . trim($imdbId) . "/"; return $this->scrapeMovieInfo($imdbUrl, $getExtraInfo); } // Scrape movie information from IMDb page and return results in an array. private function scrapeMovieInfo($imdbUrl, $getExtraInfo = true) { $arr = array(); $html = $this->geturl("${imdbUrl}combined"); $title_id = $this->match('//ms', $html, 1); if(empty($title_id) || !preg_match("/tt\d+/i", $title_id)) { $arr['error'] = "No Title found on IMDb!"; return $arr; } $arr['title_id'] = $title_id; $arr['imdb_url'] = $imdbUrl; $arr['title'] = str_replace('"', '', trim($this->match('/
(.*?)(|<\/p>)/ms', $plotPageHtml, 1)));
$releaseinfoHtml = $this->geturl("http://www.imdb.com/title/" . $arr['title_id'] . "/releaseinfo");
$arr['also_known_as'] = $this->getAkaTitles($releaseinfoHtml);
$arr['release_dates'] = $this->getReleaseDates($releaseinfoHtml);
$arr['recommended_titles'] = $this->getRecommendedTitles($arr['title_id']);
$arr['media_images'] = $this->getMediaImages($arr['title_id']);
$arr['videos'] = $this->getVideos($arr['title_id']);
}
return $arr;
}
// Scan all Release Dates.
private function getReleaseDates($html){
$releaseDates = array();
foreach($this->match_all('/(.*?)<\/tr>/ms', $this->match('/Date<\/th><\/tr>(.*?)<\/table>/ms', $html, 1), 1) as $r) {
$country = trim(strip_tags($this->match('/ (.*?)<\/b><\/td>/ms', $r, 1)));
$date = trim(strip_tags($this->match('/ (.*?)<\/td>/ms', $r, 1)));
array_push($releaseDates, $country . " = " . $date);
}
return array_filter($releaseDates);
}
// Scan all AKA Titles.
private function getAkaTitles($html){
$akaTitles = array();
foreach($this->match_all('/ (.*?)<\/tr>/msi', $this->match('/Also Known As(.*?)<\/table>/ms', $html, 1), 1) as $m) {
$akaTitleMatch = $this->match_all('/ (.*?)<\/td>/ms', $m, 1);
$akaTitle = trim($akaTitleMatch[0]);
$akaCountry = trim($akaTitleMatch[1]);
array_push($akaTitles, $akaTitle . " = " . $akaCountry);
}
return array_filter($akaTitles);
}
// Collect all Media Images.
private function getMediaImages($titleId){
$url = "http://www.imdb.com/title/" . $titleId . "/mediaindex";
$html = $this->geturl($url);
$media = array();
$media = array_merge($media, $this->scanMediaImages($html));
foreach($this->match_all('//ms', $this->match('/(.*?)<\/span>/ms', $html, 1), 1) as $p) {
$html = $this->geturl($url . "?page=" . $p);
$media = array_merge($media, $this->scanMediaImages($html));
}
return $media;
}
// Scan all media images.
private function scanMediaImages($html){
$pics = array();
foreach($this->match_all('/src="(.*?)"/ms', $this->match('/