Wybierz według kształtu swoich wywołań
Wybierz OMDb, gdy chcesz jeden mały rekord na tytuł, a jego darmowy klucz pokrywa twój wolumen. Wybierz amodb, gdy z tego wyrośniesz albo gdy chcesz ten sam styl żądań OMDb obok obsady, obrazów i tłumaczeń na jednym kluczu. OMDb zwraca JSON lub XML, używa parametru apikey i oferuje darmowy klucz z dziennym limitem żądań 1 000 (sprawdź na ich stronie) oraz płatny poziom dla sympatyków. amodb jest tylko płatne i odpowiada na główne parametry OMDb, a także na TMDB v3.
Co zostaje takie samo
Endpoint OMDb jest pod https:/, a końcowy ukośnik jest opcjonalny. Twój istniejący kod parsujący nie powinien wymagać zmian dla tych elementów.
| Element OMDb | W amodb |
|---|---|
apikey | Ten sam parametr, wypełniony twoim kluczem amodb |
i i t | Wyszukiwanie po ID z IMDb lub po tytule |
s i page | Wyszukiwanie z 10 wynikami na stronę i liczbą totalResults, page do 100 |
type i y | Filtr według movie lub series i według roku |
plot | short lub full |
r | Przyjmowane jest tylko json |
| Pola treści | Nazwane jak w OMDb, od Title do Response |
Ratings | Tablica par Source i Value dla Internet Movie Database, Rotten Tomatoes i Metacritic, gdy obecne |
| Błędy | {"Response":"False", ze sformułowaniem OMDb, w odpowiedzi HTTP 200 |
Co się nie przenosi
- XML. Żądanie z
r=xmlzwraca 400 z{"Response":"False",."Error":"Only r= json is supported."} - Sezony i odcinki.
SeasoniEpisodesą ignorowane, atype=episodenic nie znajduje. Żądanie zi=tt0903747&Season=1zwraca rekord serialu, a nie sezon. Do odcinków użyj/3/tv/{id}/season/{n}. - Inne parametry.
callbackjest ignorowany. - Pola bez danych.
DVD,ProductioniWebsitemają zawsze wartość"N/A". Rekordy seriali majątotalSeasonsi pomijająDVD,BoxOffice,ProductioniWebsite. - Plakaty. Pole
Posterwskazuje nahttps:/zamiast innego hosta. Zamień/ img.amodb.dev/ t/ p/ w300/ ... w300naw780, by dostać większy obraz z tej samej ścieżki, a obrazy nie wymagają klucza.
Pełna lista parametrów i błędów jest na stronie endpoint OMDb.
Przykładowa odpowiedź
Żądanie z t=Fight Club zwraca płaski obiekt. Poniższa odpowiedź jest prawdziwa, skrócony jest tylko tekst Plot.
{
"Title": "Fight Club",
"Year": "1999",
"Rated": "R",
"Released": "15 Oct 1999",
"Runtime": "139 min",
"Genre": "Crime, Drama, Thriller",
"Director": "David Fincher",
"Writer": "Chuck Palahniuk, Jim Uhls",
"Actors": "Brad Pitt, Edward Norton, Meat Loaf",
"Plot": "A nameless first-person narrator attends support groups in an attempt to subdue his emotional state an...",
"Language": "English",
"Country": "United States, Germany",
"Awards": "Nominated for 1 Oscar. 12 wins & 38 nominations total",
"Poster": "https://img.amodb.dev/t/p/w300/qkrH7rjYKU4KOwwIl6wF6H3ISvm.jpg",
"Ratings": [
{
"Source": "Internet Movie Database",
"Value": "8.8/10"
},
{
"Source": "Rotten Tomatoes",
"Value": "81%"
},
{
"Source": "Metacritic",
"Value": "67/100"
}
],
"Metascore": "67",
"imdbRating": "8.8",
"imdbVotes": "2,669,989",
"imdbID": "tt0137523",
"Type": "movie",
"DVD": "N/A",
"BoxOffice": "$38,003,039",
"Production": "N/A",
"Website": "N/A",
"Response": "True"
}Wartości są ciągami, jak w OMDb, więc imdbRating, imdbVotes i Runtime parsuj samodzielnie. Każde wywołanie liczy się jako jedno żądanie do limitu na minutę, niezależnie od liczby odczytywanych pól.
Porównanie funkcji
| Funkcja | OMDb | amodb |
|---|---|---|
| Model cenowy | Darmowy klucz plus płatny poziom dla sympatyków, sprawdź na ich stronie | Okresy przedpłacone, od 1 do 24 miesięcy |
| Darmowy plan | Darmowy klucz z dziennym limitem 1 000, sprawdź na ich stronie | Brak, ani wersji próbnej |
| Uwierzytelnianie | Parametr apikey | apikey na /omdb/, api_key lub Bearer na /3 |
| Format odpowiedzi | JSON lub XML | JSON |
| Języki | Sprawdź ich dokumentację | 14 języków interfejsu na ścieżkach /3 |
| Filmy | Tak | Tak |
| Seriale | Seriale i odcinki, pola sprawdź w ich dokumentacji | Rekordy seriali na /omdb/, sezony i odcinki na ścieżkach /3 |
| Osoby | Imiona i nazwiska jako tekst w każdym rekordzie | Profile, filmografia i obrazy na ścieżkach /3 |
| Obrazy | Link do plakatu w każdym rekordzie | Link do plakatu plus listy obrazów, img.amodb.dev |
| Oceny | Pola Ratings, Metascore i imdbRating | Te same pola plus obiekt ratings na ścieżkach /3 |
| Limit żądań | Dzienny limit na darmowym kluczu, sprawdź na ich stronie | 20, 40 lub 120 na minutę na klucz |
| Użycie komercyjne | Sprawdź na ich stronie | Sprzedawane jako płatne API, zobacz cennik |
| Zgodność | Definiuje protokół OMDb | Powyższe parametry OMDb i odczyty TMDB v3 |
Czym amodb się różni
- Limity na minutę. Plany dopuszczają 20, 40 lub 120 żądań na minutę w przesuwanym oknie 60 sekund. Każda odpowiedź z kluczem ma
X-RateLimit-Remaining, więc zadanie wsadowe może samo zwolnić, zanim zobaczy 429. - Droga w górę od pojedynczych rekordów. Rekord OMDb ma listę obsady jako tekst. Na ścieżkach
/3możesz poprosić o ten sam tytuł z obsadą, wideo i tłumaczeniami jednym wywołaniem, aimdbIDznajduje rekord przez/3/find. - Większe obrazy. Rekordy w stylu OMDb dają jeden link do plakatu. Host obrazów obsługuje dziesięć tokenów rozmiaru, od
w92dooriginal. - Więcej źródeł ocen. Rozszerzenie
/3/movie/{id}/ratingsdodaje wartości z Kinopoisk, Metacritic, Rotten Tomatoes i TMDB tam, gdzie są znane.
Kiedy OMDb pasuje lepiej
- Małe lub darmowe projekty. Darmowy klucz z dziennym limitem 1 000 wystarcza na prototyp lub stronę hobbystyczną, a amodb nie ma darmowego planu.
- Konsumenci XML. Jeśli starszy system parsuje XML, OMDb go oferuje, a amodb nie.
- Wyszukiwanie sezonów i odcinków. Trasa
/omdb/w amodb nie ma trybu sezonów ani odcinków, więc klient zbudowany na niej potrzebuje zamiast tego ścieżek/3. - Prostota. Jeden endpoint i garść parametrów łatwo się uczy. Jeśli tylko tego potrzebujesz, przejściem niewiele zyskasz.
Przejście na amodb
Zmieniają się tylko bazowy URL i klucz. Resztę żądania zostaw, gdy przeszukasz kod pod kątem r=xml, Season, Episode i type=episode.
const OMDB_BASE = process.env.OMDB_BASE_URL; // before: your current OMDb base URL
const AMODB_BASE = 'https://api.amodb.dev/omdb/'; // after
async function lookup(title) {
const url = new URL(AMODB_BASE);
url.searchParams.set('apikey', process.env.AMODB_KEY);
url.searchParams.set('t', title);
url.searchParams.set('plot', 'short');
const res = await fetch(url);
const data = await res.json();
if (data.Response === 'False') throw new Error(data.Error);
return data;
}
const movie = await lookup('Fight Club');
console.log(movie.Title, movie.Year, movie.imdbRating, movie.Poster);Dalej sprawdzaj pole Response, tak jak w OMDb. Gdy wartością jest ciąg "False", komunikat niesie pole Error. Dla odcinków zmapuj imdbID raz przez /3/find i czytaj sezony ze strony /3:
curl -s "https://api.amodb.dev/3/find/tt0903747?external_source=imdb_id&api_key=$AMODB_KEY"
curl -s "https://api.amodb.dev/3/tv/1396/season/1?api_key=$AMODB_KEY"Dla strony w stylu TMDB zobacz uwierzytelnianie i szybki start.
Cennik
amodb jest płatne i odnawia się tylko wtedy, gdy kupisz kolejny okres. Trzy plany różnią się wyłącznie tempem, 20, 40 lub 120 żądań na minutę, a każdy zwraca wszystkie dane. Okresy to 1, 3, 6, 12 lub 24 miesiące, a dłuższe mają zniżkę od 10 do 40 procent. Aktualne kwoty sprawdź na stronie cennik.