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://api.amodb.dev/omdb/, a końcowy ukośnik jest opcjonalny. Twój istniejący kod parsujący nie powinien wymagać zmian dla tych elementów.

Element OMDbW amodb
apikeyTen sam parametr, wypełniony twoim kluczem amodb
i i tWyszukiwanie po ID z IMDb lub po tytule
s i pageWyszukiwanie z 10 wynikami na stronę i liczbą totalResults, page do 100
type i yFiltr według movie lub series i według roku
plotshort lub full
rPrzyjmowane jest tylko json
Pola treściNazwane jak w OMDb, od Title do Response
RatingsTablica par Source i Value dla Internet Movie Database, Rotten Tomatoes i Metacritic, gdy obecne
Błędy{"Response":"False","Error":"..."} ze sformułowaniem OMDb, w odpowiedzi HTTP 200

Co się nie przenosi

  • XML. Żądanie z r=xml zwraca 400 z {"Response":"False","Error":"Only r=json is supported."}.
  • Sezony i odcinki. Season i Episode są ignorowane, a type=episode nic nie znajduje. Żądanie z i=tt0903747&Season=1 zwraca rekord serialu, a nie sezon. Do odcinków użyj /3/tv/{id}/season/{n}.
  • Inne parametry. callback jest ignorowany.
  • Pola bez danych. DVD, Production i Website mają zawsze wartość "N/A". Rekordy seriali mają totalSeasons i pomijają DVD, BoxOffice, Production i Website.
  • Plakaty. Pole Poster wskazuje na https://img.amodb.dev/t/p/w300/... zamiast innego hosta. Zamień w300 na w780, 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.

JSON
{
  "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

FunkcjaOMDbamodb
Model cenowyDarmowy klucz plus płatny poziom dla sympatyków, sprawdź na ich stronieOkresy przedpłacone, od 1 do 24 miesięcy
Darmowy planDarmowy klucz z dziennym limitem 1 000, sprawdź na ich stronieBrak, ani wersji próbnej
UwierzytelnianieParametr apikeyapikey na /omdb/, api_key lub Bearer na /3
Format odpowiedziJSON lub XMLJSON
JęzykiSprawdź ich dokumentację14 języków interfejsu na ścieżkach /3
FilmyTakTak
SerialeSeriale i odcinki, pola sprawdź w ich dokumentacjiRekordy seriali na /omdb/, sezony i odcinki na ścieżkach /3
OsobyImiona i nazwiska jako tekst w każdym rekordzieProfile, filmografia i obrazy na ścieżkach /3
ObrazyLink do plakatu w każdym rekordzieLink do plakatu plus listy obrazów, img.amodb.dev
OcenyPola Ratings, Metascore i imdbRatingTe same pola plus obiekt ratings na ścieżkach /3
Limit żądańDzienny limit na darmowym kluczu, sprawdź na ich stronie20, 40 lub 120 na minutę na klucz
Użycie komercyjneSprawdź na ich stronieSprzedawane jako płatne API, zobacz cennik
ZgodnośćDefiniuje protokół OMDbPowyż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 /3 możesz poprosić o ten sam tytuł z obsadą, wideo i tłumaczeniami jednym wywołaniem, a imdbID znajduje 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 w92 do original.
  • Więcej źródeł ocen. Rozszerzenie /3/movie/{id}/ratings dodaje 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.

JavaScript
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
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.