Dados do IMDb via REST: a resposta curta
O IMDb não tem API REST gratuita de uso geral. Os datasets não comerciais são arquivos para download e o acesso comercial é licenciado, então consulte a documentação deles para ver os termos atuais. Se você quer chamar um endpoint HTTP com um ID do IMDb e receber JSON, o amodb faz isso em um plano pago. Se o seu contrato exige dados licenciados pelo próprio IMDb, esse acordo é com o IMDb e o amodb não o substitui.
Formas de usar um ID do IMDb no amodb
Cinco chamadas cobrem a maioria das necessidades. Cada uma parte de um ID que você já tem ou termina com um.
| Você tem ou quer | Chamada | Você recebe |
|---|---|---|
| Um título a partir de um ID do IMDb | GET / | Arrays movie_results, tv_results, person_results |
| O ID do IMDb de um filme | GET /3/movie/550, campo imdb_id | tt0137523 para Fight Club |
| O ID do IMDb de uma série | GET / | imdb_id ao lado do ID do TVDB |
| A nota do IMDb | GET / | imdb como value e votes, ou null |
| Um registro no estilo OMDb | GET /omdb/?i=tt0137523 | imdbRating, imdbVotes, imdbID |
Todas as linhas funcionam com a mesma chave. As avaliações são descritas na página de avaliações e as buscas por ID em busca por ID externo.
Leia a nota do IMDb
O endpoint de avaliações retorna a nota e o número de votos juntos. Esta é uma resposta real para Fight Club (ID 550). As notas mudam com o tempo.
{
"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
}
}Para o IMDb, o value fica numa escala de 0 a 10 com uma casa decimal. Mostre o número de votos ao lado e não renderize nada quando o objeto for null. Nesta resposta, só o IMDb e o TMDB trazem votos. votes pode ser null em qualquer fonte, então verifique antes de exibir. Uma resposta em cache continua válida por 6 horas na borda, então consultar com mais frequência não traz ganho.
Comparação de recursos
| Recurso | IMDb | amodb |
|---|---|---|
| Modelo de preço | Acesso comercial licenciado, consulte a documentação deles | Pré-pago, de 1 a 24 meses |
| Plano gratuito | Sem API REST gratuita de uso geral | Nenhum, e sem período de teste |
| Autenticação | Consulte a documentação deles | Parâmetro de consulta api_key ou cabeçalho Bearer |
| Formato da resposta | Arquivos de dataset para download, consulte a documentação deles sobre feeds licenciados | JSON |
| Idiomas | Consulte a documentação deles | 14 idiomas de interface |
| Filmes | Consulte a documentação deles sobre os campos | Detalhes, créditos, imagens, vídeos |
| TV | Consulte a documentação deles sobre os campos | Séries, temporadas, episódios |
| Pessoas | Consulte a documentação deles sobre os campos | Perfis, filmografia, imagens |
| Imagens | Consulte a documentação deles | img.amodb.dev, sem chave |
| Avaliações | Nota própria, consulte a documentação deles sobre o acesso | Cinco fontes, o IMDb entre elas, quando conhecidas |
| Limite de requisições | Consulte a documentação deles | 20, 40 ou 120 requisições por minuto |
| Uso comercial | Licenciado, consulte a documentação deles | Planos pagos, veja preços |
| Compatibilidade | Formatos próprios, consulte a documentação deles | Leituras do TMDB v3 e o protocolo OMDb |
Onde o amodb se diferencia
Você chama um endpoint em vez de processar um arquivo. Uma requisição retorna um título com elenco, trailers e avaliações por meio de append_to_response, e o formato segue o TMDB v3, então as bibliotecas cliente existentes funcionam. A mesma chave atende o endpoint no estilo OMDb, o que mantém funcionando o código antigo que lê imdbRating.
O bloco de avaliações é um objeto fixo com cinco chaves. Uma fonte desconhecida é null, não uma chave ausente, então o código que lê ratings.imdb não precisa verificar se o objeto pai existe. Um número de votos pode vir ao lado do valor, o que permite ocultar uma nota baseada em poucos votos. Ele também pode ser null, como acontece em três das cinco fontes do exemplo acima.
Onde o IMDb é mais indicado
- A origem da nota. O IMDb publica suas próprias avaliações primeiro. O amodb retorna um valor só quando ele é conhecido, então um título novo ou obscuro pode vir
null. - Recursos do site. Resenhas de usuários, listas e listas para assistir ficam no site do IMDb. O amodb é uma API de metadados e não oferece contas de usuário.
- Dados licenciados. Se um parceiro ou um contrato exige dados licenciados do IMDb, só o IMDb pode fornecê-los.
- Análise offline. Os arquivos de dataset não comerciais servem para pesquisa em lote que você roda na sua própria máquina. Consulte a documentação deles para ver os termos.
Migrar para o amodb
É provável que você tenha uma lista de IDs do IMDb. Mapeie cada um para um ID do amodb uma única vez, guarde o par e depois chame os detalhes pelo ID numérico.
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)Os três IDs acima correspondem a 550, 603 e 27205, que são Fight Club, The Matrix e Inception. Um ID de série como tt0903747 volta em tv_results, onde Breaking Bad tem o ID 1396. Um array vazio significa que nenhum resultado foi encontrado para aquele ID.
Controle o ritmo do laço. Cada ID é uma requisição, e um 429 inclui o cabeçalho Retry-After com os segundos de espera. Veja erros para os outros códigos.
Guarde os IDs com segurança
- Mantenha os IDs do IMDb como strings. Eles começam com
tte têm zeros à esquerda, como emtt0137523, e um tipo numérico descarta esses zeros. - Salve o ID do IMDb e o ID do amodb como um par. Qualquer um dos dois encontra o título de novo.
- Leia
tv_resultspara séries emovie_resultspara filmes. Um único ID normalmente preenche um array e deixa os outros vazios. - A partir daí, peça os detalhes pelo ID do amodb, porque uma chamada de detalhes pode trazer elenco, trailers e avaliações com
append_to_response.
Preços
Escolha um de três planos de 20, 40 ou 120 requisições por minuto e pré-pague 1, 3, 6, 12 ou 24 meses. Períodos mais longos dão 10, 20, 30 ou 40 por cento de desconto. Todos os planos retornam os mesmos dados, nada renova sozinho e não há plano gratuito. Veja preços para os valores.