Dane IMDb przez REST: krótka odpowiedź

IMDb nie ma darmowego uniwersalnego REST API. Jego niekomercyjne zbiory danych to pliki do pobrania, a dostęp komercyjny jest licencjonowany, więc aktualne warunki sprawdź w ich dokumentacji. Jeśli chcesz wywołać endpoint HTTP z ID z IMDb i dostać JSON, amodb robi to w planie płatnym. Jeśli twoja umowa wymaga danych licencjonowanych przez samo IMDb, to porozumienie jest z IMDb, a amodb go nie zastępuje.

Sposoby użycia ID z IMDb w amodb

Większość potrzeb pokrywa pięć wywołań. Każde zaczyna się od ID, które już masz, albo na nim kończy.

Masz lub chceszWywołanieDostajesz
Tytuł z ID z IMDbGET /3/find/tt0137523?external_source=imdb_idTablice movie_results, tv_results, person_results
ID z IMDb filmuGET /3/movie/550, pole imdb_idtt0137523 dla Fight Club
ID z IMDb serialuGET /3/tv/1396/external_idsimdb_id obok ID z TVDB
Wynik IMDbGET /3/movie/550/ratingsimdb jako value i votes albo null
Rekord w stylu OMDbGET /omdb/?i=tt0137523imdbRating, imdbVotes, imdbID

Każdy wiersz działa z tym samym kluczem. Oceny opisuje strona oceny, a wyszukiwanie po ID strona wyszukiwanie po zewnętrznym ID.

Odczyt wyniku IMDb

Endpoint ocen zwraca wynik i liczbę głosów razem. To prawdziwa odpowiedź dla Fight Club (ID 550). Wyniki zmieniają się w czasie.

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

Dla IMDb value jest w skali od 0 do 10 z jednym miejscem po przecinku. Pokaż obok liczbę głosów, a gdy obiekt ma wartość null, nie renderuj niczego. W tej odpowiedzi liczbę głosów mają tylko IMDb i TMDB. votes może mieć wartość null dla każdego źródła, więc sprawdź to przed pokazaniem. Odpowiedź z cache pozostaje ważna 6 godzin na edge, więc częstsze odpytywanie nic nie daje.

Porównanie funkcji

FunkcjaIMDbamodb
Model cenowyLicencjonowany dostęp komercyjny, sprawdź ich dokumentacjęPrzedpłata, od 1 do 24 miesięcy
Darmowy planBrak darmowego uniwersalnego REST APIBrak, ani wersji próbnej
UwierzytelnianieSprawdź ich dokumentacjęParametr zapytania api_key lub nagłówek Bearer
Format odpowiedziPliki zbiorów danych do pobrania, dla licencjonowanych kanałów sprawdź ich dokumentacjęJSON
JęzykiSprawdź ich dokumentację14 języków interfejsu
FilmyPola sprawdź w ich dokumentacjiSzczegóły, obsada, obrazy, wideo
SerialePola sprawdź w ich dokumentacjiSeriale, sezony, odcinki
OsobyPola sprawdź w ich dokumentacjiProfile, filmografia, obrazy
ObrazySprawdź ich dokumentacjęimg.amodb.dev, klucz niepotrzebny
OcenyWłasny wynik, dostęp sprawdź w ich dokumentacjiPięć źródeł, w tym IMDb, gdy znane
Limit żądańSprawdź ich dokumentację20, 40 lub 120 żądań na minutę
Użycie komercyjneLicencjonowane, sprawdź ich dokumentacjęPłatne plany, zobacz cennik
ZgodnośćWłasne formaty, sprawdź ich dokumentacjęOdczyty TMDB v3 i protokół OMDb

Czym amodb się różni

Wywołujesz endpoint zamiast parsować plik. Jedno żądanie zwraca tytuł z obsadą, zwiastunami i ocenami przez append_to_response, a kształt odpowiada TMDB v3, więc istniejące biblioteki klienckie działają. Ten sam klucz obsługuje endpoint w stylu OMDb, który utrzymuje przy życiu starszy kod czytający imdbRating.

Blok ocen to stały obiekt z pięcioma kluczami. Nieznane źródło ma wartość null, a nie brakujący klucz, więc kod czytający ratings.imdb nie potrzebuje sprawdzania istnienia obiektu nadrzędnego. Obok wartości może stać liczba głosów, co pozwala ukryć wynik oparty na niewielu głosach. Może też mieć wartość null, jak w trzech z pięciu źródeł w powyższym przykładzie.

Kiedy IMDb pasuje lepiej

  • Źródło wyniku. IMDb publikuje własne oceny jako pierwsze. amodb zwraca wartość tylko tam, gdzie jest znana, więc nowy lub mało znany tytuł może wrócić z null.
  • Funkcje serwisu. Recenzje użytkowników, listy i listy do obejrzenia żyją w serwisie IMDb. amodb to API metadanych i nie oferuje kont użytkowników.
  • Dane licencjonowane. Jeśli partner lub umowa wymaga danych licencjonowanych przez IMDb, dostarczyć je może tylko IMDb.
  • Analiza offline. Niekomercyjne pliki zbiorów danych pasują do masowych badań prowadzonych na własnej maszynie. Warunki sprawdź w ich dokumentacji.

Przejście na amodb

Najpewniej masz listę ID z IMDb. Zmapuj każde raz na ID amodb, zapisz parę, a potem wywołuj szczegóły po ID numerycznym.

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)

Trzy powyższe ID mapują się na 550, 603 i 27205, czyli Fight Club, The Matrix i Inception. ID serialu, takie jak tt0903747, wraca w tv_results, gdzie Breaking Bad ma ID 1396. Pusta tablica oznacza, że dla tego ID nie znaleziono dopasowania.

Zwolnij pętlę. Każde ID to jedno żądanie, a 429 zawiera nagłówek Retry-After z liczbą sekund oczekiwania. Inne kody zobacz w błędy.

Bezpieczne zapisywanie ID

  • Trzymaj ID z IMDb jako ciągi. Zaczynają się od tt i mają zera wiodące, jak w tt0137523, a typ liczbowy je gubi.
  • Zapisuj ID z IMDb i ID amodb jako parę. Którekolwiek znajduje tytuł ponownie.
  • Dla seriali czytaj tv_results, a dla filmów movie_results. Jedno ID zwykle wypełnia jedną tablicę, a pozostałe zostawia puste.
  • Od tej pory żądaj szczegółów po ID amodb, bo wywołanie szczegółów może przez append_to_response nieść obsadę, zwiastuny i oceny.

Cennik

Wybierz jeden z trzech planów z 20, 40 lub 120 żądaniami na minutę i przedpłać 1, 3, 6, 12 lub 24 miesiące. Dłuższe okresy mają zniżkę 10, 20, 30 lub 40 procent. Wszystkie plany zwracają te same dane, nic nie odnawia się samo i nie ma darmowego planu. Kwoty zobacz w cennik.