Trabalhos diferentes, ferramentas diferentes

O Trakt gira em torno de dados de usuário: histórico, watchlists, avaliações, calendários e login por OAuth. Ele também tem endpoints públicos de metadados, e a documentação dele informa os limites que valem. O amodb tem uma única função: metadados de filmes, TV e pessoas, retornados como JSON no formato TMDB v3. Escolha o Trakt para o que os seus usuários fizeram. Escolha o amodb para o que um título é. A maioria dos apps que precisam dos dois chama cada serviço para a sua metade.

Dados de usuário e dados de títulos

FunçãoTraktamodb
Histórico de exibiçãoRecurso centralNão oferecido, guarde você mesmo
Watchlists e listasRecurso centralNão oferecido, escritas retornam 405
Avaliações de usuáriosRecurso centralNão oferecido, escritas retornam 405
CalendáriosPor usuário, consulte a documentação delesnext_episode_to_air por série e listas de programação
LoginOAuthSó a chave, sem login de usuário
Metadados de títulosEndpoints públicos, consulte a documentação deles sobre limitesEndpoints de detalhes em 14 idiomas
Elenco e equipe técnicaConsulte a documentação deles/credits para um título, combined_credits para uma pessoa
ImagensConsulte a documentação delesimg.amodb.dev, sem chave
TrailersConsulte a documentação deles/videos com type e official
Alterado desde uma dataConsulte a documentação delesNão oferecido, não há feeds de alterações

Para programações, GET /3/tv/airing_today e GET /3/tv/on_the_air listam séries por data de exibição, e cada registro de série traz o seu próprio next_episode_to_air. Para uma série que já terminou, esse campo é null. As duas listas são descritas em em alta e listas. O calendário de um usuário é algo que você monta a partir dos seus próprios registros de exibição.

Comparação de recursos

RecursoTraktamodb
Modelo de preçoConsulte a documentação delesPeríodos pré-pagos de 1 a 24 meses
Plano gratuitoConsulte a documentação delesNenhum, e sem período de teste
AutenticaçãoOAuth para dados de usuário, consulte a documentação deles sobre chamadas públicasapi_key ou cabeçalho Bearer
Formato da respostaJSON, consulte a documentação delesJSON no formato TMDB v3
IdiomasConsulte a documentação deles14 idiomas de interface
FilmesSimSim
TVSimSim, com temporadas e episódios
PessoasConsulte a documentação delesSim
ImagensConsulte a documentação delesimg.amodb.dev, mesmos tokens de tamanho do TMDB
AvaliaçõesAvaliações de usuários, consulte a documentação delesNotas do IMDb, Kinopoisk, Metacritic, Rotten Tomatoes e TMDB, quando conhecidas
Limite de requisiçõesConsulte a documentação deles sobre os limites20, 40 ou 120 por minuto por chave
Uso comercialConsulte a documentação delesPlanos pagos, veja preços
CompatibilidadeAPI própriaLeituras do TMDB v3 e OMDb

Onde o amodb se diferencia

  • Sem tela de login para os seus usuários. Uma chave no servidor basta. Ninguém conecta uma conta, então não há token para renovar nem tela de consentimento para explicar.
  • Variedade de campos. Duração, gêneros, produtoras, classificações indicativas, traduções e palavras-chave vêm todos dos endpoints de detalhes, no idioma que você pedir.
  • Limites publicados. O limite do plano é um número por minuto, e cada resposta mostra o que resta. Você pode dimensionar uma sincronização em segundo plano com esses números.
  • Medidores de mood e trilhas sonoras. As extensões em moods (clima emocional) e trilhas sonoras acrescentam dados que não fazem parte do TMDB v3.

Onde o Trakt é mais indicado

  • Qualquer coisa pessoal. Scrobbling, sincronização de histórico, listas sociais e calendários por usuário são recursos do Trakt. O amodb não tem contas nem métodos de escrita.
  • Estado entre dispositivos. Se um usuário espera as mesmas marcas de assistido no celular e na TV, o estado precisa viver em um serviço de usuários, e o amodb não é um.
  • Apps OAuth existentes. Se o seu app já guarda tokens do Trakt, você os mantém. Acrescente o amodb só para os dados de títulos que hoje busca em outro lugar.

Migrar para o amodb: relacione seus registros

Você não migra dados de usuário, porque o amodb não guarda nenhum. Você troca as chamadas de metadados. Os itens do Trakt trazem IDs de outros bancos (consulte a documentação deles para os campos exatos), então guarde o ID do TMDB ou o do IMDb ao lado de cada registro de exibição e use-o aqui.

PHP
<?php
declare(strict_types=1);

function amodb(string $path): array
{
    $ch = curl_init('https://api.amodb.dev/3' . $path);
    curl_setopt_array($ch, [
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_TIMEOUT => 10,
        CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . getenv('AMODB_KEY')],
    ]);
    $body = curl_exec($ch);
    $status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    curl_close($ch);
    if ($status !== 200) {
        throw new RuntimeException("amodb returned $status");
    }
    return json_decode($body, true);
}

$show = amodb('/tv/1396?language=en-US');
$next = $show['next_episode_to_air'] ?? null;
echo $show['name'], ' ', $show['status'], PHP_EOL;
echo $next ? 'Next: ' . $next['air_date'] : 'No episode scheduled', PHP_EOL;

Quando você tem apenas um ID do IMDb, chame /3/find/tt0903747?external_source=imdb_id uma vez e guarde o ID de tv_results. Um 429 inclui Retry-After, como descrito em limites de requisições.

Dimensionar um job de atualização

A biblioteca de um usuário com 200 séries precisa de 200 requisições de detalhes para atualizar uma vez. A 20 requisições por minuto isso leva 10 minutos, a 40 leva 5 e a 120 leva menos de 2. A verificação da chave roda antes do cache de borda, então chamadas repetidas também contam. O amodb não tem feeds de alterações, então não consegue dizer quais IDs mudaram desde uma data. Leia status e next_episode_to_air na resposta de detalhes. Atualize com frequência as séries que ainda estão no ar e raramente as encerradas. Os detalhes ficam em cache por 6 horas, então atualizar com mais frequência devolve os mesmos dados.

Preços

O amodb é pré-pago e não renova sozinho. Escolha 1, 3, 6, 12 ou 24 meses, que dão 0, 10, 20, 30 ou 40 por cento de desconto, e um de três planos de 20, 40 ou 120 requisições por minuto. Todo plano retorna todos os dados e não há plano gratuito. Os valores estão em preços.