Data IMDb přes REST: stručná odpověď

IMDb nemá bezplatné univerzální REST API. Jeho nekomerční datasety jsou soubory ke stažení a komerční přístup je licencovaný, aktuální podmínky proto ověřte v jejich dokumentaci. Pokud chcete zavolat endpoint HTTP s ID z IMDb a dostat JSON, amodb to v placeném tarifu umí. Pokud vaše smlouva vyžaduje data licencovaná přímo od IMDb, ta dohoda je s IMDb a amodb ji nenahrazuje.

Způsoby použití ID z IMDb na amodb

Většinu potřeb pokrývá pět volání. Každé začíná u ID, které už máte, nebo jím končí.

Máte nebo chceteVoláníDostanete
Titul z ID z IMDbGET /3/find/tt0137523?external_source=imdb_idPole movie_results, tv_results, person_results
ID z IMDb filmuGET /3/movie/550, pole imdb_idtt0137523 pro Fight Club
ID z IMDb seriáluGET /3/tv/1396/external_idsimdb_id vedle ID z TVDB
Skóre IMDbGET /3/movie/550/ratingsimdb jako value a votes, nebo null
Záznam ve stylu OMDbGET /omdb/?i=tt0137523imdbRating, imdbVotes, imdbID

Každý řádek funguje se stejným klíčem. Hodnocení popisuje stránka hodnocení a vyhledání podle ID stránka hledání podle externího ID.

Čtení skóre IMDb

Endpoint hodnocení vrací skóre a počet hlasů společně. Toto je skutečná odpověď pro Fight Club (ID 550). Skóre se v čase mění.

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

U IMDb je value na stupnici 0 až 10 na jedno desetinné místo. Vedle něj zobrazte počet hlasů a když je objekt null, nevykreslujte nic. V této odpovědi mají počet hlasů jen IMDb a TMDB. votes může být null u kteréhokoli zdroje, ověřte ho proto před zobrazením. Odpověď v cache zůstává platná 6 hodin na edge, častější dotazování tedy nic nepřináší.

Srovnání funkcí

FunkceIMDbamodb
Cenový modelLicencovaný komerční přístup, podívejte se do jejich dokumentacePředplatné, od 1 do 24 měsíců
Bezplatný tarifŽádné bezplatné univerzální REST APIŽádný, ani zkušební verze
OvěřeníPodívejte se do jejich dokumentaceParametr dotazu api_key nebo hlavička Bearer
Formát odpovědiDatasety ke stažení, u licencovaných feedů se podívejte do jejich dokumentaceJSON
JazykyPodívejte se do jejich dokumentace14 jazyků rozhraní
FilmyPole viz jejich dokumentaceDetaily, obsazení, obrázky, videa
SeriályPole viz jejich dokumentaceSeriály, sezóny, epizody
OsobyPole viz jejich dokumentaceProfily, filmografie, obrázky
ObrázkyPodívejte se do jejich dokumentaceimg.amodb.dev, klíč není potřeba
HodnoceníVlastní skóre, přístup viz jejich dokumentacePět zdrojů, mezi nimi IMDb, kde jsou známé
Limit požadavkůPodívejte se do jejich dokumentace20, 40 nebo 120 požadavků za minutu
Komerční užitíLicencováno, podívejte se do jejich dokumentacePlacené tarify, viz ceník
KompatibilitaVlastní formáty, podívejte se do jejich dokumentaceČtení TMDB v3 a protokol OMDb

V čem se amodb liší

Voláte endpoint místo parsování souboru. Jeden požadavek vrátí titul s obsazením, trailery a hodnocením přes append_to_response a tvar odpovídá TMDB v3, takže stávající klientské knihovny fungují. Stejný klíč obsluhuje endpoint ve stylu OMDb, který udrží v chodu starší kód čtoucí imdbRating.

Blok hodnocení je pevný objekt s pěti klíči. Neznámý zdroj je null, ne chybějící klíč, takže kód čtoucí ratings.imdb nepotřebuje kontrolu existence nadřazeného objektu. Vedle hodnoty může být počet hlasů, což umožňuje skrýt skóre opřené o málo hlasů. Může být také null, jako je tomu u tří z pěti zdrojů v příkladu výše.

Kdy se IMDb hodí lépe

  • Původ skóre. IMDb zveřejňuje svá hodnocení jako první. amodb vrací hodnotu jen tam, kde je známa, takže nový nebo málo známý titul se může vrátit s null.
  • Funkce webu. Uživatelské recenze, seznamy a seznamy ke zhlédnutí žijí na webu IMDb. amodb je API s metadaty a uživatelské účty nenabízí.
  • Licencovaná data. Pokud partner nebo smlouva vyžaduje data licencovaná IMDb, může je poskytnout jen IMDb.
  • Offline analýza. Nekomerční soubory datasetů se hodí pro hromadný výzkum, který spouštíte na vlastním stroji. Podmínky ověřte v jejich dokumentaci.

Přechod na amodb

Nejspíš držíte seznam ID z IMDb. Každé namapujte jednou na ID amodb, dvojici uložte a pak volejte detaily podle číselného ID.

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)

Tři ID výše se mapují na 550, 603 a 27205, tedy Fight Club, The Matrix a Inception. ID seriálu, například tt0903747, přijde v tv_results, kde má Breaking Bad ID 1396. Prázdné pole znamená, že pro dané ID nebyla nalezena shoda.

Smyčku zpomalte. Každé ID je jeden požadavek a 429 obsahuje hlavičku Retry-After s počtem sekund čekání. Další kódy viz chyby.

Bezpečné ukládání ID

  • ID z IMDb ukládejte jako řetězce. Začínají na tt a nesou úvodní nuly, jako v tt0137523, a číselný typ ty nuly zahodí.
  • Ukládejte ID z IMDb a ID amodb jako dvojici. Kterékoli titul znovu najde.
  • Pro seriály čtěte tv_results a pro filmy movie_results. Jedno ID obvykle vyplní jedno pole a ostatní nechá prázdná.
  • Od té chvíle žádejte detaily podle ID amodb, protože volání detailů může přes append_to_response nést obsazení, trailery i hodnocení.

Ceník

Zvolte jeden ze tří tarifů s 20, 40 nebo 120 požadavky za minutu a předplaťte 1, 3, 6, 12 nebo 24 měsíců. Delší období mají slevu 10, 20, 30 nebo 40 procent. Všechny tarify vracejí stejná data, nic se neobnovuje samo a bezplatný tarif neexistuje. Částky viz ceník.