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 querChamadaVocê recebe
Um título a partir de um ID do IMDbGET /3/find/tt0137523?external_source=imdb_idArrays movie_results, tv_results, person_results
O ID do IMDb de um filmeGET /3/movie/550, campo imdb_idtt0137523 para Fight Club
O ID do IMDb de uma sérieGET /3/tv/1396/external_idsimdb_id ao lado do ID do TVDB
A nota do IMDbGET /3/movie/550/ratingsimdb como value e votes, ou null
Um registro no estilo OMDbGET /omdb/?i=tt0137523imdbRating, 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.

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

RecursoIMDbamodb
Modelo de preçoAcesso comercial licenciado, consulte a documentação delesPré-pago, de 1 a 24 meses
Plano gratuitoSem API REST gratuita de uso geralNenhum, e sem período de teste
AutenticaçãoConsulte a documentação delesParâmetro de consulta api_key ou cabeçalho Bearer
Formato da respostaArquivos de dataset para download, consulte a documentação deles sobre feeds licenciadosJSON
IdiomasConsulte a documentação deles14 idiomas de interface
FilmesConsulte a documentação deles sobre os camposDetalhes, créditos, imagens, vídeos
TVConsulte a documentação deles sobre os camposSéries, temporadas, episódios
PessoasConsulte a documentação deles sobre os camposPerfis, filmografia, imagens
ImagensConsulte a documentação delesimg.amodb.dev, sem chave
AvaliaçõesNota própria, consulte a documentação deles sobre o acessoCinco fontes, o IMDb entre elas, quando conhecidas
Limite de requisiçõesConsulte a documentação deles20, 40 ou 120 requisições por minuto
Uso comercialLicenciado, consulte a documentação delesPlanos pagos, veja preços
CompatibilidadeFormatos próprios, consulte a documentação delesLeituras 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.

bashpy
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 tt e têm zeros à esquerda, como em tt0137523, 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_results para séries e movie_results para 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.