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 chcesz | Wywołanie | Dostajesz |
|---|---|---|
| Tytuł z ID z IMDb | GET / | Tablice movie_results, tv_results, person_results |
| ID z IMDb filmu | GET /3/movie/550, pole imdb_id | tt0137523 dla Fight Club |
| ID z IMDb serialu | GET / | imdb_id obok ID z TVDB |
| Wynik IMDb | GET / | imdb jako value i votes albo null |
| Rekord w stylu OMDb | GET /omdb/?i=tt0137523 | imdbRating, 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.
{
"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
| Funkcja | IMDb | amodb |
|---|---|---|
| Model cenowy | Licencjonowany dostęp komercyjny, sprawdź ich dokumentację | Przedpłata, od 1 do 24 miesięcy |
| Darmowy plan | Brak darmowego uniwersalnego REST API | Brak, ani wersji próbnej |
| Uwierzytelnianie | Sprawdź ich dokumentację | Parametr zapytania api_key lub nagłówek Bearer |
| Format odpowiedzi | Pliki zbiorów danych do pobrania, dla licencjonowanych kanałów sprawdź ich dokumentację | JSON |
| Języki | Sprawdź ich dokumentację | 14 języków interfejsu |
| Filmy | Pola sprawdź w ich dokumentacji | Szczegóły, obsada, obrazy, wideo |
| Seriale | Pola sprawdź w ich dokumentacji | Seriale, sezony, odcinki |
| Osoby | Pola sprawdź w ich dokumentacji | Profile, filmografia, obrazy |
| Obrazy | Sprawdź ich dokumentację | img.amodb.dev, klucz niepotrzebny |
| Oceny | Własny wynik, dostęp sprawdź w ich dokumentacji | Pięć źródeł, w tym IMDb, gdy znane |
| Limit żądań | Sprawdź ich dokumentację | 20, 40 lub 120 żądań na minutę |
| Użycie komercyjne | Licencjonowane, 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.
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
tti mają zera wiodące, jak wtt0137523, 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ówmovie_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_responsenieść 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.