Žánry a číselníky
Endpointy žánrů a číselníků vracejí malé referenční seznamy, které stačí načíst jednou: ID žánrů filmů a seriálů s názvy ve 14 jazycích, dále země, jazyky, profese štábu, věkové hodnocení a poskytovatele streamování. Používají cesty a tvary TMDB v3, nemají stránkování a mění se zřídka, takže je cachujte na den.
Získání seznamu filmových žánrů
GET / vrací každý filmový žánr jako id a name. ID jsou čísla, která nese genre_ids u položek seznamů a která očekává with_genres v discover. Názvy se řídí parametrem language.
Příklad načte seznam a sestaví mapu ID na název, což je první věc, kterou většina aplikací potřebuje.
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))
}Parametry
api_keyqueryjeden ze dvouVáš klíč. Použijte jej, nebo hlavičkuAuthorization: Bearer.languagequeryTag TMDB, napříkladen-US,ru-RUnebopt-BR. Názvy se vrátí v tomto jazyce. Výchozíen-US.
Pole odpovědi
| Pole | Typ | Poznámky |
|---|---|---|
genres | array | Celý seznam v jedné odpovědi, bez stránkování. |
genres[].id | integer | Stabilní ID žánru. |
genres[].name | string | Název žánru v požadovaném jazyce. |
Příklad odpovědi
{
"genres": [
{ "id": 12, "name": "Adventure" },
{ "id": 14, "name": "Fantasy" },
{ "id": 16, "name": "Animation" },
{ "id": 18, "name": "Drama" }
]
}Odpověď obsahuje 27 žánrů seřazených podle ID. Tato je zkrácena na první 4.
ID žánrů
Obě cesty pro žánry vracejí těchto 27 žánrů seřazených podle ID. Níže jsou anglické názvy. Jiné jazyky vracejí stejná ID s přeloženými názvy.
| ID | Název |
|---|---|
| 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 |
Seznam seriálových žánrů
GET /3/genre/tv/list přijímá stejný parametr language a vrací totožný seznam, takže jedna mapa ID na název pokryje filmy i seriály. V datech seznamů se ID 10759 a 10762 až 10768 objevují jen u seriálových položek a ID jako 28, 12 a 878 u filmových. Když v discover filtrujete seriály, použijte seriálová ID, například 10765 pro Sci-Fi a fantasy.
Číselníky
Tyto cesty vracejí referenční data pro formuláře, filtry a obrazovky nastavení. Všechny vyžadují klíč, žádná nepřijímá page.
| Metoda a cesta | Parametry | Položka nebo tvar |
|---|---|---|
GET / | žádné | Pole { iso_ |
GET / | žádné | Pole { iso_ |
GET / | žádné | Pole 14 řetězců, například ru-RU |
GET / | žádné | Pole { department, jobs }, kde jobs obsahuje názvy profesí |
GET / | žádné | { certifications } podle kódu země, 10 zemí |
GET / | žádné | { certifications } podle kódu země, jeden klíč na zemi v katalogu |
GET / | language | { results } s položkami { iso_ |
GET / | language, watch_region | { results } s poskytovateli |
GET / | language, watch_region | { results } s poskytovateli |
/ a / ignorují language a vždy vracejí stejné názvy. native_name v seznamu regionů se řídí parametrem language. amodb nenabízí /.
Položka věkového hodnocení uvádí označení, jeho význam a pořadí řazení. Položky jsou seskupené podle kódu země, takže jedno volání pokryje všechny trhy. Filmový seznam obsahuje texty hodnocení. V seriálovém seznamu je meaning prázdný řetězec.
{
"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 }
]
}
}Příklad je zkrácen na 2 ze 6 položek pro USA. Filmový seznam pokrývá AU, BR, CA, DE, ES, FR, GB, IT, RU a US.
Položka poskytovatele má provider_id, provider_name, logo_path, display_priority a display_priorities, tedy mapu kódu země na prioritu. Bez watch_region dostanete všechny poskytovatele. S watch_region=US zůstanou jen poskytovatelé, kteří danou zemi obsluhují. Neznámý region vrátí prázdné pole results. Předejte kód z /. Loga poskytovatelů se načítají z hostitele obrázků, viz obrázky.
{
"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
}Toto je jedna položka z /.
Chyby
| HTTP | status_code | Kdy |
|---|---|---|
| 401 | 7 | Klíč chybí nebo je nesprávný. |
| 402 | 36 | Platnost tarifu skončila. |
| 404 | 34 | Cesta neexistuje, například /genre/book/list. |
| 405 | 37 | Použili jste metodu pro zápis na cestě s číselníkem. |
| 429 | 25 | Překročili jste počet požadavků za minutu. Počkejte tolik sekund, kolik říká Retry-After. |
Podrobnosti ke každému kódu jsou na stránce chyby. Limity tarifů jsou na stránce limity požadavků.
Praktické poznámky
- Načtěte seznamy jednou pro každý jazyk při startu a držte je v paměti nebo v souboru. Edge cachuje cesty
/configuration24 hodin, takže stačí obnovovat je u vás jednou denně. - V databázi ukládejte ID žánrů, ne názvy. Název se mění podle jazyka, ID ne.
- Obě cesty pro žánry vracejí stejných 27 položek, takže jedna mapa pokryje filmy i seriály. ID 10759 a 10762 až 10768 se objevují jen u seriálových položek.
with_genres=28,12v discover znamená akční a dobrodružné dohromady.with_genres=28|12znamená kterékoli z nich.- Názvy žánrů se řídí parametrem
language. Tag mimo 14 základních jazyků ze stránky jazyky se vrátí k angličtině a několik názvů zůstává v některých jazycích anglicky, například10759v italštině.