Date IMDb prin REST: răspunsul scurt
IMDb nu are un API REST general gratuit. Seturile sale de date necomerciale sunt fișiere descărcabile, iar accesul comercial se licențiază, așa că vezi documentația lor pentru termenii actuali. Dacă vrei să apelezi un endpoint HTTP cu un ID IMDb și să primești JSON, amodb face asta pe un plan cu plată. Dacă contractul tău cere date licențiate chiar de IMDb, acel acord este cu IMDb, iar amodb nu îl înlocuiește.
Moduri de a folosi un ID IMDb pe amodb
Cinci apeluri acoperă majoritatea nevoilor. Fiecare pornește de la un ID pe care îl ai deja sau se termină cu unul.
| Ai sau vrei | Apel | Primești |
|---|---|---|
| Un titlu dintr-un ID IMDb | GET / | Array-urile movie_results, tv_results, person_results |
| ID-ul IMDb al unui film | GET /3/movie/550, câmpul imdb_id | tt0137523 pentru Fight Club |
| ID-ul IMDb al unui serial | GET / | imdb_id lângă ID-ul TVDB |
| Scorul IMDb | GET / | imdb ca value și votes, sau null |
| O înregistrare în stil OMDb | GET /omdb/?i=tt0137523 | imdbRating, imdbVotes, imdbID |
Fiecare rând funcționează cu aceeași cheie. Evaluările sunt descrise pe pagina evaluări, iar căutările de ID pe căutare după ID extern.
Citește scorul IMDb
Endpoint-ul de evaluări întoarce scorul și numărul de voturi împreună. Acesta este un răspuns real pentru Fight Club (ID 550). Scorurile se schimbă în timp.
{
"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
}
}Pentru IMDb, value este pe o scară de la 0 la 10, cu o zecimală. Arată numărul de voturi lângă el și nu afișa nimic când obiectul este null. În acest răspuns doar IMDb și TMDB au voturi. votes poate fi null la orice sursă, așa că verifică-l înainte să-l afișezi. Un răspuns din cache rămâne valid 6 ore la margine, deci interogarea mai deasă nu aduce nimic.
Comparația funcțiilor
| Funcție | IMDb | amodb |
|---|---|---|
| Model de preț | Licențiat pentru acces comercial, vezi documentația lor | Plătit în avans, de la 1 la 24 de luni |
| Nivel gratuit | Niciun API REST general gratuit | Niciunul, și fără perioadă de probă |
| Autentificare | Vezi documentația lor | Parametrul de interogare api_key sau antetul Bearer |
| Format de răspuns | Fișiere de set de date descărcabile, vezi documentația lor pentru fluxurile licențiate | JSON |
| Limbi | Vezi documentația lor | 14 limbi de interfață |
| Filme | Vezi documentația lor pentru câmpuri | Detalii, credite, imagini, videoclipuri |
| TV | Vezi documentația lor pentru câmpuri | Seriale, sezoane, episoade |
| Persoane | Vezi documentația lor pentru câmpuri | Profiluri, filmografie, imagini |
| Imagini | Vezi documentația lor | img.amodb.dev, fără cheie |
| Evaluări | Scorul propriu, vezi documentația lor pentru acces | Cinci surse, printre ele IMDb, unde se știu |
| Limită de cereri | Vezi documentația lor | 20, 40 sau 120 de cereri pe minut |
| Utilizare comercială | Licențiată, vezi documentația lor | Planuri cu plată, vezi prețuri |
| Compatibilitate | Formate proprii, vezi documentația lor | Citiri TMDB v3 și protocolul OMDb |
Prin ce diferă amodb
Apelezi un endpoint în loc să analizezi un fișier. O singură cerere întoarce un titlu cu distribuția, trailerele și evaluările prin append_to_response, iar structura se potrivește cu TMDB v3, deci bibliotecile client existente funcționează. Aceeași cheie servește endpoint-ul în stil OMDb, ceea ce ține în funcțiune codul mai vechi care citește imdbRating.
Blocul de evaluări este un obiect fix cu cinci chei. O sursă necunoscută este null, nu o cheie lipsă, deci codul care citește ratings.imdb nu are nevoie de o verificare a existenței părintelui. Un număr de voturi poate sta lângă valoare, ceea ce te lasă să ascunzi un scor bazat pe puține voturi. Poate fi și null, cum este la trei dintre cele cinci surse din exemplul de mai sus.
Când IMDb se potrivește mai bine
- Originea scorului. IMDb își publică primul propriile evaluări. amodb întoarce o valoare doar unde se cunoaște, deci un titlu nou sau obscur poate veni
null. - Funcții de site. Recenziile utilizatorilor, listele și listele de urmărire se află pe site-ul IMDb. amodb este un API de metadate și nu oferă conturi de utilizator.
- Date licențiate. Dacă un partener sau un contract cere date licențiate IMDb, doar IMDb le poate furniza.
- Analiză offline. Fișierele de seturi de date necomerciale se potrivesc cercetării în masă pe care o rulezi pe propriul calculator. Vezi documentația lor pentru termeni.
Migrarea la amodb
Probabil ai o listă de ID-uri IMDb. Potrivește fiecare ID cu un ID amodb o singură dată, stochează perechea și apoi apelează detaliile după ID-ul numeric.
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)Cele trei ID-uri de mai sus se potrivesc cu 550, 603 și 27205, adică Fight Club, The Matrix și Inception. Un ID de serial precum tt0903747 vine în tv_results, unde Breaking Bad are ID-ul 1396. Un array gol înseamnă că nu s-a găsit nicio potrivire pentru acel ID.
Ritmează bucla. Fiecare ID este o cerere, iar un 429 include un antet Retry-After cu secundele de așteptare. Vezi erori pentru celelalte coduri.
Stochează ID-urile în siguranță
- Păstrează ID-urile IMDb ca șiruri. Încep cu
ttși au zerouri la început, ca întt0137523, iar un tip numeric pierde acele zerouri. - Salvează ID-ul IMDb și ID-ul amodb ca pereche. Oricare regăsește titlul.
- Citește
tv_resultspentru seriale șimovie_resultspentru filme. Un singur ID umple în mod normal un array și le lasă pe celelalte goale. - Cere detaliile după ID-ul amodb de atunci încolo, pentru că un apel de detalii poate aduce distribuția, trailerele și evaluările prin
append_to_response.
Prețuri
Alege unul dintre cele trei planuri de 20, 40 sau 120 de cereri pe minut și plătește în avans 1, 3, 6, 12 sau 24 de luni. Perioadele mai lungi au reduceri de 10, 20, 30 sau 40 la sută. Toate planurile întorc aceleași date, nimic nu se reînnoiește singur și nu există nivel gratuit. Vezi prețuri pentru sume.