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.

Mis à jour le Voir en Markdown

Obtenir les détails d'un film

GET /3/movie/{movie_id} 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.

bashjspyphpgo
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_idcheminobligatoire
    Identifiant numérique du film, par exemple 550.
  • api_keyrequêtel'un des deux
    Votre clé. Utilisez-la ou l'en-tête Authorization: Bearer.
  • languagerequête
    Balise TMDB comme en-US, ru-RU ou pt-BR. 14 langues de base sont servies. Par défaut en-US.
  • append_to_responserequête
    Liste séparée par des virgules d'au plus 20 sous-ressources à fusionner dans la réponse.

Champs de la réponse

ChampTypeRemarques
identierIdentifiant du film.
imdb_idchaîne ou nullIdentifiant IMDb comme tt0137523.
title, original_titlechaîneTitre localisé et titre original.
original_languagechaîneCode de langue comme en.
overview, taglinechaîneTexte localisé, vide quand il n'existe pas de traduction.
homepagechaîneSite officiel, vide quand il est inconnu.
release_datechaîneYYYY-MM-DD, vide quand elle est inconnue.
statuschaîneÉtat de sortie, par exemple Released ou In Production.
runtimeentierMinutes.
budget, revenueentierDollars américains, 0 quand c'est inconnu.
genrestableauObjets avec id et name.
belongs_to_collectionobjet ou nullid, name, poster_path, backdrop_path. Voir collections.
production_companiestableauid, logo_path, name, origin_country.
production_countriestableauiso_3166_1, name.
spoken_languagestableauenglish_name, iso_639_1, name.
origin_countrytableauCodes pays comme US.
poster_path, backdrop_pathchaîne ou nullÀ ajouter à https://img.amodb.dev/t/p/{size}. Voir images.
popularitynombreScore relatif utilisé par la liste des populaires.
vote_average, vote_countnombre, entierNote agrégée des utilisateurs.
adult, videobooléenLes deux valent false. Les titres pour adultes ne sont jamais servis.

Exemple de réponse

GET /3/movie/550?language=en-US&append_to_response=ratings, avec les longs tableaux et textes raccourcis :

JSON
{
  "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.

ValeurAjouteDétails
ratingsNotes IMDb, Kinopoisk, Metacritic, Rotten Tomatoes et TMDBNotes
moodsJauges d'ambianceAmbiances
soundtracksMorceaux entendus dans le filmBandes originales
wikidataIdentifiant Wikidata, budget, recettes, récompenses, lieux de tournageRecherche par identifiant externe
showtimesSéances de cinéma quand elles sont connuesSé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://api.amodb.dev/3 et le paramètre language.

Méthode et cheminRenvoieParamètres supplémentaires
GET /movie/{movie_id}/alternative_titles{id, titles}, souvent un tableau videaucun
GET /movie/{movie_id}/release_datesDates de sortie et classifications par paysaucun
GET /movie/{movie_id}/recommendationsUne liste de 20 films recommandésaucun
GET /movie/{movie_id}/similarUne liste de 20 films similairesaucun
GET /movie/{movie_id}/reviewsresults est vide pour la plupart des titresaucun
GET /movie/{movie_id}/listsListes publiques qui contiennent le filmpage
GET /movie/{movie_id}/watch/providersPlateformes de streaming et de location par paysaucun
GET /movie/latestLa fiche de film la plus récente ajoutéeaucun

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, "status_code": 34, "status_message": "The resource you requested could not be found."}.

HTTPstatus_codeQuand
4017La clé est absente ou fausse.
40236La période de l'offre est terminée.
40434Aucun film avec cet identifiant, un chemin non proposé, ou un titre pour adultes.
40537Vous avez appelé une méthode d'écriture comme noter un film.
42925Vous 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'id et 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-US si 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.