Жанрове и справочни списъци
Ендпойнтите за жанрове и справочници връщат малки справочни списъци, които зареждате веднъж: id на жанрове за филми и сериали с имена на 14 езика, плюс държави, езици, длъжности в екипа, възрастови рейтинги и стрийминг доставчици. Ползват пътищата и формите на TMDB v3, не изискват странициране и се променят рядко, затова ги кеширайте за един ден.
Вземане на списъка с жанрове за филми
GET / връща всеки жанр за филми като id и name. Id са числата, които genre_ids носи в елементите на списъци и които with_genres очаква в откриване по филтри. Имената следват параметъра language.
Примерът зарежда списъка и гради карта от id към име, първото нещо, от което имат нужда повечето приложения.
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))
}Параметри
api_keyзаявкаедин от дватаВашият ключ. Ползвайте него или заглавкатаAuthorization: Bearer.languageзаявкаТаг на TMDB, напримерen-US,ru-RUилиpt-BR. Имената се връщат на този език. По подразбиранеen-US.
Полета на отговора
| Поле | Тип | Бележки |
|---|---|---|
genres | масив | Целият списък в един отговор, без странициране. |
genres[].id | цяло число | Стабилно id на жанр. |
genres[].name | низ | Име на жанра на заявения език. |
Примерен отговор
{
"genres": [
{ "id": 12, "name": "Adventure" },
{ "id": 14, "name": "Fantasy" },
{ "id": 16, "name": "Animation" },
{ "id": 18, "name": "Drama" }
]
}Отговорът съдържа 27 жанра, подредени по id. Този е съкратен до първите 4.
Id на жанровете
И двата пътя за жанрове връщат тези 27 жанра, подредени по id. Имената по-долу са английските. Другите езици връщат същите id с преведени имена.
| Id | Име |
|---|---|
| 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 |
Списък с жанрове за сериали
GET /3/genre/tv/list приема същия параметър language и връща идентичния списък, така че една карта от id към име покрива филми и сериали. В данните от списъци id 10759 и 10762-10768 се появяват само при сериали, а id като 28, 12 и 878 при филми. Когато филтрирате сериали в откриване по филтри, ползвайте id за сериали, например 10765 за Sci-Fi and Fantasy.
Справочни списъци
Тези пътища връщат справочни данни за форми, филтри и екрани с настройки. Всички приемат ключа; никой не приема page.
| Метод и път | Параметри | Всеки елемент или форма |
|---|---|---|
GET / | няма | Масив от { iso_ |
GET / | няма | Масив от { iso_ |
GET / | няма | Масив от 14 низа като ru-RU |
GET / | няма | Масив от { department, jobs }, където jobs изброява длъжностите |
GET / | няма | { certifications } по код на държава, 10 държави |
GET / | няма | { certifications } по код на държава, един ключ на държава в каталога |
GET / | language | { results } от { iso_ |
GET / | language, watch_region | { results } от доставчици |
GET / | language, watch_region | { results } от доставчици |
/ и / игнорират language и винаги връщат едни и същи имена. native_name в списъка с региони следва language. amodb не предлага /.
Записът за възрастов рейтинг назовава рейтинга, какво означава и реда му за сортиране. Записите са групирани по код на държава, така че едно извикване покрива всеки пазар. Списъкът за филми има текстовете на рейтингите. В списъка за сериали meaning е празен низ.
{
"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 }
]
}
}Примерът е съкратен до 2 от 6-те записа за САЩ. Списъкът за филми покрива AU, BR, CA, DE, ES, FR, GB, IT, RU и US.
Записът за доставчик има provider_id, provider_name, logo_path, display_priority и display_priorities, карта от код на държава към приоритет. Без watch_region получавате всеки доставчик. С watch_region=US остават само доставчиците, които обслужват тази държава. Непознат регион връща празен масив results. Подайте код от /. Логата на доставчиците се зареждат от хоста за изображения, вижте изображения.
{
"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
}Това е един запис от /.
Грешки
| HTTP | status_code | Кога |
|---|---|---|
| 401 | 7 | Ключът липсва или е грешен. |
| 402 | 36 | Периодът на плана е изтекъл. |
| 404 | 34 | Пътят не съществува, например /genre/book/list. |
| 405 | 37 | Ползвали сте метод за запис на справочен път. |
| 429 | 25 | Надхвърлили сте лимита на заявки в минута. Изчакайте Retry-After секунди. |
Подробности за всеки код има на страницата грешки. Лимитите на плановете са на страницата лимити на заявките.
Практически бележки
- Зареждайте списъците веднъж на език при старт и ги дръжте в паметта или във файл. Edge кешира пътищата
/configurationза 24 часа, така че дневно обновяване при вас е достатъчно. - Пазете в базата id на жанрове, а не имена. Името се променя с езика, id не.
- И двата пътя за жанрове връщат същите 27 записа, така че една карта покрива филми и сериали. Id 10759 и 10762-10768 се появяват само при сериали.
with_genres=28,12в откриване по филтри означава Action и Adventure заедно.with_genres=28|12означава някое от двете.- Имената на жанровете следват параметъра
language. Таг извън 14-те основни езика от страницата езици се заменя с английски, а няколко имена остават на английски на някои езици, например10759на италиански.