I dati IMDb via REST: la risposta breve

IMDb non ha un'API REST generica gratuita. I suoi dataset non commerciali sono file da scaricare e l'accesso commerciale è su licenza, quindi controlla la loro documentazione per le condizioni attuali. Se vuoi chiamare un endpoint HTTP con un ID IMDb e ricevere JSON, amodb lo fa con un piano a pagamento. Se il tuo contratto richiede dati concessi in licenza da IMDb stessa, quell'accordo si stipula con IMDb e amodb non lo sostituisce.

Come usare un ID IMDb su amodb

Cinque chiamate coprono la maggior parte dei casi. Ognuna parte da un ID che hai già o ne restituisce uno.

Hai o vuoiChiamataOttieni
Un titolo da un ID IMDbGET /3/find/tt0137523?external_source=imdb_idGli array movie_results, tv_results, person_results
L'ID IMDb di un filmGET /3/movie/550, campo imdb_idtt0137523 per Fight Club
L'ID IMDb di una serieGET /3/tv/1396/external_idsimdb_id accanto all'ID TVDB
Il punteggio IMDbGET /3/movie/550/ratingsimdb con value e votes, oppure null
Una scheda in stile OMDbGET /omdb/?i=tt0137523imdbRating, imdbVotes, imdbID

Ogni riga funziona con la stessa chiave. Le valutazioni sono descritte nella pagina valutazioni e le ricerche per ID nella pagina ricerca per ID esterno.

Leggere il punteggio IMDb

L'endpoint delle valutazioni restituisce insieme il punteggio e il numero di voti. Questa è una risposta reale per Fight Club (id 550). I punteggi cambiano nel tempo.

JSON
{
  "id": 550,
  "imdb": {
    "value": 8.8,
    "votes": 2669989
  },
  "kinopoisk": {
    "value": 8.7,
    "votes": null
  },
  "metacritic": {
    "value": 67,
    "votes": null
  },
  "rotten_tomatoes": {
    "value": 81,
    "votes": null
  },
  "tmdb": {
    "value": 8.437,
    "votes": 33039
  }
}

Per IMDb il value è su una scala da 0 a 10 con un decimale. Mostra il numero di voti accanto e non mostrare nulla quando l'oggetto è null. In questa risposta solo IMDb e TMDB hanno i voti. votes può essere null per qualsiasi fonte, quindi controllalo prima di mostrarlo. Una risposta in cache resta valida 6 ore sull'edge, quindi interrogare più spesso non serve a nulla.

Confronto delle funzionalità

FunzionalitàIMDbamodb
Modello di prezzoAccesso commerciale su licenza, vedi la loro documentazionePrepagato, da 1 a 24 mesi
Piano gratuitoNessuna API REST generica gratuitaNessuno, e nessuna prova
AutenticazioneVedi la loro documentazioneParametro di query api_key o header Bearer
Formato della rispostaFile di dataset da scaricare, per i feed su licenza vedi la loro documentazioneJSON
LingueVedi la loro documentazione14 lingue dell'interfaccia
FilmPer i campi vedi la loro documentazioneDettagli, crediti, immagini, video
Serie TVPer i campi vedi la loro documentazioneSerie, stagioni, episodi
PersonePer i campi vedi la loro documentazioneProfili, filmografia, immagini
ImmaginiVedi la loro documentazioneimg.amodb.dev, senza chiave
ValutazioniUn punteggio proprio, per l'accesso vedi la loro documentazioneCinque fonti, tra cui IMDb, quando sono note
Limite di richiesteVedi la loro documentazione20, 40 o 120 richieste al minuto
Uso commercialeSu licenza, vedi la loro documentazionePiani a pagamento, vedi i prezzi
CompatibilitàFormati propri, vedi la loro documentazioneLetture TMDB v3 e protocollo OMDb

Dove amodb è diverso

Chiami un endpoint invece di analizzare un file. Una sola richiesta restituisce un titolo con cast, trailer e valutazioni grazie a append_to_response, e la struttura dei dati segue TMDB v3, quindi le librerie client esistenti funzionano. La stessa chiave serve l'endpoint in stile OMDb, che mantiene in funzione il codice più vecchio che legge imdbRating.

Il blocco delle valutazioni è un oggetto fisso con cinque chiavi. Una fonte non nota vale null, la chiave non sparisce: il codice che legge ratings.imdb non ha bisogno di controllare l'esistenza dell'oggetto padre. Accanto al valore può esserci il numero di voti, che permette di nascondere un punteggio basato su pochi voti. Anche questo può essere null, come accade per tre delle cinque fonti nell'esempio qui sopra.

Dove IMDb è più adatto

  • L'origine del punteggio. IMDb pubblica per prima le proprie valutazioni. amodb restituisce un valore solo quando è noto, quindi un titolo nuovo o poco diffuso può tornare con null.
  • Le funzioni del sito. Recensioni degli utenti, liste e watchlist vivono sul sito di IMDb. amodb è un'API di metadati e non offre account utente.
  • I dati su licenza. Se un partner o un contratto richiede dati concessi in licenza da IMDb, solo IMDb può fornirli.
  • L'analisi offline. I file dei dataset non commerciali sono adatti alla ricerca su grandi volumi che esegui sulla tua macchina. Per le condizioni controlla la loro documentazione.

Migrare ad amodb

Con ogni probabilità hai un elenco di ID IMDb. Associa ognuno a un ID amodb una sola volta, salva la coppia e poi chiama i dettagli con l'ID numerico.

bashpy
curl -s "https://api.amodb.dev/3/find/tt0133093?external_source=imdb_id" \
  -H "Authorization: Bearer $AMODB_KEY"
import os
import requests

KEY = os.environ["AMODB_KEY"]
imdb_ids = ["tt0137523", "tt0133093", "tt1375666"]

for imdb_id in imdb_ids:
    r = requests.get(
        f"https://api.amodb.dev/3/find/{imdb_id}",
        params={"external_source": "imdb_id"},
        headers={"Authorization": f"Bearer {KEY}"},
        timeout=10,
    )
    r.raise_for_status()
    hits = r.json()["movie_results"]
    print(imdb_id, hits[0]["id"] if hits else None)

I tre ID qui sopra corrispondono a 550, 603 e 27205, cioè Fight Club, The Matrix e Inception. Un ID di serie come tt0903747 torna in tv_results, dove Breaking Bad ha l'id 1396. Un array vuoto significa che per quell'ID non è stata trovata alcuna corrispondenza.

Dai un ritmo al ciclo. Ogni ID è una richiesta, e una risposta 429 include un header Retry-After con i secondi da attendere. Vedi gli errori per gli altri codici.

Salvare gli ID in modo sicuro

  • Conserva gli ID IMDb come stringhe. Iniziano con tt e hanno zeri iniziali, come in tt0137523, mentre un tipo numerico elimina quegli zeri.
  • Salva l'ID IMDb e l'ID amodb come coppia. Uno qualsiasi dei due permette di ritrovare il titolo.
  • Leggi tv_results per le serie e movie_results per i film. Un singolo ID di norma riempie un solo array e lascia vuoti gli altri.
  • Da quel momento richiedi i dettagli con l'ID amodb, perché una chiamata ai dettagli può includere cast, trailer e valutazioni grazie a append_to_response.

Prezzi

Scegli uno dei tre piani da 20, 40 o 120 richieste al minuto e paga in anticipo per 1, 3, 6, 12 o 24 mesi. I periodi più lunghi ottengono uno sconto del 10, 20, 30 o 40 per cento. Tutti i piani restituiscono gli stessi dati, nulla si rinnova da solo e non esiste un piano gratuito. Vedi i prezzi per gli importi.