Récupérer automatiquement les informations IMDB à partir de PHP
Petit programme ludique ce week-end. En effet, je vous propose un petit programme PHP pour récupérer les informations d’un film en utilisant OMDb API. Le titre de cet article est donc un peu racoleur puisque nous ne nous connectons pas à IMDB mais à l’API OMDB, un service Web gratuit pour obtenir des informations de film. Tout le contenu et les images du site sont apportés et entretenus par les utilisateurs. OMDB propose tout de même une base complète et j’imagine que les administrateurs du site s’appuient sur les OpenData IMDB pour alimenter leur base.
L’accès à cette base est un jeu d’enfant.
Pour chercher un film, il suffit d’utilise l’URL suivante :
Ce qui retourne une chaîne json :
Maitenant nous allons mettre tout ça dans un petit programme PHP tout simple.
Nous allons utiliser les fonction file_get_contents et json_decode :
Ce qui nous donne :
Maintenant, nous allons nous amuser (chacun sa façon de s'amuser!) à télécharger cette image pour, par exemple, la stocker en local.
Pour le coup c’est encore un jeu d’enfant :
Et voila, simple non ?
J'utilise la fonction php curl_init pour récupérer le contenu de l'url de l'image (cette fonction nécessite la bibliothèque php-curl - apt-get install php5-curl sous Debian). Notez également la méthode que j'utilise pour nommer le fichier de sortie. J'utilise la fonction PHP md5 pour créer une chaine à partir des mots recherchés. Cela me permet de stocker un fichier nommé 465s4fd65489r7464.jpg plutôt que le titre d'un film comprenant des espaces et caractères spéciaux. C'est une petite astuce de développeur chevronné. Ne me remerciez pas, c'est cadeau !
1 |
http://www.omdbapi.com/?t=kung+fu+panda+3&y=&plot=short&r=json |
1 |
{"Title":"Kung Fu Panda 3","Year":"2016","Rated":"PG","Released":"29 Jan 2016","Runtime":"95 min","Genre":"Animation, Action, Adventure","Director":"Alessandro Carloni, Jennifer Yuh Nelson","Writer":"Jonathan Aibel, Glenn Berger","Actors":"Jack Black, Bryan Cranston, Dustin Hoffman, Angelina Jolie","Plot":"Continuing his \"legendary adventures of awesomeness\", Po must face two hugely epic, but different threats: one supernatural and the other a little closer to his home.","Language":"English, Mandarin","Country":"USA, China","Awards":"2 nominations.","Poster":"http://ia.media-imdb.com/images/M/MV5BMTUyNzgxNjg2M15BMl5BanBnXkFtZTgwMTY1NDI1NjE@._V1_SX300.jpg","Metascore":"66","imdbRating":"7.3","imdbVotes":"48,589","imdbID":"tt2267968","Type":"movie","Response":"True"} |
1 2 3 4 5 6 7 8 9 10 11 12 |
$recherche="kung fu panda 3"; $url = "http://www.omdbapi.com/?t=".urlencode($recherche)."&y=&plot=short&r=json"; $json_response = file_get_contents($url); $object_response = json_decode($json_response); $poster_url=""; if(!is_null($object_response) && isset($object_response->Poster)) { $poster_url = $object_response->Poster; echo $poster_url."\n"; } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
if ( $poster_url ) { $file_out=md5($recherche); $ch = curl_init($poster_url); $fp = fopen("/var/www/down/poster/".$file_out.".jpg", 'wb'); curl_setopt($ch, CURLOPT_FILE, $fp); curl_setopt($ch, CURLOPT_HEADER, 0); curl_exec($ch); curl_close($ch); fclose($fp); echo "<img src='poster/".$file_out.".jpg'>"; } |