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 chcete | Volání | Dostanete |
|---|---|---|
| Titul z ID z IMDb | GET / | Pole movie_results, tv_results, person_results |
| ID z IMDb filmu | GET /3/movie/550, pole imdb_id | tt0137523 pro Fight Club |
| ID z IMDb seriálu | GET / | imdb_id vedle ID z TVDB |
| Skóre IMDb | GET / | imdb jako value a votes, nebo null |
| Záznam ve stylu OMDb | GET /omdb/?i=tt0137523 | imdbRating, 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í.
{
"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í
| Funkce | IMDb | amodb |
|---|---|---|
| Cenový model | Licencovaný komerční přístup, podívejte se do jejich dokumentace | Př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 dokumentace | Parametr dotazu api_key nebo hlavička Bearer |
| Formát odpovědi | Datasety ke stažení, u licencovaných feedů se podívejte do jejich dokumentace | JSON |
| Jazyky | Podívejte se do jejich dokumentace | 14 jazyků rozhraní |
| Filmy | Pole viz jejich dokumentace | Detaily, obsazení, obrázky, videa |
| Seriály | Pole viz jejich dokumentace | Seriály, sezóny, epizody |
| Osoby | Pole viz jejich dokumentace | Profily, filmografie, obrázky |
| Obrázky | Podívejte se do jejich dokumentace | img.amodb.dev, klíč není potřeba |
| Hodnocení | Vlastní skóre, přístup viz jejich dokumentace | Pět zdrojů, mezi nimi IMDb, kde jsou známé |
| Limit požadavků | Podívejte se do jejich dokumentace | 20, 40 nebo 120 požadavků za minutu |
| Komerční užití | Licencováno, podívejte se do jejich dokumentace | Placené tarify, viz ceník |
| Kompatibilita | Vlastní 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.
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
tta nesou úvodní nuly, jako vtt0137523, 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_resultsa pro filmymovie_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_responsené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.