Žá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.

Aktualizováno Zobrazit jako Markdown

Získání seznamu filmových žánrů

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

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))
}

Parametry

  • api_keyqueryjeden ze dvou
    Váš klíč. Použijte jej, nebo hlavičku Authorization: Bearer.
  • languagequery
    Tag TMDB, například en-US, ru-RU nebo pt-BR. Názvy se vrátí v tomto jazyce. Výchozí en-US.

Pole odpovědi

PoleTypPoznámky
genresarrayCelý seznam v jedné odpovědi, bez stránkování.
genres[].idintegerStabilní ID žánru.
genres[].namestringNázev žánru v požadovaném jazyce.

Příklad odpovědi

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

IDNázev
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

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 cestaParametryPoložka nebo tvar
GET /configuration/countriesžádnéPole { iso_3166_1, english_name, native_name }
GET /configuration/languagesžádnéPole { iso_639_1, english_name, name }
GET /configuration/primary_translationsžádnéPole 14 řetězců, například ru-RU
GET /configuration/jobsžádnéPole { department, jobs }, kde jobs obsahuje názvy profesí
GET /certification/movie/listžádné{ certifications } podle kódu země, 10 zemí
GET /certification/tv/listžádné{ certifications } podle kódu země, jeden klíč na zemi v katalogu
GET /watch/providers/regionslanguage{ results } s položkami { iso_3166_1, english_name, native_name }
GET /watch/providers/movielanguage, watch_region{ results } s poskytovateli
GET /watch/providers/tvlanguage, watch_region{ results } s poskytovateli

/configuration/countries a /configuration/languages ignorují language a vždy vracejí stejné názvy. native_name v seznamu regionů se řídí parametrem language. amodb nenabízí /configuration/timezones.

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.

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 }
    ]
  }
}

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 /watch/providers/regions. Loga poskytovatelů se načítají z hostitele obrázků, viz obrázky.

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
}

Toto je jedna položka z /watch/providers/movie?watch_region=US.

Chyby

HTTPstatus_codeKdy
4017Klíč chybí nebo je nesprávný.
40236Platnost tarifu skončila.
40434Cesta neexistuje, například /genre/book/list.
40537Použili jste metodu pro zápis na cestě s číselníkem.
42925Př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 /configuration 24 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,12 v discover znamená akční a dobrodružné dohromady. with_genres=28|12 znamená 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říklad 10759 v italštině.