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 voulez | Appel | Vous obtenez |
|---|---|---|
| Un titre à partir d'un identifiant IMDb | GET / | Les tableaux movie_results, tv_results, person_results |
| L'identifiant IMDb d'un film | GET /3/movie/550, champ imdb_id | tt0137523 pour Fight Club |
| L'identifiant IMDb d'une série | GET / | imdb_id à côté de l'identifiant TVDB |
| La note IMDb | GET / | imdb avec value et votes, ou null |
| Une fiche de type OMDb | GET /omdb/?i=tt0137523 | imdbRating, 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.
{
"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é | IMDb | amodb |
|---|---|---|
| Modèle tarifaire | Accès commercial sous licence, voir leur documentation | Prépayé, de 1 à 24 mois |
| Offre gratuite | Pas d'API REST généraliste gratuite | Aucune, et pas d'essai |
| Authentification | Voir leur documentation | Paramètre de requête api_key ou en-tête Bearer |
| Format de réponse | Fichiers de jeux de données à télécharger, voir leur documentation pour les flux sous licence | JSON |
| Langues | Voir leur documentation | 14 langues d'interface |
| Films | Voir leur documentation pour les champs | Détails, distribution, images, vidéos |
| Séries | Voir leur documentation pour les champs | Séries, saisons, épisodes |
| Personnes | Voir leur documentation pour les champs | Profils, filmographie, images |
| Images | Voir leur documentation | img.amodb.dev, sans clé |
| Notes | Sa propre note, voir leur documentation pour l'accès | Cinq sources dont IMDb, quand elles sont connues |
| Limite de débit | Voir leur documentation | 20, 40 ou 120 requêtes par minute |
| Usage commercial | Sous licence, voir leur documentation | Offres payantes, voir les tarifs |
| Compatibilité | Ses propres formats, voir leur documentation | Lectures 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.
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
ttet portent des zéros initiaux, comme danstt0137523, 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_resultspour les séries etmovie_resultspour 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.