├── README ├── example.php └── imdbapi.class.php /README: -------------------------------------------------------------------------------- 1 | PHP IMDb API 2 | ======== 3 | 4 | This is a php class for being able to use the IMDb api (not web scraping) 5 | 6 | 7 | ## How it works 8 | 9 | Decompiled the android app from IMDB to be how their API calls worked. 10 | This class replicates these calls including appending the keys and looking like a regular android device querying. 11 | To see this api at work, enable tot he $debug by setting it to TRUE 12 | -------------------------------------------------------------------------------- /example.php: -------------------------------------------------------------------------------- 1 | isReady){ 21 | 22 | $imdb_api = array(); 23 | $imdb_api['castArray'] = $imdb->getCastArray(); 24 | 25 | // Check to see if the media is a movie or tv series 26 | if ($imdb->isTvShow()) { 27 | $imdb_api['creators'] = $imdb->getCreatorArray(); 28 | } else if ($imdb->isVideo()) { 29 | $imdb_api['directorArray'] = $imdb->getDirectorArray(); 30 | } 31 | 32 | $imdb_api['genreArray'] = $imdb->getGenreArray(); 33 | $imdb_api['genreString'] = $imdb->getGenreString(); 34 | $imdb_api['mpaa'] = $imdb->getMpaa(); 35 | $imdb_api['description'] = $imdb->getDescription(); 36 | $imdb_api['plot'] = $imdb->getPlot(); 37 | $imdb_api['imdbID'] = $imdb->getImdbID(); 38 | $imdb_api['imdbURL'] = $imdb->getUrl(); 39 | $imdb_api['poster'] = $imdb->getPoster(); 40 | $imdb_api['rating'] = $imdb->getRating(); 41 | $imdb_api['runtime'] = $imdb->getRuntime(); 42 | $imdb_api['title'] = $imdb->getTitle(); 43 | $imdb_api['AKA'] = $imdb->getAka(); 44 | $imdb_api['languagesArray'] = $imdb->getLanguagesArray(); 45 | $imdb_api['languagesString'] = $imdb->getLanguagesString(); 46 | $imdb_api['trailer'] = $imdb->getTrailer(); 47 | $imdb_api['isTV'] = $imdb->isTvShow(); 48 | $imdb_api['type'] = $imdb->getType(); 49 | $imdb_api['year'] = $imdb->getYear(); 50 | $imdb_api['userComments'] = $imdb->getUserComments(); 51 | $imdb_api['parentalGuide'] = $imdb->getParentalGuide(); 52 | 53 | echo "
";
54 | 	print_r($imdb_api);
55 | 	echo "
"; 56 | 57 | }else{ 58 | echo $imdb->status; 59 | } 60 | 61 | 62 | ?> 63 | -------------------------------------------------------------------------------- /imdbapi.class.php: -------------------------------------------------------------------------------- 1 | language = $language; 18 | $this->timeOut = $timeOut; 19 | $this->input = $input; 20 | $this->data = $this->getMovieDetails(); 21 | $this->data = $this->data['data']; 22 | if (isset($this->data['error'])) { 23 | $this->isReady = false; 24 | $this->status = $this->data['error']['message']; 25 | } else { 26 | $this->isReady = true; 27 | $this->status = 'OK'; 28 | } 29 | } 30 | 31 | /** 32 | * GET request to IMDB 33 | * 34 | * @param string $url 35 | * 36 | * @return mixed 37 | */ 38 | private function get_data($url) { 39 | 40 | if ($this->debug) 41 | echo $url . "\n"; 42 | 43 | $ch = curl_init(); 44 | curl_setopt($ch, CURLOPT_URL, $url); 45 | curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 46 | curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $this->timeOut); 47 | curl_setopt($ch, CURLOPT_USERAGENT, $this->userAgent); 48 | $data = curl_exec($ch); 49 | curl_close($ch); 50 | return json_decode($data, true); 51 | } 52 | 53 | private function saveImage($imgURL) { 54 | //Saved the image to 'attachments/_posters/' . $this->_strId . '.jpg'; 55 | } 56 | 57 | /** 58 | * Returns the current time 59 | * @return string 60 | */ 61 | private function getTimeStamp() { 62 | return time(); 63 | } 64 | 65 | private function getAPIURL($func) { 66 | $url = $this->apiURL . $func . "appid=" . $this->appID . "&device=" . $this->device . "&locale=" . $this->language . "×tamp=" . $this->getTimeStamp() . "&sig=" . $this->sig; 67 | $sig_hash = hash_hmac('sha1', $url, $this->key); 68 | $url .= "-" . $sig_hash; 69 | return $url; 70 | } 71 | 72 | private function doCurl($strUrl, $bolOverWriteSource = TRUE) { 73 | if ($this->debug) 74 | echo $strUrl . "\n"; 75 | $oCurl = curl_init($strUrl); 76 | $lang_parts = explode("_", $this->language); 77 | curl_setopt_array($oCurl, array( 78 | CURLOPT_VERBOSE => FALSE, 79 | CURLOPT_HEADER => TRUE, 80 | CURLOPT_HTTPHEADER => array( 81 | 'Accept-Language: ' . str_replace("_", "-", $this->language) . ", " . $lang_parts[1] . ';q=0.5' 82 | ), 83 | CURLOPT_FRESH_CONNECT => TRUE, 84 | CURLOPT_RETURNTRANSFER => TRUE, 85 | CURLOPT_TIMEOUT => $this->timeOut, 86 | CURLOPT_CONNECTTIMEOUT => 0, 87 | CURLOPT_REFERER => 'http://www.google.com', 88 | CURLOPT_USERAGENT => 'Googlebot/2.1 (+http://www.google.com/bot.html)', 89 | CURLOPT_FOLLOWLOCATION => FALSE, 90 | CURLOPT_COOKIEFILE => FALSE 91 | )); 92 | return curl_exec($oCurl); 93 | } 94 | 95 | private function matchRegex($strContent, $strRegex, $intIndex = NULL) { 96 | $arrMatches = FALSE; 97 | preg_match_all($strRegex, $strContent, $arrMatches); 98 | if ($arrMatches === FALSE) 99 | return FALSE; 100 | if ($intIndex != NULL && is_int($intIndex)) { 101 | if ($arrMatches[$intIndex]) { 102 | return $arrMatches[$intIndex][0]; 103 | } 104 | return FALSE; 105 | } 106 | return $arrMatches; 107 | } 108 | 109 | private function removeAccents($string) { 110 | if (!preg_match('/[\x80-\xff]/', $string)) 111 | return $string; 112 | 113 | $chars = array( 114 | // Decompositions for Latin-1 Supplement 115 | chr(195) . chr(128) => 'A', chr(195) . chr(129) => 'A', 116 | chr(195) . chr(130) => 'A', chr(195) . chr(131) => 'A', 117 | chr(195) . chr(132) => 'A', chr(195) . chr(133) => 'A', 118 | chr(195) . chr(135) => 'C', chr(195) . chr(136) => 'E', 119 | chr(195) . chr(137) => 'E', chr(195) . chr(138) => 'E', 120 | chr(195) . chr(139) => 'E', chr(195) . chr(140) => 'I', 121 | chr(195) . chr(141) => 'I', chr(195) . chr(142) => 'I', 122 | chr(195) . chr(143) => 'I', chr(195) . chr(145) => 'N', 123 | chr(195) . chr(146) => 'O', chr(195) . chr(147) => 'O', 124 | chr(195) . chr(148) => 'O', chr(195) . chr(149) => 'O', 125 | chr(195) . chr(150) => 'O', chr(195) . chr(153) => 'U', 126 | chr(195) . chr(154) => 'U', chr(195) . chr(155) => 'U', 127 | chr(195) . chr(156) => 'U', chr(195) . chr(157) => 'Y', 128 | chr(195) . chr(159) => 's', chr(195) . chr(160) => 'a', 129 | chr(195) . chr(161) => 'a', chr(195) . chr(162) => 'a', 130 | chr(195) . chr(163) => 'a', chr(195) . chr(164) => 'a', 131 | chr(195) . chr(165) => 'a', chr(195) . chr(167) => 'c', 132 | chr(195) . chr(168) => 'e', chr(195) . chr(169) => 'e', 133 | chr(195) . chr(170) => 'e', chr(195) . chr(171) => 'e', 134 | chr(195) . chr(172) => 'i', chr(195) . chr(173) => 'i', 135 | chr(195) . chr(174) => 'i', chr(195) . chr(175) => 'i', 136 | chr(195) . chr(177) => 'n', chr(195) . chr(178) => 'o', 137 | chr(195) . chr(179) => 'o', chr(195) . chr(180) => 'o', 138 | chr(195) . chr(181) => 'o', chr(195) . chr(182) => 'o', 139 | chr(195) . chr(182) => 'o', chr(195) . chr(185) => 'u', 140 | chr(195) . chr(186) => 'u', chr(195) . chr(187) => 'u', 141 | chr(195) . chr(188) => 'u', chr(195) . chr(189) => 'y', 142 | chr(195) . chr(191) => 'y', 143 | // Decompositions for Latin Extended-A 144 | chr(196) . chr(128) => 'A', chr(196) . chr(129) => 'a', 145 | chr(196) . chr(130) => 'A', chr(196) . chr(131) => 'a', 146 | chr(196) . chr(132) => 'A', chr(196) . chr(133) => 'a', 147 | chr(196) . chr(134) => 'C', chr(196) . chr(135) => 'c', 148 | chr(196) . chr(136) => 'C', chr(196) . chr(137) => 'c', 149 | chr(196) . chr(138) => 'C', chr(196) . chr(139) => 'c', 150 | chr(196) . chr(140) => 'C', chr(196) . chr(141) => 'c', 151 | chr(196) . chr(142) => 'D', chr(196) . chr(143) => 'd', 152 | chr(196) . chr(144) => 'D', chr(196) . chr(145) => 'd', 153 | chr(196) . chr(146) => 'E', chr(196) . chr(147) => 'e', 154 | chr(196) . chr(148) => 'E', chr(196) . chr(149) => 'e', 155 | chr(196) . chr(150) => 'E', chr(196) . chr(151) => 'e', 156 | chr(196) . chr(152) => 'E', chr(196) . chr(153) => 'e', 157 | chr(196) . chr(154) => 'E', chr(196) . chr(155) => 'e', 158 | chr(196) . chr(156) => 'G', chr(196) . chr(157) => 'g', 159 | chr(196) . chr(158) => 'G', chr(196) . chr(159) => 'g', 160 | chr(196) . chr(160) => 'G', chr(196) . chr(161) => 'g', 161 | chr(196) . chr(162) => 'G', chr(196) . chr(163) => 'g', 162 | chr(196) . chr(164) => 'H', chr(196) . chr(165) => 'h', 163 | chr(196) . chr(166) => 'H', chr(196) . chr(167) => 'h', 164 | chr(196) . chr(168) => 'I', chr(196) . chr(169) => 'i', 165 | chr(196) . chr(170) => 'I', chr(196) . chr(171) => 'i', 166 | chr(196) . chr(172) => 'I', chr(196) . chr(173) => 'i', 167 | chr(196) . chr(174) => 'I', chr(196) . chr(175) => 'i', 168 | chr(196) . chr(176) => 'I', chr(196) . chr(177) => 'i', 169 | chr(196) . chr(178) => 'IJ', chr(196) . chr(179) => 'ij', 170 | chr(196) . chr(180) => 'J', chr(196) . chr(181) => 'j', 171 | chr(196) . chr(182) => 'K', chr(196) . chr(183) => 'k', 172 | chr(196) . chr(184) => 'k', chr(196) . chr(185) => 'L', 173 | chr(196) . chr(186) => 'l', chr(196) . chr(187) => 'L', 174 | chr(196) . chr(188) => 'l', chr(196) . chr(189) => 'L', 175 | chr(196) . chr(190) => 'l', chr(196) . chr(191) => 'L', 176 | chr(197) . chr(128) => 'l', chr(197) . chr(129) => 'L', 177 | chr(197) . chr(130) => 'l', chr(197) . chr(131) => 'N', 178 | chr(197) . chr(132) => 'n', chr(197) . chr(133) => 'N', 179 | chr(197) . chr(134) => 'n', chr(197) . chr(135) => 'N', 180 | chr(197) . chr(136) => 'n', chr(197) . chr(137) => 'N', 181 | chr(197) . chr(138) => 'n', chr(197) . chr(139) => 'N', 182 | chr(197) . chr(140) => 'O', chr(197) . chr(141) => 'o', 183 | chr(197) . chr(142) => 'O', chr(197) . chr(143) => 'o', 184 | chr(197) . chr(144) => 'O', chr(197) . chr(145) => 'o', 185 | chr(197) . chr(146) => 'OE', chr(197) . chr(147) => 'oe', 186 | chr(197) . chr(148) => 'R', chr(197) . chr(149) => 'r', 187 | chr(197) . chr(150) => 'R', chr(197) . chr(151) => 'r', 188 | chr(197) . chr(152) => 'R', chr(197) . chr(153) => 'r', 189 | chr(197) . chr(154) => 'S', chr(197) . chr(155) => 's', 190 | chr(197) . chr(156) => 'S', chr(197) . chr(157) => 's', 191 | chr(197) . chr(158) => 'S', chr(197) . chr(159) => 's', 192 | chr(197) . chr(160) => 'S', chr(197) . chr(161) => 's', 193 | chr(197) . chr(162) => 'T', chr(197) . chr(163) => 't', 194 | chr(197) . chr(164) => 'T', chr(197) . chr(165) => 't', 195 | chr(197) . chr(166) => 'T', chr(197) . chr(167) => 't', 196 | chr(197) . chr(168) => 'U', chr(197) . chr(169) => 'u', 197 | chr(197) . chr(170) => 'U', chr(197) . chr(171) => 'u', 198 | chr(197) . chr(172) => 'U', chr(197) . chr(173) => 'u', 199 | chr(197) . chr(174) => 'U', chr(197) . chr(175) => 'u', 200 | chr(197) . chr(176) => 'U', chr(197) . chr(177) => 'u', 201 | chr(197) . chr(178) => 'U', chr(197) . chr(179) => 'u', 202 | chr(197) . chr(180) => 'W', chr(197) . chr(181) => 'w', 203 | chr(197) . chr(182) => 'Y', chr(197) . chr(183) => 'y', 204 | chr(197) . chr(184) => 'Y', chr(197) . chr(185) => 'Z', 205 | chr(197) . chr(186) => 'z', chr(197) . chr(187) => 'Z', 206 | chr(197) . chr(188) => 'z', chr(197) . chr(189) => 'Z', 207 | chr(197) . chr(190) => 'z', chr(197) . chr(191) => 's' 208 | ); 209 | 210 | $string = strtr($string, $chars); 211 | 212 | return $string; 213 | } 214 | 215 | private function getMovieDetails() { 216 | 217 | //check if input was ID or name 218 | if (preg_match('~(\d{6,})~', $this->input, $result)) { 219 | if ($this->debug) 220 | echo "Doing movie details call\n"; 221 | $this->ImdbId = 'tt' . $result[0]; 222 | $url = $this->getAPIURL("title/tt" . $result[0] . "/maindetails?"); 223 | }else { 224 | if ($this->debug) 225 | echo "Trying to find ImdbID\n"; 226 | $url = $this->getAPIURL("find?q=" . urlencode($this->input) . "&"); 227 | $search_result = $this->get_data($url); 228 | if ($this->debug) 229 | echo "Doing movie details call\n"; 230 | $this->ImdbId = $search_result['data']['results'][0]['list'][0]['tconst']; 231 | $url = $this->getAPIURL("title/" . $search_result['data']['results'][0]['list'][0]['tconst'] . "/maindetails?"); 232 | } 233 | 234 | return $this->get_data($url); 235 | } 236 | 237 | public function getUserComments($limit = 5) { 238 | 239 | $url = $this->getAPIURL("title/usercomments?tconst=" . $this->ImdbId . "&limit=" . $limit . "&"); 240 | $userCommentData = $this->get_data($url); 241 | $userComments = array(); 242 | if(isset($userCommentData['data']['user_comments'])){ 243 | foreach ($userCommentData['data']['user_comments'] as $comment) { 244 | $comment['text'] = $this->removeAccents($comment['text']); 245 | $userComments[] = $comment; 246 | } 247 | } 248 | 249 | return $userComments; 250 | } 251 | 252 | public function getParentalGuide() { 253 | 254 | $url = $this->getAPIURL("title/parentalguide?tconst=" . $this->ImdbId . "&"); 255 | $parentalGuideData = $this->get_data($url); 256 | $parentalGuide = array(); 257 | if(isset($parentalGuideData['data']['parental_guide'])){ 258 | foreach ($parentalGuideData['data']['parental_guide'] as $guide) { 259 | 260 | $guide['text'] = $this->removeAccents($guide['text']); 261 | $parentalGuide[] = $guide; 262 | } 263 | } 264 | return $parentalGuide; 265 | } 266 | 267 | private function getScrape() { 268 | 269 | if (!isset($this->_strSource) || $this->_strSource == null || $this->_strSource == "") { 270 | $this->_strSource = $this->doCurl($this->getUrl()); 271 | } 272 | 273 | return $this->_strSource; 274 | } 275 | 276 | //Get IMDB api return data 277 | public function getImdbResponce() { 278 | return $this->data; 279 | } 280 | 281 | public function getAka() { 282 | if ($strReturn = $this->matchRegex($this->getScrape(), '~Also Known As:(.*)matchRegex($this->getScrape(), '~href="/language/(?:.*)itemprop=\'url\'>(.*)~Uis'); 291 | if (count($arrReturned[1])) { 292 | foreach ($arrReturned[1] as $strName) { 293 | $arrReturn[] = trim($strName); 294 | } 295 | return $arrReturn; 296 | } else { 297 | return array("N/A"); 298 | } 299 | } 300 | 301 | public function getTrailer() { 302 | $YoutTubeSearchQuery = urlencode($this->getTitle() . " " . $this->getYear() . " trailer"); 303 | $YoutTubeSearchQuery = preg_replace('/[^A-Za-z0-9]\+/', '', $YoutTubeSearchQuery); 304 | $YouTubeURL = "https://www.youtube.com/results?search_query=" . $YoutTubeSearchQuery; 305 | $YouTubeHTML = $this->doCurl($YouTubeURL); 306 | return $this->matchRegex($YouTubeHTML, '~href="/watch\?v=(.*)"~Uis', 1); 307 | } 308 | 309 | public function getLanguagesString() { 310 | return implode(" | ", $this->getLanguagesArray()); 311 | } 312 | 313 | public function getLanguages() { 314 | $arr = array(); 315 | $arrr = $this->getLanguagesArray(); 316 | for ($i = 0; $i < 2; $i++) { 317 | $arr[] = $arrr[$i]; 318 | } 319 | if (count($arr) > 1) 320 | return "N/A"; 321 | if (count($arr) == 1) 322 | return $arr[0]; 323 | 324 | return implode(" | ", $arr); 325 | } 326 | 327 | public function getCastArray() { 328 | $cast_list = array(); 329 | if(isset($this->data['cast_summary'])){ 330 | foreach ($this->data['cast_summary'] as $cast) { 331 | $img = isset($cast['name']['image']['url']) ? $cast['name']['image']['url'] : 'n/a'; 332 | $cast['char'] = isset($cast['char']) ? $cast['char'] : 'Unknown'; 333 | $cast_list[] = array('name' => $this->removeAccents($cast['name']['name']), 'id' => $cast['name']['nconst'], 'url' => 'http://www.imdb.com/name/' . $cast['name']['nconst'] . '/', 'image' => $img, 'character' => $this->removeAccents($cast['char'])); 334 | } 335 | } 336 | return $cast_list; 337 | } 338 | 339 | public function getDirectorArray() { 340 | $dir_array = array(); 341 | foreach ($this->data['directors_summary'] as $director) { 342 | $img = isset($director['name']['image']['url']) ? $director['name']['image']['url'] : 'n/a'; 343 | $dir_array[] = array('name' => $this->removeAccents($director['name']['name']), 'id' => $director['name']['nconst'], 'url' => 'http://www.imdb.com/name/' . $director['name']['nconst'] . '/', 'image' => $img); 344 | } 345 | return $dir_array; 346 | } 347 | 348 | // Used to return the creators of a TV Show 349 | public function getCreatorArray() { 350 | if (!$this->isTvShow()) { 351 | return []; 352 | } 353 | $creators_array = []; 354 | 355 | foreach ($this->data['creators'] as $creator) { 356 | 357 | $img = isset($creator['name']['image']['url']) ? $creator['name']['image']['url'] : 'n/a'; 358 | 359 | $creators_array[] = ['name' => $this->removeAccents($creator['name']['name']), 360 | 'id' => $creator['name']['nconst'], 361 | 'url' => 'http://www.imdb.com/name/' . $creator['name']['nconst'] . '/', 362 | 'image' => $img 363 | ]; 364 | } 365 | return $creators_array; 366 | } 367 | 368 | //Can set the max amount of generes to return 369 | public function getGenreArray($max = 0) { 370 | if (is_int($max) && $max > 0) { 371 | $genre_array = array(); 372 | for ($i = 0; $i < $max; $i++) { 373 | $genre_array[] = $this->data['genres'][$i]; 374 | } 375 | } else { 376 | $genre_array = $this->data['genres']; 377 | } 378 | return $genre_array; 379 | } 380 | 381 | //Can set the max amount of generes to return 382 | public function getGenreString($max = 0) { 383 | return trim(implode(" | ", $this->getGenreArray($max)), " | "); 384 | } 385 | 386 | public function getGenre($max = 0) { 387 | return $this->getGenreString($max); 388 | } 389 | 390 | public function getMpaa() { 391 | return isset($this->data['certificate']['certificate']) ? $this->data['certificate']['certificate'] : 'N/A'; 392 | } 393 | 394 | //short description 395 | public function getDescription() { 396 | return isset($this->data['plot']['outline']) ? $this->data['plot']['outline'] : 'N/A'; 397 | } 398 | 399 | //long description 400 | public function getPlot() { 401 | if ($this->debug) 402 | echo "Doing movie plot call\n"; 403 | $json_res = $this->get_data($this->getAPIURL("title/plot?tconst=" . $this->ImdbId . "&")); 404 | return isset($json_res['data']['plots'][0]['text']) ? $json_res['data']['plots'][0]['text'] : $this->getDescription(); 405 | } 406 | 407 | public function getImdbID() { 408 | return $this->ImdbId; 409 | } 410 | 411 | public function getUrl() { 412 | return "http://www.imdb.com/title/" . $this->ImdbId . "/"; 413 | } 414 | 415 | public function getPoster() { 416 | if (isset($this->data['image']['url'])) 417 | return $this->data['image']['url']; 418 | 419 | if (isset($this->data['photos'][0]['image']['url'])) 420 | return $this->data['photos'][0]['image']['url']; 421 | 422 | return 'N/A'; 423 | } 424 | 425 | public function getRating() { 426 | return isset($this->data['rating']) ? number_format($this->data['rating'], 1) : 'N/A'; 427 | } 428 | 429 | public function getRuntime() { 430 | return isset($this->data['runtime']) ? ( $this->data['runtime']['time'] / 60 ) : 'N/A'; 431 | } 432 | 433 | public function getTitle() { 434 | return isset($this->data['title']) ? $this->data['title'] : 'N/A'; 435 | } 436 | 437 | //We want 'feature' for movie 438 | public function getType() { 439 | return isset($this->data['type']) ? $this->data['type'] : 'N/A'; 440 | } 441 | 442 | public function isTvShow() { 443 | return $this->getType() == 'tv_series' ? true : false; 444 | } 445 | 446 | public function isVideo() { 447 | return $this->getType() != 'feature' && $this->getType() == 'tv_series' ? true : false; 448 | } 449 | 450 | public function getYear() { 451 | return isset($this->data['year']) ? $this->data['year'] : 'N/A'; 452 | } 453 | 454 | public function getAll() { 455 | $oData = array(); 456 | $oData['castArray'] = $this->getCastArray(); 457 | $oData['directorArray'] = $this->getDirectorArray(); 458 | $oData['genreArray'] = $this->getGenreArray(); 459 | $oData['genreString'] = $this->getGenreString(); 460 | $oData['mpaa'] = $this->getMpaa(); 461 | $oData['description'] = $this->getDescription(); 462 | $oData['plot'] = $this->getPlot(); 463 | $oData['imdbID'] = $this->getImdbID(); 464 | $oData['imdbURL'] = $this->getUrl(); 465 | $oData['poster'] = $this->getPoster(); 466 | $oData['rating'] = $this->getRating(); 467 | $oData['runtime'] = $this->getRuntime(); 468 | $oData['title'] = $this->getTitle(); 469 | $oData['AKA'] = $this->getAka(); 470 | $oData['languagesArray'] = $this->getLanguagesArray(); 471 | $oData['languagesString'] = $this->getLanguagesString(); 472 | $oData['trailer'] = $this->getTrailer(); 473 | $oData['isTV'] = $this->isTvShow(); 474 | $oData['type'] = $this->getType(); 475 | $oData['year'] = $this->getYear(); 476 | $oData['userComments'] = $this->getUserComments(); 477 | $oData['parentalGuide'] = $this->getParentalGuide(); 478 | return $oData; 479 | } 480 | 481 | } 482 | 483 | ?> 484 | --------------------------------------------------------------------------------