Genuri și liste de referință
Endpoint-urile pentru genuri și liste de referință întorc liste pe care le încarci o dată: ID-uri de gen pentru filme și TV cu nume în 14 limbi, plus țări, limbi, meserii din echipă, clasificări pe vârste și furnizori de streaming. Folosesc căi și structuri TMDB v3, nu cer paginare și se schimbă rar, deci ține-le în cache o zi.
Obține lista genurilor de filme
GET / întoarce fiecare gen de film ca id și name. ID-urile sunt numerele pe care le poartă genre_ids la elementele din liste și pe care le așteaptă with_genres în descoperire. Numele urmează parametrul language.
Exemplul încarcă lista și construiește o hartă de la ID la nume, primul lucru de care au nevoie majoritatea aplicațiilor.
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_keyinterogareuna dintre cele douăCheia ta. Folosește-o pe aceasta sau antetulAuthorization: Bearer.languageinterogareEtichetă TMDB precumen-US,ru-RUsaupt-BR. Numele sunt întoarse în această limbă. Impliciten-US.
Câmpurile răspunsului
| Câmp | Tip | Observații |
|---|---|---|
genres | array | Toată lista într-un singur răspuns, fără paginare. |
genres[].id | număr întreg | ID de gen stabil. |
genres[].name | șir | Numele genului în limba cerută. |
Exemplu de răspuns
{
"genres": [
{ "id": 12, "name": "Adventure" },
{ "id": 14, "name": "Fantasy" },
{ "id": 16, "name": "Animation" },
{ "id": 18, "name": "Drama" }
]
}Răspunsul conține 27 de genuri sortate după ID. Acesta este tăiat la primele 4.
ID-uri de gen
Ambele căi de gen întorc aceste 27 de genuri, sortate după ID. Numele de mai jos sunt cele în engleză. Alte limbi întorc aceleași ID-uri cu nume traduse.
| ID | Nume |
|---|---|
| 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 genurilor TV
GET /3/genre/tv/list primește același parametru language și întoarce lista identică, deci o singură hartă de la ID la nume acoperă filmele și TV. În datele din liste, ID-urile 10759 și 10762 până la 10768 apar doar la elementele TV, iar ID-uri precum 28, 12 și 878 apar la elementele de film. Când filtrezi TV în descoperire, folosește ID-urile TV, de exemplu 10765 pentru Sci-Fi and Fantasy.
Liste de referință
Aceste căi întorc date de referință pentru formulare, filtre și ecrane de setări. Toate cer cheia; niciuna nu primește page.
| Metodă și cale | Parametri | Fiecare element sau structură |
|---|---|---|
GET / | niciunul | Array de { iso_ |
GET / | niciunul | Array de { iso_ |
GET / | niciunul | Array de 14 șiruri precum ru-RU |
GET / | niciunul | Array de { department, jobs }, unde jobs listează titlurile meseriilor |
GET / | niciunul | { certifications } indexat după codul de țară, 10 țări |
GET / | niciunul | { certifications } indexat după codul de țară, o cheie pentru fiecare țară din catalog |
GET / | language | { results } cu { iso_ |
GET / | language, watch_region | { results } cu furnizori |
GET / | language, watch_region | { results } cu furnizori |
/ și / ignoră language și întorc mereu aceleași nume. native_name din lista de regiuni urmează language. amodb nu oferă /.
O intrare de clasificare numește calificativul, ce înseamnă și ordinea lui de sortare. Intrările sunt grupate după codul de țară, deci un singur apel acoperă fiecare piață. Lista de filme are textele calificativelor. La lista TV, meaning este un șir gol.
{
"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 }
]
}
}Exemplul este tăiat la 2 din cele 6 intrări pentru SUA. Lista de filme acoperă AU, BR, CA, DE, ES, FR, GB, IT, RU și US.
O intrare de furnizor are provider_id, provider_name, logo_path, display_priority și display_priorities, o hartă de la codul de țară la prioritate. Fără watch_region primești fiecare furnizor. Cu watch_region=US păstrezi doar furnizorii care servesc acea țară. O regiune necunoscută întoarce un array results gol. Transmite un cod de la /. Logourile furnizorilor se încarcă de la gazda de imagini, vezi imagini.
{
"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
}Aceasta este o intrare din /.
Erori
| HTTP | status_code | Când |
|---|---|---|
| 401 | 7 | Cheia lipsește sau este greșită. |
| 402 | 36 | Perioada planului s-a încheiat. |
| 404 | 34 | Calea nu există, de exemplu /genre/book/list. |
| 405 | 37 | Ai folosit o metodă de scriere pe o cale de referință. |
| 429 | 25 | Ai depășit cererile pe minut. Așteaptă numărul de secunde din Retry-After. |
Detaliile pentru fiecare cod sunt la erori. Limitele planurilor sunt la limite de cereri.
Note practice
- Încarcă listele o dată pe limbă la pornire și ține-le în memorie sau într-un fișier. Marginea ține în cache căile
/configuration24 de ore, deci o reîmprospătare zilnică din partea ta ajunge. - Stochează ID-urile de gen în baza ta de date, nu numele. Un nume se schimbă cu limba, un ID nu.
- Ambele căi de gen întorc aceleași 27 de intrări, deci o singură hartă acoperă filmele și TV. ID-urile 10759 și 10762 până la 10768 apar doar la elementele TV.
with_genres=28,12în descoperire înseamnă acțiune și aventură împreună.with_genres=28|12înseamnă oricare dintre ele.- Numele genurilor urmează parametrul
language. O etichetă din afara celor 14 limbi de bază de la limbi revine la engleză, iar câteva nume rămân în engleză în unele limbi, de exemplu10759în italiană.