giovedì 31 marzo 2016

Come usare le api di imdb

Tags

Forse non tutti sanno che il famoso sito IMDB -  internet movie database, offre la possibilità di poter usare delle api per accingere dal suo immenso database di film, attori e tutto ciò che riguarda il cinema.


Come usare le api di imdb


In primis, bisogna dire che imdb offre la possibilità di usare i suoi dati solo per scopi non commerciali.
http://www.imdb.com/help/show_leaf?usedatasoftware
Quindi se volete creare un'app per voi stessi o da offrire gratis ok, ma se invece volete venderla e farci soldi, non potete farlo.

Fatta questa premessa, le api di imdb, o meglio, ciò che imdb attualmente offre, è la possibilità di fare una query sul suo database tramite una chiamata web.

I risultati della ricerca su imdb saranno in formato xml o json.

L'url da chiamare dal vostro programma/sito web sarà una cosa del genere:
http://www.imdb.com/xml/find?json=1&tt=on&q=PAROLA+DA+CERCARE

Dove i possibili parametri da passare tramite url saranno:
  • json=1 - restituisce i risultati in formato json
  • xml=1 - restituisce i risultati in formato xml
  • tt=on - ricerca per titolo del film
  • nm=on - ricerca per nome personaggio
  • q=parola+da+cercare - parola/e da cercare, con il "+" come separatore al posto degli spazi  
  • nr=1 - questa non la so, ma potete anche ometterla :p

Quindi ad esempio, se voleste creare uno script in php per pescare i dati da imdb, potreste fare ad esempio una ricerca per titolo in questo modo:

<?php
    $url="http://www.imdb.com/xml/find?json=1&tt=on&q=commando";
    $risultato = file_get_contents($url);
    echo $risultato;
?>


Il risultato della ricerca php sarà una lista di id, titoli ed altri dati base da trattare e ripulire.
Qualcosa del genere, nel caso del json:
{"title_popular": [{ "id":"tt0088944", "title":"Commando", 
"name":"","title_description":"1985, <a href='/name/nm0504495/'>Mark 
L. Lester</a>","episode_title":"","description":"1985, 
<a href='/name/nm0504495/'>Mark L. Lester</a>"},{ "id":"tt1899353", 
"title":"The Raid: Redemption", "name":"","title_description":"2011, 
","episode_title":"","description":"2011, "}...ecc...]}

Quindi nella vostra pagina php (o quello che è), potrete ad esempio creare una lista di risultati con il titolo e l'anno, dove poter cliccare per finire direttamente sul sito di imdb, passandogli l'id e componendo l'url in questo modo:
http://www.imdb.com/title/tt0088944/

Immagino che non vi basti estrapolare una lista di titoli di film da imdb e poi linkare al loro sito.
Purtroppo però, imdb api sembra offrire solo questo tipo di ricerca.
Non c'è quindi un'altra pagina imdb da chiamare passandogli l'id e ricevendo come risultato i dettagli del film (titolo, regista, attori, trama, locandina, ecc...)... o almeno io non ho trovato nessuna documentazione in merito.
Quindi, se volete estrapolare i dati da imdb, dovrete farlo a manina con qualche script php, usando ad esempio il metodo descritto qui :p

C'è però un sito che fa il lavoro al posto nostro, il suo nome è OMDb API - The Open Movie Database:
http://www.omdbapi.com

OMDb sostanzialmente si interfaccia con le api di imdb e vi mostra lui stesso i risultati che cercate, filtrando tramite un po' più di parametri.
Passando ad esempio titolo e anno, potrete estrapolare l'id del film che cercate, e poi cercando nuovamente per id potrete ottenere tutti i dettagli principali del film in questione, compresa la trama (in inglese però).
Se però volete la locandina/poster, temo che si debba pagare.

Un esempio pratico: cerchiamo per titolo e l'anno il film robocop del 1987:
http://www.omdbapi.com/?t=robocop&y=1987&plot=full&r=json
Riceverete un risultato del genere:
{"Title":"RoboCop","Year":"1987","Rated":"R","Released":"17 Jul 1987","Runtime":"102 min","Genre":"Action, Crime, Sci-Fi","Director":"Paul Verhoeven","Writer":"Edward Neumeier, Michael Miner","Actors":"Peter Weller,  ... ecc...
Che già volendo potrebbe bastarvi come risultato, in quanto contiene anche la trama, il regista, l'anno, il cast, ovvero tutti i dati principali del film.
La ricerca per id invece si fa con un url del genere:
http://www.omdbapi.com/?i=tt0093870&plot=short&r=json

Tutti i parametri usabili da omdb li trovate direttamente sul sito:
http://www.omdbapi.com/#parameters

Per quanto io preferisca interfacciarmi direttamente con imdb tramite uno script php che interroga le imdb api, la soluzione omdb è attualmente la più veloce e pratica.

Piaciuto l'articolo? Lascia un commento!

EmoticonEmoticon