Les données IMDb en REST : la réponse courte

IMDb n'a pas d'API REST généraliste gratuite. Ses jeux de données non commerciaux sont des fichiers à télécharger et l'accès commercial est sous licence, consultez donc leur documentation pour connaître les conditions actuelles. Si vous voulez appeler un point de terminaison HTTP avec un identifiant IMDb et recevoir du JSON, amodb le permet avec une offre payante. Si votre contrat exige des données sous licence d'IMDb elle-même, cet accord se conclut avec IMDb et amodb ne le remplace pas.

Les usages d'un identifiant IMDb sur amodb

Cinq appels couvrent la plupart des besoins. Chacun part d'un identifiant que vous avez déjà, ou en renvoie un.

Vous avez ou voulezAppelVous obtenez
Un titre à partir d'un identifiant IMDbGET /3/find/tt0137523?external_source=imdb_idLes tableaux movie_results, tv_results, person_results
L'identifiant IMDb d'un filmGET /3/movie/550, champ imdb_idtt0137523 pour Fight Club
L'identifiant IMDb d'une sérieGET /3/tv/1396/external_idsimdb_id à côté de l'identifiant TVDB
La note IMDbGET /3/movie/550/ratingsimdb avec value et votes, ou null
Une fiche de type OMDbGET /omdb/?i=tt0137523imdbRating, imdbVotes, imdbID

Chaque ligne fonctionne avec la même clé. Les notes sont décrites sur la page notes et les recherches par identifiant sur recherche par identifiant externe.

Lire la note IMDb

Le point de terminaison des notes renvoie la note et le nombre de votes ensemble. Voici une vraie réponse pour Fight Club (id 550). Les notes évoluent avec le temps.

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
  }
}

Pour IMDb, la value est sur une échelle de 0 à 10 avec une décimale. Affichez le nombre de votes à côté, et n'affichez rien quand l'objet vaut null. Dans cette réponse, seuls IMDb et TMDB fournissent des votes. votes peut valoir null pour n'importe quelle source : vérifiez-le avant de l'afficher. Une réponse en cache reste valide 6 heures en périphérie, interroger plus souvent n'apporte donc rien.

Comparatif des fonctionnalités

FonctionnalitéIMDbamodb
Modèle tarifaireAccès commercial sous licence, voir leur documentationPrépayé, de 1 à 24 mois
Offre gratuitePas d'API REST généraliste gratuiteAucune, et pas d'essai
AuthentificationVoir leur documentationParamètre de requête api_key ou en-tête Bearer
Format de réponseFichiers de jeux de données à télécharger, voir leur documentation pour les flux sous licenceJSON
LanguesVoir leur documentation14 langues d'interface
FilmsVoir leur documentation pour les champsDétails, distribution, images, vidéos
SériesVoir leur documentation pour les champsSéries, saisons, épisodes
PersonnesVoir leur documentation pour les champsProfils, filmographie, images
ImagesVoir leur documentationimg.amodb.dev, sans clé
NotesSa propre note, voir leur documentation pour l'accèsCinq sources dont IMDb, quand elles sont connues
Limite de débitVoir leur documentation20, 40 ou 120 requêtes par minute
Usage commercialSous licence, voir leur documentationOffres payantes, voir les tarifs
CompatibilitéSes propres formats, voir leur documentationLectures TMDB v3 et protocole OMDb

Ce qui distingue amodb

Vous appelez un point de terminaison au lieu d'analyser un fichier. Une seule requête renvoie un titre avec sa distribution, ses bandes-annonces et ses notes grâce à append_to_response, et la forme des données suit TMDB v3, donc les bibliothèques clientes existantes fonctionnent. La même clé sert le point de terminaison de type OMDb, ce qui maintient en état de marche le code plus ancien qui lit imdbRating.

Le bloc des notes est un objet fixe à cinq clés. Une source inconnue vaut null et la clé ne disparaît pas : le code qui lit ratings.imdb n'a donc pas besoin de vérifier l'existence du parent. Un nombre de votes peut accompagner la valeur, ce qui permet de masquer une note qui repose sur peu de votes. Il peut aussi valoir null, comme c'est le cas pour trois des cinq sources dans l'exemple ci-dessus.

Quand IMDb convient mieux

  • L'origine de la note. IMDb publie d'abord ses propres notes. amodb ne renvoie une valeur que lorsqu'elle est connue, si bien qu'un titre récent ou obscur peut revenir avec null.
  • Les fonctions du site. Les critiques d'utilisateurs, les listes et les watchlists vivent sur le site IMDb. amodb est une API de métadonnées et n'offre aucun compte utilisateur.
  • Les données sous licence. Si un partenaire ou un contrat exige des données sous licence IMDb, seul IMDb peut les fournir.
  • L'analyse hors ligne. Les fichiers de jeux de données non commerciaux conviennent à la recherche en masse que vous exécutez sur votre propre machine. Consultez leur documentation pour les conditions.

Migrer vers amodb

Vous avez très probablement une liste d'identifiants IMDb. Associez chacun à un identifiant amodb une seule fois, conservez la paire, puis appelez les détails par l'identifiant numérique.

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)

Les trois identifiants ci-dessus correspondent à 550, 603 et 27205, c'est-à-dire Fight Club, The Matrix et Inception. Un identifiant de série comme tt0903747 revient dans tv_results, où Breaking Bad a l'id 1396. Un tableau vide signifie qu'aucune correspondance n'a été trouvée pour cet identifiant.

Rythmez la boucle. Chaque identifiant coûte une requête, et une réponse 429 contient un en-tête Retry-After avec le nombre de secondes à attendre. Voir les erreurs pour les autres codes.

Conserver les identifiants sans risque

  • Gardez les identifiants IMDb sous forme de chaînes. Ils commencent par tt et portent des zéros initiaux, comme dans tt0137523, alors qu'un type numérique supprime ces zéros.
  • Enregistrez l'identifiant IMDb et l'identifiant amodb en paire. L'un ou l'autre permet de retrouver le titre.
  • Lisez tv_results pour les séries et movie_results pour les films. Un identifiant remplit normalement un seul tableau et laisse les autres vides.
  • Demandez ensuite les détails par l'identifiant amodb, car un appel de détails peut inclure distribution, bandes-annonces et notes grâce à append_to_response.

Tarifs

Choisissez l'une des trois offres à 20, 40 ou 120 requêtes par minute et payez d'avance 1, 3, 6, 12 ou 24 mois. Les périodes plus longues bénéficient de 10, 20, 30 ou 40 pour cent de réduction. Toutes les offres renvoient les mêmes données, rien ne se renouvelle tout seul, et il n'y a pas d'offre gratuite. Voir les tarifs pour les montants.