Genres et listes de référence
Les genres et listes de référence sont de petites listes à charger une fois : identifiants de genres de films et de séries avec noms en 14 langues, plus pays, langues, métiers, classifications par âge et plateformes. Ils suivent les chemins TMDB v3, sans pagination, changent rarement : mettez-les en cache un jour.
Obtenir la liste des genres de films
GET / renvoie chaque genre de film sous forme d'un id et d'un name. Les identifiants sont les nombres que porte genre_ids sur les éléments de liste et que with_genres attend dans découverte. Les noms suivent le paramètre language.
L'exemple charge la liste et construit une table identifiant vers nom, la première chose dont la plupart des applications ont besoin.
curl -s "https://api.amodb.dev/3/genre/movie/list?language=en-US" \
-H "Authorization: Bearer $AMODB_KEY"const url = 'https://api.amodb.dev/3/genre/movie/list?language=en-US';
const res = await fetch(url, { headers: { Authorization: `Bearer ${process.env.AMODB_KEY}` } });
if (!res.ok) throw new Error(`amodb returned ${res.status}`);
const { genres } = await res.json();
const names = new Map(genres.map((g) => [g.id, g.name]));
console.log(names.get(878), names.size);import os
import requests
r = requests.get(
"https://api.amodb.dev/3/genre/movie/list",
params={"language": "en-US"},
headers={"Authorization": f"Bearer {os.environ['AMODB_KEY']}"},
timeout=10,
)
r.raise_for_status()
names = {g["id"]: g["name"] for g in r.json()["genres"]}
print(names[878], len(names))<?php
$url = 'https://api.amodb.dev/3/genre/movie/list?language=en-US';
$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");
}
$names = [];
foreach (json_decode($body, true)['genres'] as $g) {
$names[$g['id']] = $g['name'];
}
echo $names[878], ' ', count($names), PHP_EOL;package main
import (
"encoding/json"
"fmt"
"net/http"
"os"
"time"
)
type Genres struct {
Genres []struct {
ID int `json:"id"`
Name string `json:"name"`
} `json:"genres"`
}
func main() {
url := "https://api.amodb.dev/3/genre/movie/list?language=en-US"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Set("Authorization", "Bearer "+os.Getenv("AMODB_KEY"))
client := &http.Client{Timeout: 10 * time.Second}
res, err := client.Do(req)
if err != nil {
panic(err)
}
defer res.Body.Close()
if res.StatusCode != http.StatusOK {
panic(res.Status)
}
var g Genres
if err := json.NewDecoder(res.Body).Decode(&g); err != nil {
panic(err)
}
names := map[int]string{}
for _, x := range g.Genres {
names[x.ID] = x.Name
}
fmt.Println(names[878], len(names))
}Paramètres
api_keyrequêtel'un des deuxVotre clé. Utilisez-la ou l'en-têteAuthorization: Bearer.languagerequêteBalise TMDB commeen-US,ru-RUoupt-BR. Les noms sont renvoyés dans cette langue. Par défauten-US.
Champs de la réponse
| Champ | Type | Remarques |
|---|---|---|
genres | tableau | La liste entière en une seule réponse, sans pagination. |
genres[].id | entier | Identifiant de genre stable. |
genres[].name | chaîne | Nom du genre dans la langue demandée. |
Exemple de réponse
{
"genres": [
{ "id": 12, "name": "Adventure" },
{ "id": 14, "name": "Fantasy" },
{ "id": 16, "name": "Animation" },
{ "id": 18, "name": "Drama" }
]
}La réponse contient 27 genres triés par identifiant. Celle-ci est réduite aux 4 premiers.
Identifiants de genres
Les deux chemins de genres renvoient ces 27 genres, triés par identifiant. Les noms ci-dessous sont les noms anglais. Les autres langues renvoient les mêmes identifiants avec des noms traduits.
| Id | Nom |
|---|---|
| 12 | Adventure |
| 14 | Fantasy |
| 16 | Animation |
| 18 | Drama |
| 27 | Horror |
| 28 | Action |
| 35 | Comedy |
| 36 | History |
| 37 | Western |
| 53 | Thriller |
| 80 | Crime |
| 99 | Documentary |
| 878 | Science Fiction |
| 9648 | Mystery |
| 10402 | Music |
| 10749 | Romance |
| 10751 | Family |
| 10752 | War |
| 10759 | Action & Adventure |
| 10762 | Kids |
| 10763 | News |
| 10764 | Reality |
| 10765 | Sci-Fi & Fantasy |
| 10766 | Soap |
| 10767 | Talk |
| 10768 | War & Politics |
| 10770 | TV Movie |
Liste des genres de séries
GET /3/genre/tv/list accepte le même paramètre language et renvoie la liste identique : une seule table identifiant vers nom couvre donc les films et les séries. Dans les données de listes, les identifiants 10759 et 10762 à 10768 n'apparaissent que sur des éléments de séries, et des identifiants comme 28, 12 et 878 apparaissent sur des éléments de films. Quand vous filtrez les séries dans découverte, utilisez les identifiants de séries, par exemple 10765 pour Sci-Fi et Fantasy.
Listes de référence
Ces chemins renvoient des données de référence pour les formulaires, les filtres et les écrans de réglages. Tous demandent la clé ; aucun n'accepte page.
| Méthode et chemin | Paramètres | Chaque élément ou forme |
|---|---|---|
GET / | aucun | Tableau de { iso_ |
GET / | aucun | Tableau de { iso_ |
GET / | aucun | Tableau de 14 chaînes comme ru-RU |
GET / | aucun | Tableau de { department, jobs } où jobs liste les intitulés de métiers |
GET / | aucun | { certifications } indexé par code pays, 10 pays |
GET / | aucun | { certifications } indexé par code pays, une clé par pays du catalogue |
GET / | language | { results } de { iso_ |
GET / | language, watch_region | { results } de plateformes |
GET / | language, watch_region | { results } de plateformes |
/ et / ignorent language et renvoient toujours les mêmes noms. native_name dans la liste des régions suit language. amodb ne propose pas /.
Une entrée de classification nomme la classification, ce qu'elle signifie et son ordre de tri. Les entrées sont regroupées par code pays : un appel couvre donc tous les marchés. La liste des films contient les textes des classifications. Dans la liste des séries, meaning est une chaîne vide.
{
"certifications": {
"US": [
{ "certification": "PG", "meaning": "Some material may not be suitable for children under 10.", "order": 3 },
{ "certification": "R", "meaning": "Under 17 requires accompanying parent or adult guardian.", "order": 5 }
]
}
}L'exemple est réduit à 2 des 6 entrées des États-Unis. La liste des films couvre AU, BR, CA, DE, ES, FR, GB, IT, RU et US.
Une entrée de plateforme a provider_id, provider_name, logo_path, display_priority et display_priorities, une table code pays vers priorité. Sans watch_region, vous obtenez toutes les plateformes. Avec watch_region=US, vous ne gardez que les plateformes qui servent ce pays. Une région inconnue renvoie un tableau results vide. Passez un code de /. Les logos des plateformes se chargent depuis l'hôte d'images, voir images.
{
"display_priorities": { "AT": 1, "DE": 1, "GB": 1, "JP": 1, "US": 3 },
"display_priority": 3,
"logo_path": "/gMZdpavHmxFNnLpMHwVxfqeux2g.png",
"provider_name": "Amazon Prime Video",
"provider_id": 9
}Voici une entrée de /.
Erreurs
| 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 | Le chemin n'existe pas, par exemple /genre/book/list. |
| 405 | 37 | Vous avez utilisé une méthode d'écriture sur un chemin de référence. |
| 429 | 25 | Vous avez dépassé vos requêtes par minute. Attendez les secondes de Retry-After. |
Les détails de chaque code sont sur erreurs. Les limites des offres sont sur limites de débit.
Remarques pratiques
- Chargez les listes une fois par langue au démarrage et gardez-les en mémoire ou dans un fichier. La périphérie met en cache les chemins
/configuration24 heures : une actualisation quotidienne de votre côté suffit donc. - Stockez les identifiants de genres dans votre base de données, pas les noms. Un nom change avec la langue, un identifiant non.
- Les deux chemins de genres renvoient les mêmes 27 entrées : une seule table couvre donc les films et les séries. Les identifiants 10759 et 10762 à 10768 n'apparaissent que sur des éléments de séries.
with_genres=28,12dans découverte signifie Action et Aventure ensemble.with_genres=28|12signifie l'un ou l'autre.- Les noms de genres suivent le paramètre
language. Une balise en dehors des 14 langues de base de langues se replie sur l'anglais, et quelques noms restent en anglais dans certaines langues, par exemple10759en italien.