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 vuoi | Chiamata | Ottieni |
|---|---|---|
| Un titolo da un ID IMDb | GET / | Gli array movie_results, tv_results, person_results |
| L'ID IMDb di un film | GET /3/movie/550, campo imdb_id | tt0137523 per Fight Club |
| L'ID IMDb di una serie | GET / | imdb_id accanto all'ID TVDB |
| Il punteggio IMDb | GET / | imdb con value e votes, oppure null |
| Una scheda in stile OMDb | GET /omdb/?i=tt0137523 | imdbRating, 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.
{
"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à | IMDb | amodb |
|---|---|---|
| Modello di prezzo | Accesso commerciale su licenza, vedi la loro documentazione | Prepagato, da 1 a 24 mesi |
| Piano gratuito | Nessuna API REST generica gratuita | Nessuno, e nessuna prova |
| Autenticazione | Vedi la loro documentazione | Parametro di query api_key o header Bearer |
| Formato della risposta | File di dataset da scaricare, per i feed su licenza vedi la loro documentazione | JSON |
| Lingue | Vedi la loro documentazione | 14 lingue dell'interfaccia |
| Film | Per i campi vedi la loro documentazione | Dettagli, crediti, immagini, video |
| Serie TV | Per i campi vedi la loro documentazione | Serie, stagioni, episodi |
| Persone | Per i campi vedi la loro documentazione | Profili, filmografia, immagini |
| Immagini | Vedi la loro documentazione | img.amodb.dev, senza chiave |
| Valutazioni | Un punteggio proprio, per l'accesso vedi la loro documentazione | Cinque fonti, tra cui IMDb, quando sono note |
| Limite di richieste | Vedi la loro documentazione | 20, 40 o 120 richieste al minuto |
| Uso commerciale | Su licenza, vedi la loro documentazione | Piani a pagamento, vedi i prezzi |
| Compatibilità | Formati propri, vedi la loro documentazione | Letture 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.
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
tte hanno zeri iniziali, come intt0137523, 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_resultsper le serie emovie_resultsper 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.