Generi e liste di riferimento
Gli endpoint di generi e liste di riferimento restituiscono piccole liste da caricare una volta: ID dei generi con nomi in 14 lingue, più paesi, lingue, mestieri della troupe, classificazioni per età e piattaforme di streaming. Usano percorsi e strutture TMDB v3, non richiedono paginazione e cambiano di rado, quindi tienile in cache per un giorno.
Ottenere la lista dei generi dei film
GET / restituisce ogni genere di film come id e name. Gli ID sono i numeri che genre_ids porta sugli elementi delle liste e che with_genres si aspetta in discover. I nomi seguono il parametro language.
L'esempio carica la lista e costruisce una mappa da ID a nome, la prima cosa che serve alla maggior parte delle app.
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))
}Parametri
api_keyqueryuno dei dueLa tua chiave. Usa questa o l'headerAuthorization: Bearer.languagequeryTag TMDB comeen-US,ru-RUopt-BR. I nomi sono restituiti in questa lingua. Predefinitoen-US.
Campi della risposta
| Campo | Tipo | Note |
|---|---|---|
genres | array | L'intera lista in una sola risposta, senza paginazione. |
genres[].id | intero | ID del genere, stabile. |
genres[].name | stringa | Nome del genere nella lingua richiesta. |
Risposta di esempio
{
"genres": [
{ "id": 12, "name": "Adventure" },
{ "id": 14, "name": "Fantasy" },
{ "id": 16, "name": "Animation" },
{ "id": 18, "name": "Drama" }
]
}La risposta contiene 27 generi ordinati per ID. Questa è tagliata ai primi 4.
ID dei generi
Entrambi i percorsi dei generi restituiscono questi 27 generi, ordinati per ID. I nomi qui sotto sono quelli inglesi. Le altre lingue restituiscono gli stessi ID con nomi tradotti.
| ID | Nome |
|---|---|
| 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 |
Lista dei generi delle serie TV
GET /3/genre/tv/list accetta lo stesso parametro language e restituisce la lista identica, quindi un'unica mappa da ID a nome copre film e serie TV. Nei dati delle liste, gli ID 10759 e da 10762 a 10768 compaiono solo sugli elementi delle serie TV, mentre ID come 28, 12 e 878 compaiono sugli elementi dei film. Quando filtri le serie TV in discover, usa gli ID delle serie TV, per esempio 10765 per Sci-Fi e Fantasy.
Liste di riferimento
Questi percorsi restituiscono dati di riferimento per moduli, filtri e schermate delle impostazioni. Tutti richiedono la chiave; nessuno accetta page.
| Metodo e percorso | Parametri | Ogni elemento o struttura |
|---|---|---|
GET / | nessuno | Array di { iso_ |
GET / | nessuno | Array di { iso_ |
GET / | nessuno | Array di 14 stringhe come ru-RU |
GET / | nessuno | Array di { department, jobs } dove jobs elenca i titoli dei mestieri |
GET / | nessuno | { certifications } indicizzato per codice paese, 10 paesi |
GET / | nessuno | { certifications } indicizzato per codice paese, una chiave per ogni paese del catalogo |
GET / | language | { results } di { iso_ |
GET / | language, watch_region | { results } di piattaforme |
GET / | language, watch_region | { results } di piattaforme |
/ e / ignorano language e restituiscono sempre gli stessi nomi. native_name nella lista delle regioni segue language. amodb non offre /.
Una voce di classificazione nomina la classificazione, cosa significa e il suo ordine. Le voci sono raggruppate per codice paese, quindi una sola chiamata copre ogni mercato. La lista dei film contiene i testi delle classificazioni. Nella lista delle serie TV meaning è una stringa vuota.
{
"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'esempio è tagliato a 2 delle 6 voci degli Stati Uniti. La lista dei film copre AU, BR, CA, DE, ES, FR, GB, IT, RU e US.
Una voce di piattaforma ha provider_id, provider_name, logo_path, display_priority e display_priorities, una mappa da codice paese a priorità. Senza watch_region ottieni tutte le piattaforme. Con watch_region=US tieni solo le piattaforme che servono quel paese. Una regione sconosciuta restituisce un array results vuoto. Passa un codice da /. I loghi delle piattaforme si caricano dall'host delle immagini, vedi immagini.
{
"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
}Questa è una voce di /.
Errori
| HTTP | status_code | Quando |
|---|---|---|
| 401 | 7 | La chiave manca o è sbagliata. |
| 402 | 36 | Il periodo del piano è terminato. |
| 404 | 34 | Il percorso non esiste, per esempio /genre/book/list. |
| 405 | 37 | Hai usato un metodo di scrittura su un percorso di riferimento. |
| 429 | 25 | Hai superato le richieste al minuto. Attendi i secondi di Retry-After. |
I dettagli di ogni codice sono nella pagina errori. I limiti dei piani sono in limiti di richieste.
Note pratiche
- Carica le liste una volta per lingua all'avvio e tienile in memoria o in un file. L'edge mette in cache i percorsi
/configurationper 24 ore, quindi basta un aggiornamento giornaliero da parte tua. - Salva gli ID dei generi nel tuo database, non i nomi. Un nome cambia con la lingua, un ID no.
- Entrambi i percorsi dei generi restituiscono le stesse 27 voci, quindi una sola mappa copre film e serie TV. Gli ID 10759 e da 10762 a 10768 compaiono solo sugli elementi delle serie TV.
with_genres=28,12in discover significa Azione e Avventura insieme.with_genres=28|12significa l'uno o l'altro.- I nomi dei generi seguono il parametro
language. Un tag fuori dalle 14 lingue di base in lingue ripiega sull'inglese, e alcuni nomi restano in inglese in certe lingue, per esempio10759in italiano.