Escolha pelo formato das suas chamadas

Escolha o OMDb quando quiser um registro pequeno por título e a chave gratuita cobrir o seu volume. Escolha o amodb quando isso deixar de bastar, ou quando quiser o mesmo estilo de requisição do OMDb ao lado de créditos, imagens e traduções em uma só chave. O OMDb retorna JSON ou XML, usa um parâmetro apikey e oferece uma chave gratuita com limite diário de 1,000 requisições (confira no site deles), além de um nível pago para apoiadores. O amodb é apenas pago e responde aos principais parâmetros do OMDb, além do TMDB v3.

O que continua igual

O endpoint OMDb fica em https://api.amodb.dev/omdb/, e a barra final é opcional. O seu código de parsing existente não deve precisar de edições para estes elementos.

Elemento do OMDbNo amodb
apikeyMesmo parâmetro, preenchido com a sua chave do amodb
i e tBusca por ID do IMDb ou por título
s e pageBusca com 10 resultados por página e uma contagem totalResults, page até 100
type e yFiltra por movie ou series e por ano
plotshort ou full
rSó json é aceito
Campos do corpoCom os nomes do OMDb, de Title a Response
RatingsUm array de pares Source e Value para Internet Movie Database, Rotten Tomatoes e Metacritic, quando presentes
Erros{"Response":"False","Error":"..."} com o texto do OMDb, em uma resposta HTTP 200

O que não é compatível

  • XML. Uma requisição com r=xml retorna 400 com {"Response":"False","Error":"Only r=json is supported."}.
  • Temporadas e episódios. Season e Episode são ignorados, e type=episode não encontra nada. Uma requisição com i=tt0903747&Season=1 retorna o registro da série, não uma temporada. Use /3/tv/{id}/season/{n} para episódios.
  • Outros parâmetros. callback é ignorado.
  • Campos sem dados. DVD, Production e Website são sempre "N/A". Registros de série têm totalSeasons e omitem DVD, BoxOffice, Production e Website.
  • Pôsteres. O campo Poster aponta para https://img.amodb.dev/t/p/w300/... em vez de outro host. Troque w300 por w780 para obter uma imagem maior no mesmo caminho, e as imagens não exigem chave.

A lista completa de parâmetros e erros está na página do endpoint OMDb.

Exemplo de resposta

Uma requisição com t=Fight Club retorna um objeto plano. A resposta abaixo é real, com apenas o texto de Plot encurtado.

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

Os valores são strings, como no OMDb, então faça o parse de imdbRating, imdbVotes e Runtime você mesmo. Cada chamada conta como uma requisição no seu limite por minuto, não importa quantos campos você leia.

Comparação de recursos

RecursoOMDbamodb
Modelo de preçoChave gratuita mais um nível pago para apoiadores, confira no site delesPeríodos pré-pagos, de 1 a 24 meses
Plano gratuitoChave gratuita com limite diário de 1,000, confira no site delesNenhum, e sem período de teste
AutenticaçãoParâmetro apikeyapikey em /omdb/, api_key ou Bearer em /3
Formato da respostaJSON ou XMLJSON
IdiomasConsulte a documentação deles14 idiomas de interface nos caminhos /3
FilmesSimSim
TVSéries e episódios, consulte a documentação deles sobre os camposRegistros de série em /omdb/, temporadas e episódios nos caminhos /3
PessoasNomes como texto em cada registroPerfis, filmografia e imagens nos caminhos /3
ImagensLink do pôster em cada registroLink do pôster mais listas de imagens, img.amodb.dev
AvaliaçõesCampos Ratings, Metascore e imdbRatingOs mesmos campos, mais um objeto ratings nos caminhos /3
Limite de requisiçõesLimite diário na chave gratuita, confira no site deles20, 40 ou 120 por minuto por chave
Uso comercialConfira no site delesVendido como API paga, veja preços
CompatibilidadeDefine o protocolo OMDbParâmetros do OMDb acima e leituras do TMDB v3

Onde o amodb se diferencia

  • Limites por minuto. Os planos permitem 20, 40 ou 120 requisições por minuto em uma janela deslizante de 60 segundos. Cada resposta com chave traz X-RateLimit-Remaining, então um job em lote pode desacelerar antes de receber um 429.
  • Um caminho além dos registros únicos. Um registro do OMDb tem a lista de elenco como texto. Com os caminhos /3, você pode pedir o mesmo título com créditos, vídeos e traduções em uma só chamada, e o imdbID encontra o registro por meio de /3/find.
  • Imagens maiores. Registros no estilo OMDb dão um único link de pôster. O host de imagens serve dez tokens de tamanho, de w92 a original.
  • Mais fontes de avaliação. A extensão /3/movie/{id}/ratings acrescenta valores do Kinopoisk, Metacritic, Rotten Tomatoes e TMDB, quando conhecidos.

Onde o OMDb é mais indicado

  • Projetos pequenos ou gratuitos. Uma chave gratuita com limite diário de 1,000 basta para um protótipo ou um site de hobby, e o amodb não tem plano gratuito.
  • Consumidores de XML. Se um sistema legado faz parse de XML, o OMDb oferece isso e o amodb não.
  • Consultas de temporada e episódio. A rota /omdb/ do amodb não tem modo de temporada ou episódio, então um cliente construído sobre ela precisa dos caminhos /3.
  • Simplicidade. Um endpoint e poucos parâmetros são fáceis de aprender. Se isso é tudo que você precisa, ganha pouco ao migrar.

Migrar para o amodb

Só a URL base e a chave mudam. Mantenha o resto da requisição como está, depois de procurar no seu código por r=xml, Season, Episode e 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);

Continue verificando o campo Response, como fazia com o OMDb. Quando o valor é a string "False", o campo Error traz a mensagem. Para episódios, mapeie o imdbID uma vez com /3/find e leia as temporadas pelo lado /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"

Para o lado no estilo TMDB, veja autenticação e o início rápido.

Preços

O amodb é pago e só renova quando você compra outro período. Os três planos diferem apenas na taxa, de 20, 40 ou 120 requisições por minuto, e cada um retorna todos os dados. Os períodos são de 1, 3, 6, 12 ou 24 meses, e os mais longos dão de 10 a 40 por cento de desconto. Consulte preços para os valores atuais.