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 vreiApelPrimești
Un titlu dintr-un ID IMDbGET /3/find/tt0137523?external_source=imdb_idArray-urile movie_results, tv_results, person_results
ID-ul IMDb al unui filmGET /3/movie/550, câmpul imdb_idtt0137523 pentru Fight Club
ID-ul IMDb al unui serialGET /3/tv/1396/external_idsimdb_id lângă ID-ul TVDB
Scorul IMDbGET /3/movie/550/ratingsimdb ca value și votes, sau null
O înregistrare în stil OMDbGET /omdb/?i=tt0137523imdbRating, 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.

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
  }
}

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țieIMDbamodb
Model de prețLicențiat pentru acces comercial, vezi documentația lorPlătit în avans, de la 1 la 24 de luni
Nivel gratuitNiciun API REST general gratuitNiciunul, și fără perioadă de probă
AutentificareVezi documentația lorParametrul de interogare api_key sau antetul Bearer
Format de răspunsFișiere de set de date descărcabile, vezi documentația lor pentru fluxurile licențiateJSON
LimbiVezi documentația lor14 limbi de interfață
FilmeVezi documentația lor pentru câmpuriDetalii, credite, imagini, videoclipuri
TVVezi documentația lor pentru câmpuriSeriale, sezoane, episoade
PersoaneVezi documentația lor pentru câmpuriProfiluri, filmografie, imagini
ImaginiVezi documentația lorimg.amodb.dev, fără cheie
EvaluăriScorul propriu, vezi documentația lor pentru accesCinci surse, printre ele IMDb, unde se știu
Limită de cereriVezi documentația lor20, 40 sau 120 de cereri pe minut
Utilizare comercialăLicențiată, vezi documentația lorPlanuri cu plată, vezi prețuri
CompatibilitateFormate proprii, vezi documentația lorCitiri 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.

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)

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 în tt0137523, 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_results pentru seriale și movie_results pentru 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.