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.

Aggiornato il Vedi in Markdown

Ottenere la lista dei generi dei film

GET /3/genre/movie/list 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.

bashjspyphpgo
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 due
    La tua chiave. Usa questa o l'header Authorization: Bearer.
  • languagequery
    Tag TMDB come en-US, ru-RU o pt-BR. I nomi sono restituiti in questa lingua. Predefinito en-US.

Campi della risposta

CampoTipoNote
genresarrayL'intera lista in una sola risposta, senza paginazione.
genres[].idinteroID del genere, stabile.
genres[].namestringaNome del genere nella lingua richiesta.

Risposta di esempio

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

IDNome
12Adventure
14Fantasy
16Animation
18Drama
27Horror
28Action
35Comedy
36History
37Western
53Thriller
80Crime
99Documentary
878Science Fiction
9648Mystery
10402Music
10749Romance
10751Family
10752War
10759Action & Adventure
10762Kids
10763News
10764Reality
10765Sci-Fi & Fantasy
10766Soap
10767Talk
10768War & Politics
10770TV 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 percorsoParametriOgni elemento o struttura
GET /configuration/countriesnessunoArray di { iso_3166_1, english_name, native_name }
GET /configuration/languagesnessunoArray di { iso_639_1, english_name, name }
GET /configuration/primary_translationsnessunoArray di 14 stringhe come ru-RU
GET /configuration/jobsnessunoArray di { department, jobs } dove jobs elenca i titoli dei mestieri
GET /certification/movie/listnessuno{ certifications } indicizzato per codice paese, 10 paesi
GET /certification/tv/listnessuno{ certifications } indicizzato per codice paese, una chiave per ogni paese del catalogo
GET /watch/providers/regionslanguage{ results } di { iso_3166_1, english_name, native_name }
GET /watch/providers/movielanguage, watch_region{ results } di piattaforme
GET /watch/providers/tvlanguage, watch_region{ results } di piattaforme

/configuration/countries e /configuration/languages ignorano language e restituiscono sempre gli stessi nomi. native_name nella lista delle regioni segue language. amodb non offre /configuration/timezones.

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.

JSON
{
  "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 /watch/providers/regions. I loghi delle piattaforme si caricano dall'host delle immagini, vedi immagini.

JSON
{
  "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 /watch/providers/movie?watch_region=US.

Errori

HTTPstatus_codeQuando
4017La chiave manca o è sbagliata.
40236Il periodo del piano è terminato.
40434Il percorso non esiste, per esempio /genre/book/list.
40537Hai usato un metodo di scrittura su un percorso di riferimento.
42925Hai 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 /configuration per 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,12 in discover significa Azione e Avventura insieme. with_genres=28|12 significa 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 esempio 10759 in italiano.