La comparaison en bref

amodb est une API indépendante qui parle le même protocole que TMDB v3. Un client écrit pour TMDB lit depuis amodb après le changement de l'URL de base et de la clé, tant qu'il n'appelle aucun chemin du tableau des éléments non proposés ci-dessous. Le choix porte donc sur les conditions, les extras et quelques manques. TMDB propose une API gratuite pour un usage admissible selon ses propres conditions. amodb est une API payante en lecture seule, avec 14 langues, cinq blocs de données supplémentaires et une limite comptée par clé.

Parité des points de terminaison

Chaque ligne montre un chemin de lecture TMDB v3 et son comportement sur https://api.amodb.dev/3.

DomaineChemin TMDB v3Sur amodb
Détails d'un film/movie/{movie_id}Identique, avec cinq valeurs append_to_response en plus
Détails d'une série/tv/{series_id}Identique, mais sans champ type, et created_by est vide pour la plupart des séries
Saisons et épisodes/tv/{series_id}/season/{season_number}Même forme. Les images, vidéos et traductions de saisons sont vides, et les external_ids des saisons et des épisodes sont nuls
Personnes/person/{person_id}Identique, avec combined_credits, movie_credits, tv_credits, external_ids et images (profils uniquement)
Crédits/movie/{movie_id}/creditsIdentique. Sur les épisodes, cast est vide
Recherche/search/multiIdentique, en cache 10 minutes
Découverte/discover/movieIdentique, en cache 30 minutes
Tendances/trending/{media_type}/{time_window}Identique, en cache 30 minutes
Listes/movie/popularIdentique, page de 1 à 500
Images/movie/{movie_id}/imagesMême forme, les fichiers se chargent depuis img.amodb.dev
Vidéos/movie/{movie_id}/videosIdentique
Traductions/movie/{movie_id}/translationsIdentique, 14 langues servies
Mots-clés/movie/{movie_id}/keywordsIdentique
Critiques/movie/{movie_id}/reviewsRépond 200, mais seuls quelques titres ont des critiques : une liste vide est normale
Collections/collection/{collection_id}Identique, parts triés par date de sortie
Sociétés et chaînes/company/{company_id}Mêmes clés. La description d'une société est vide et parent_company est null
Genres/genre/movie/listIdentique
Configuration/configurationMêmes clés, l'hôte des images est img.amodb.dev
Recherche par identifiant externe/find/{external_id}Même point de terminaison, plus kinopoisk_id. tv_episode_results et tv_season_results sont toujours vides
Groupes d'épisodes/tv/{series_id}/episode_groupsListe les groupes d'une série, sans leur contenu

Non proposé sur amodb

Ces appels TMDB v3 n'ont pas d'équivalent. Les chemins inconnus répondent 404 avec status_code 34, et les méthodes d'écriture répondent 405 avec status_code 37.

Appel TMDB v3Réponse d'amodb
/movie/changes, /tv/changes, /person/changes et changes sous un identifiant404, status_code 34
aggregate_credits sous une série ou une saison404, status_code 34
/credit/{credit_id} et /review/{review_id}404, status_code 34
/tv/episode_group/{id}404, status_code 34
/person/{person_id}/translations, tagged_images et /person/latest404, status_code 34
images, translations et alternative_names pour les collections, les sociétés et les chaînes404, status_code 34
/configuration/timezones404, status_code 34
Tout ce qui est sous account, authentication, guest_session et list, ainsi que tout chemin /rating ou /account_states405, status_code 37

Si vous ajoutez aggregate_credits ou changes à append_to_response, amodb ignore le nom sans erreur, et la clé est donc simplement absente du corps.

Comparatif des fonctionnalités

FonctionnalitéTMDBamodb
Modèle tarifaireGratuit pour un usage admissible, selon les conditions de TMDBPrépayé, de 1 à 24 mois par achat
Offre gratuiteOui, pour un usage admissibleAucune, et pas d'essai
AuthentificationClé v3 dans api_key, ou jeton v4 en Bearerapi_key ou Bearer avec une clé hexadécimale de 32 caractères
Format de réponseJSONJSON, mêmes champs sur les chemins servis
LanguesVoir leur documentation14 servies, les autres balises se replient sur en
FilmsOuiOui
SériesOuiOui
PersonnesOuiOui
ImagesOuiimg.amodb.dev, tailles de w92 à original
NotesNote des utilisateurs TMDB, autres sources : voir leur documentationCinq sources dans un seul objet quand elles sont connues
Méthodes d'écritureMéthodes de compte, de liste et de notationAucune, elles répondent 405
Limite de débitVoir leur documentation20, 40 ou 120 par minute et par clé
Usage commercialVoir leurs conditions sur l'usage commercial et l'attributionOffres payantes, voir les tarifs
CompatibilitéDéfinit TMDB v3La plupart des chemins de lecture TMDB v3 et une route OMDb

Ce qui diffère en détail

  • Conditions. TMDB vous demande de lire ses conditions sur l'usage commercial et l'attribution. amodb se vend par période prépayée, sans renouvellement automatique, sans offre gratuite et sans essai.
  • Langues. amodb sert en, ru, uk, be, zh, pt, bg, he, cs, ro, fr, pl, it et es. Il accepte les balises TMDB comme ru-RU et pt-BR. L'allemand, le japonais et le coréen se replient sur en, tandis que original_title garde le titre d'origine. Pour la couverture linguistique de TMDB, voir leur documentation. Voir langues.
  • Extensions. append_to_response accepte aussi moods, soundtracks, ratings, wikidata et showtimes, et chacune a son propre chemin sous les films et les séries.
  • Identifiants externes. /3/find résout imdb_id, tvdb_id, wikidata_id, kinopoisk_id, facebook_id, twitter_id et instagram_id. Les sources freebase_mid, freebase_id, tvrage_id, tiktok_id et youtube_id sont acceptées mais renvoient des tableaux vides. Un external_source absent ou inconnu répond 400 avec status_code 22.
  • Vide par conception. Les images, vidéos et traductions de saisons ainsi que la description d'une société sont toujours vides. Les critiques et created_by d'une série ne sont remplis que pour quelques titres. Les external_ids des saisons et des épisodes sont tous nuls.
  • Titres pour adultes. include_adult est ignoré. Les titres et les personnes pour adultes ne sont jamais servis et répondent 404.
  • Images. Le chemin du CDN est https://img.amodb.dev/t/p/{size}/{file}. Aucune clé n'est nécessaire et les fichiers sont mis en cache 30 jours.
  • Limites. La fenêtre est une fenêtre glissante de 60 secondes par clé. Les en-têtes indiquent le nombre restant, et les réponses servies depuis le cache comptent quand même, car la vérification de la limite passe en premier.
  • Indépendance. Le catalogue vient de sources publiques et ouvertes et de notre propre enrichissement. Une forme commune ne garantit pas des valeurs identiques pour chaque champ de chaque titre.

Quand TMDB convient mieux

  • Usage gratuit admissible. Aucun paiement n'est nécessaire, et amodb ne peut pas rivaliser.
  • Écritures. Noter un titre, créer une liste et gérer les sessions de compte fonctionnent sur TMDB. Sur amodb, elles renvoient 405.
  • Flux de changements. TMDB liste les identifiants modifiés. amodb n'a pas de tel flux, vous actualisez donc selon votre propre calendrier.
  • Crédits agrégés et recherches de crédit. Les deux répondent 404 sur amodb. Utilisez /credits sur le titre.
  • Besoins linguistiques plus larges. Si votre interface exige une langue en dehors des 14, regardez d'abord chez TMDB.
  • Validation existante. Une équipe qui a validé TMDB avec une revue juridique doit peser le coût d'une seconde revue.

Migrer vers amodb

Le changement tient en une ligne par requête.

Shell
# before: TMDB_BASE is your current TMDB v3 base URL
curl -s "$TMDB_BASE/movie/550?api_key=$TMDB_KEY"

# after
curl -s "https://api.amodb.dev/3/movie/550?api_key=$AMODB_KEY"

Avant la bascule, comparez côte à côte la forme de quelques réponses. Ce script affiche les clés de premier niveau qu'un côté renvoie et pas l'autre.

JavaScript
async function topLevelKeys(base, key, path) {
  const res = await fetch(`${base}${path}?api_key=${key}`);
  if (!res.ok) throw new Error(`${path} returned ${res.status}`);
  return Object.keys(await res.json()).sort();
}

for (const path of ['/movie/550', '/tv/1396', '/person/31']) {
  const current = await topLevelKeys(process.env.TMDB_BASE, process.env.TMDB_KEY, path);
  const next = await topLevelKeys('https://api.amodb.dev/3', process.env.AMODB_KEY, path);
  const missing = current.filter((k) => !next.includes(k));
  console.log(path, missing.length ? `missing: ${missing.join(', ')}` : 'same keys');
}

Les champs facultatifs peuvent différer pour un titre donné, donc lisez une clé manquante comme une piste à examiner et non comme un verdict. Parcourez ensuite cette liste :

  1. Choisissez une offre sur les tarifs, puis créez une clé dans le tableau de bord de votre compte.
  2. Déplacez l'URL de base et la clé dans la configuration.
  3. Lisez images.secure_base_url dans /3/configuration.
  4. Cherchez dans votre code les appels d'écriture et les chemins du tableau des éléments non proposés. Gardez les écritures sur TMDB et remplacez le reste.
  5. Ajoutez un gestionnaire de 429 qui attend Retry-After secondes. Voir limites de débit et erreurs.

Tarifs

amodb est prépayé. Choisissez 1, 3, 6, 12 ou 24 mois, qui donnent 0, 10, 20, 30 ou 40 pour cent de réduction, et l'une des trois offres à 20, 40 ou 120 requêtes par minute. Chaque offre renvoie toutes les données, et aucune ne se renouvelle toute seule. Voir les tarifs pour les montants.