API de détails de film
Le point de terminaison de détails renvoie un film par id sur GET /3/movie/{movie_id}. Le JSON suit TMDB v3 : les clients existants n'ont besoin que d'une nouvelle URL de base. Ajoutez append_to_response pour récupérer crédits, vidéos, images et les extras amodb ratings, moods, soundtracks, wikidata et showtimes en une requête.
Obtenir les détails d'un film
GET / renvoie la fiche de base d'un film : titres, résumé, durée, genres, date de sortie, budget, recettes, sociétés de production et chemins d'images. L'identifiant est le même identifiant numérique que celui de TMDB : un film que vous stockez déjà sous 550 garde cet identifiant ici.
L'exemple ci-dessous demande le film en anglais et ajoute ses notes dans le même appel.
curl -s "https://api.amodb.dev/3/movie/550?language=en-US&append_to_response=ratings" \
-H "Authorization: Bearer $AMODB_KEY"const url = 'https://api.amodb.dev/3/movie/550?language=en-US&append_to_response=ratings';
const res = await fetch(url, { headers: { Authorization: `Bearer ${process.env.AMODB_KEY}` } });
if (!res.ok) throw new Error(`amodb returned ${res.status}`);
const movie = await res.json();
console.log(movie.title, movie.runtime, movie.ratings.imdb?.value);import os
import requests
r = requests.get(
"https://api.amodb.dev/3/movie/550",
params={"language": "en-US", "append_to_response": "ratings"},
headers={"Authorization": f"Bearer {os.environ['AMODB_KEY']}"},
timeout=10,
)
r.raise_for_status()
movie = r.json()
imdb = movie["ratings"]["imdb"]
print(movie["title"], movie["runtime"], imdb and imdb["value"])<?php
$url = 'https://api.amodb.dev/3/movie/550?language=en-US&append_to_response=ratings';
$ch = curl_init($url);
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");
}
$movie = json_decode($body, true);
echo $movie['title'], ' ', $movie['runtime'], ' ', $movie['ratings']['imdb']['value'] ?? 'n/a', PHP_EOL;package main
import (
"encoding/json"
"fmt"
"net/http"
"os"
)
type Movie struct {
Title string `json:"title"`
Runtime int `json:"runtime"`
}
func main() {
url := "https://api.amodb.dev/3/movie/550?language=en-US"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Set("Authorization", "Bearer "+os.Getenv("AMODB_KEY"))
res, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer res.Body.Close()
if res.StatusCode != http.StatusOK {
panic(res.Status)
}
var m Movie
json.NewDecoder(res.Body).Decode(&m)
fmt.Println(m.Title, m.Runtime)
}Paramètres
movie_idcheminobligatoireIdentifiant numérique du film, par exemple550.api_keyrequêtel'un des deuxVotre clé. Utilisez-la ou l'en-têteAuthorization: Bearer.languagerequêteBalise TMDB commeen-US,ru-RUoupt-BR. 14 langues de base sont servies. Par défauten-US.append_to_responserequêteListe séparée par des virgules d'au plus 20 sous-ressources à fusionner dans la réponse.
Champs de la réponse
| Champ | Type | Remarques |
|---|---|---|
id | entier | Identifiant du film. |
imdb_id | chaîne ou null | Identifiant IMDb comme tt0137523. |
title, original_title | chaîne | Titre localisé et titre original. |
original_language | chaîne | Code de langue comme en. |
overview, tagline | chaîne | Texte localisé, vide quand il n'existe pas de traduction. |
homepage | chaîne | Site officiel, vide quand il est inconnu. |
release_date | chaîne | YYYY-MM-DD, vide quand elle est inconnue. |
status | chaîne | État de sortie, par exemple Released ou In Production. |
runtime | entier | Minutes. |
budget, revenue | entier | Dollars américains, 0 quand c'est inconnu. |
genres | tableau | Objets avec id et name. |
belongs_to_collection | objet ou null | id, name, poster_path, backdrop_path. Voir collections. |
production_companies | tableau | id, logo_path, name, origin_country. |
production_countries | tableau | iso_3166_1, name. |
spoken_languages | tableau | english_name, iso_639_1, name. |
origin_country | tableau | Codes pays comme US. |
poster_path, backdrop_path | chaîne ou null | À ajouter à https:/. Voir images. |
popularity | nombre | Score relatif utilisé par la liste des populaires. |
vote_average, vote_count | nombre, entier | Note agrégée des utilisateurs. |
adult, video | booléen | Les deux valent false. Les titres pour adultes ne sont jamais servis. |
Exemple de réponse
GET /, avec les longs tableaux et textes raccourcis :
{
"adult": false,
"backdrop_path": "/b9HyPoxwxjxkWEUL5ErZdhApQe2.jpg",
"belongs_to_collection": null,
"budget": 63000000,
"genres": [
{
"id": 18,
"name": "Drama"
},
{
"id": 53,
"name": "Thriller"
}
],
"homepage": "https://www.20thcenturystudios.com/movies/fight-club",
"id": 550,
"imdb_id": "tt0137523",
"origin_country": [
"US",
"DE"
],
"original_language": "en",
"original_title": "Fight Club",
"overview": "A ticking-time-bomb insomniac and a slippery soap salesman channel primal male aggression into a shocking n...",
"popularity": 39.0054,
"poster_path": "/jSziioSwPVrOy9Yow3XhWIBDjq1.jpg",
"production_companies": [
{
"id": 25,
"logo_path": "/nM2MfoMqzJQRiSynsDabOtFKetD.png",
"name": "20th Century Fox",
"origin_country": "US"
},
{
"id": 508,
"logo_path": "/4sGWXoboEkWPphI6es6rTmqkCBh.png",
"name": "Regency Enterprises",
"origin_country": "US"
}
],
"production_countries": [
{
"iso_3166_1": "US",
"name": "United States of America"
},
{
"iso_3166_1": "DE",
"name": "Germany"
}
],
"release_date": "1999-10-15",
"revenue": 101209702,
"runtime": 139,
"spoken_languages": [
{
"english_name": "English",
"iso_639_1": "en",
"name": "English"
}
],
"status": "Released",
"tagline": "Mischief. Mayhem. Soap.",
"title": "Fight Club",
"video": false,
"vote_average": 8.437,
"vote_count": 33039,
"ratings": {
"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
}
}
}Le bloc ratings vient de append_to_response. Chaque fournisseur est un objet {value, votes} ou null, comme décrit sur notes.
Combiner des données avec append_to_response
Un appel peut en remplacer six. Listez les sous-ressources dont vous avez besoin et chacune arrive sous sa propre clé. Les valeurs TMDB standard fonctionnent : credits, videos, images, keywords, translations, external_ids, release_dates, alternative_titles, recommendations, similar, reviews, lists et watch/providers. amodb en ajoute cinq autres.
| Valeur | Ajoute | Détails |
|---|---|---|
ratings | Notes IMDb, Kinopoisk, Metacritic, Rotten Tomatoes et TMDB | Notes |
moods | Jauges d'ambiance | Ambiances |
soundtracks | Morceaux entendus dans le film | Bandes originales |
wikidata | Identifiant Wikidata, budget, recettes, récompenses, lieux de tournage | Recherche par identifiant externe |
showtimes | Séances de cinéma quand elles sont connues | Séances |
Chaque bloc ajouté compte comme une partie d'une seule requête HTTP. Une requête avec dix valeurs ajoutées n'utilise toujours qu'une de vos 20, 40 ou 120 requêtes par minute. Les blocs ratings, moods et soundtracks ajoutés omettent la clé id que renvoient les chemins autonomes.
Points de terminaison de films associés
Tous les chemins ci-dessous partagent la base https:/ et le paramètre language.
| Méthode et chemin | Renvoie | Paramètres supplémentaires |
|---|---|---|
GET / | {id, titles}, souvent un tableau vide | aucun |
GET / | Dates de sortie et classifications par pays | aucun |
GET / | Une liste de 20 films recommandés | aucun |
GET / | Une liste de 20 films similaires | aucun |
GET / | results est vide pour la plupart des titres | aucun |
GET / | Listes publiques qui contiennent le film | page |
GET / | Plateformes de streaming et de location par pays | aucun |
GET /movie/latest | La fiche de film la plus récente ajoutée | aucun |
Les listes de recommandations et de films similaires renvoient toujours la page 1 avec 20 éléments. La réponse de lists est paginée avec page, 20 listes par page. Les listes paginées ailleurs dans l'API acceptent page de 1 à 500.
Les crédits, images, vidéos, traductions, mots-clés et identifiants externes ont leurs propres pages : crédits, images, vidéos et bandes-annonces, traductions, mots-clés et recherche par identifiant externe. amodb ne propose pas les chemins changes de TMDB.
Erreurs
Les erreurs utilisent le corps TMDB, par exemple {"success": false,.
| HTTP | status_code | Quand |
|---|---|---|
| 401 | 7 | La clé est absente ou fausse. |
| 402 | 36 | La période de l'offre est terminée. |
| 404 | 34 | Aucun film avec cet identifiant, un chemin non proposé, ou un titre pour adultes. |
| 405 | 37 | Vous avez appelé une méthode d'écriture comme noter un film. |
| 429 | 25 | Vous avez dépassé vos requêtes par minute. Attendez les secondes de Retry-After. |
La liste complète est sur la page erreurs, et les limites par offre sont sur limites de débit.
Remarques pratiques
- Stockez ensemble l'
idet l'imdb_id. L'un ou l'autre retrouve le film via la recherche par identifiant externe. - Demandez la langue que vous affichez. Un champ de texte peut être vide quand il n'existe pas de traduction dans cette langue : testez donc la chaîne vide et redemandez en
en-USsi vous avez besoin d'un repli. - Mettez les détails en cache de votre côté pendant quelques heures. Le cache du serveur les garde déjà 6 heures, donc un cache client plus court n'apporte rien.
- Pour lister des films au lieu d'en lire un seul, voir recherche, découverte et tendances et listes.