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:/, e a barra final é opcional. O seu código de parsing existente não deve precisar de edições para estes elementos.
| Elemento do OMDb | No amodb |
|---|---|
apikey | Mesmo parâmetro, preenchido com a sua chave do amodb |
i e t | Busca por ID do IMDb ou por título |
s e page | Busca com 10 resultados por página e uma contagem totalResults, page até 100 |
type e y | Filtra por movie ou series e por ano |
plot | short ou full |
r | Só json é aceito |
| Campos do corpo | Com os nomes do OMDb, de Title a Response |
Ratings | Um array de pares Source e Value para Internet Movie Database, Rotten Tomatoes e Metacritic, quando presentes |
| Erros | {"Response":"False", com o texto do OMDb, em uma resposta HTTP 200 |
O que não é compatível
- XML. Uma requisição com
r=xmlretorna 400 com{"Response":"False",."Error":"Only r= json is supported."} - Temporadas e episódios.
SeasoneEpisodesão ignorados, etype=episodenão encontra nada. Uma requisição comi=tt0903747&Season=1retorna 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,ProductioneWebsitesão sempre"N/A". Registros de série têmtotalSeasonse omitemDVD,BoxOffice,ProductioneWebsite. - Pôsteres. O campo
Posteraponta parahttps:/em vez de outro host. Troque/ img.amodb.dev/ t/ p/ w300/ ... w300porw780para 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.
{
"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
| Recurso | OMDb | amodb |
|---|---|---|
| Modelo de preço | Chave gratuita mais um nível pago para apoiadores, confira no site deles | Períodos pré-pagos, de 1 a 24 meses |
| Plano gratuito | Chave gratuita com limite diário de 1,000, confira no site deles | Nenhum, e sem período de teste |
| Autenticação | Parâmetro apikey | apikey em /omdb/, api_key ou Bearer em /3 |
| Formato da resposta | JSON ou XML | JSON |
| Idiomas | Consulte a documentação deles | 14 idiomas de interface nos caminhos /3 |
| Filmes | Sim | Sim |
| TV | Séries e episódios, consulte a documentação deles sobre os campos | Registros de série em /omdb/, temporadas e episódios nos caminhos /3 |
| Pessoas | Nomes como texto em cada registro | Perfis, filmografia e imagens nos caminhos /3 |
| Imagens | Link do pôster em cada registro | Link do pôster mais listas de imagens, img.amodb.dev |
| Avaliações | Campos Ratings, Metascore e imdbRating | Os mesmos campos, mais um objeto ratings nos caminhos /3 |
| Limite de requisições | Limite diário na chave gratuita, confira no site deles | 20, 40 ou 120 por minuto por chave |
| Uso comercial | Confira no site deles | Vendido como API paga, veja preços |
| Compatibilidade | Define o protocolo OMDb | Parâ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 oimdbIDencontra 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
w92aoriginal. - Mais fontes de avaliação. A extensão
/3/movie/{id}/ratingsacrescenta 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.
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 -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.