Вземане на данни за филм на 14 езика
GET / връща заглавието, описанието, слогана и имената на жанровете на руски. Параметърът language приема тагове на TMDB като ru-RU или pt-BR и работи на всеки ендпойнт, който връща текст. Id остават същите на всеки език, така че един ред във вашата база данни обслужва всички.
Получавате 14 езика на един ключ, original_title на всеки филм, ендпойнт за преводи, който изброява всички езици на заглавие, и локализирани имена на жанрове. Пълният списък е на страницата езици.
14-те обслужвани езика
| Език | Код | Примерен таг |
|---|---|---|
| Английски | en | en-US |
| Руски | ru | ru-RU |
| Украински | uk | uk-UA |
| Беларуски | be | be-BY |
| Китайски | zh | zh-CN |
| Португалски | pt | pt-BR |
| Български | bg | bg-BG |
| Иврит | he | he-IL |
| Чешки | cs | cs-CZ |
| Румънски | ro | ro-RO |
| Френски | fr | fr-FR |
| Полски | pl | pl-PL |
| Италиански | it | it-IT |
| Испански | es | es-ES |
Всеки друг таг се заменя с en. Японският и корейският не се обслужват като езици на интерфейса. Оригиналните им заглавия пак се връщат в original_title за филми и original_name за сериали.
Какви данни получавате
| Ендпойнт | Локализирано съдържание |
|---|---|
GET / | title, overview, tagline, имена на жанрове |
GET /3/tv/{tv_id} | name, overview, tagline, имена на жанрове |
GET / | name и overview на сезона и епизодите |
GET / | biography |
GET / | Имена на жанрове за филтри и менюта |
GET / | Всички езици на заглавие в един отговор |
GET / | Постери с таг за език, филтрират се с include_image_language |
GET / | Видеа с таг iso_639_1, всички езици в един отговор |
Започнете в 3 стъпки
- Изберете план на страницата с цените. Броят езици не зависи от плана, променя се само скоростта на заявките.
- Създайте ключ в личния си профил.
- Извикайте всеки ендпойнт с таг
languageи подайте ключа катоapi_keyили в заглавка Bearer.
Пример със заявка
Bash примерът отпечатва заглавието на Fight Club (id 550) на три езика. Ползва jq, за да изведе едно поле. PHP примерът иска беларуски и се връща към английски, когато описанието е празно.
for lang in en-US ru-RU he-IL; do
curl -s "https://api.amodb.dev/3/movie/550?language=$lang" \
-H "Authorization: Bearer $AMODB_KEY" | jq -r '.title'
done<?php
function amodb(string $path, array $query = []): array
{
$url = 'https://api.amodb.dev/3' . $path . '?' . http_build_query($query);
$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");
}
return json_decode($body, true);
}
function localizedMovie(int $id, string $lang): array
{
$movie = amodb("/movie/$id", ['language' => $lang]);
$movie['text_language'] = $lang;
if (trim($movie['overview'] ?? '') === '') {
$fallback = amodb("/movie/$id", ['language' => 'en-US']);
$movie['overview'] = $fallback['overview'] ?? '';
$movie['text_language'] = 'en-US';
}
return $movie;
}
$movie = localizedMovie(550, 'be-BY');
echo $movie['title'], ' (', $movie['original_title'], ')', PHP_EOL;
echo '[', $movie['text_language'], '] ', $movie['overview'], PHP_EOL;Отговор за language=ru-RU, съкратен до няколко полета. Ключът text_language в PHP примера се добавя от вашия код, а не от API.
{
"genres": [
{
"id": 18,
"name": "драма"
},
{
"id": 53,
"name": "триллер"
}
],
"id": 550,
"original_language": "en",
"original_title": "Fight Club",
"overview": "Сотрудник страховой компании страдает хронической бессонницей и отчаянно пытается вырваться из мучительно скучной жизни. Однажды в очередной командировке он...",
"poster_path": "/66RvLrRJTm4J8l3uHXWF09AICol.jpg",
"tagline": "«Интриги. Хаос. Мыло»",
"title": "Бойцовский клуб"
}Резервен вариант, когато поле е празно
Не всяко заглавие има текст на всеки език. overview може да се върне празен, когато няма превод, а title или tagline може да се върнат на английски. API не измисля текст. Ползвайте фиксиран ред, за да показва страницата винаги нещо:
- Поискайте езика, който показвате.
- Ако поле е празно, поискайте
en-USза същото id или прочетете английския запис от списъка с преводи. - Ако заглавието е празно, показвайте
original_title. - Пазете от кой език идва всяко поле, за да можете да опитате отново по-късно.
Edge кешът държи по едно копие на език за всеки кеширан път, така че английският резервен вариант за популярно заглавие обикновено се обслужва от кеша.
Списък с всички преводи на заглавие
GET / връща масив translations, по един запис за всеки език, който има данни. Списъкът може да е по-дълъг от 14-те обслужвани езика: Fight Club има 50 записа. Ползвайте го, за да построите превключвател на езици или да запазите всички текстове на заглавие в един ред.
| Поле | Значение |
|---|---|
iso_639_1, iso_3166_1 | Кодове на език и държава |
english_name | Име на езика на английски |
data.title (филми) или data.name (сериали), data.overview, data.tagline | Локализиран текст, заглавието може да е празно |
data.homepage, data.runtime | Незадължителни стойности за този превод |
Същият ендпойнт съществува за сериали и епизоди. Записите за сериали носят data.name и нямат runtime, а записите за епизоди носят само name и overview. Сезоните отговарят с празен списък, а личностите и колекциите нямат ендпойнт за преводи. Подробности има на страницата преводи. Едно извикване за преводи замества до 14 извиквания за детайли, когато искате всички езици наведнъж.
Постери и видеа по език
Снимките и видеата носят собствени тагове за език в iso_639_1. На ендпойнтите за изображения подайте списък, разделен със запетая, и добавете null за елементи без език, например постери без текст. Отговорът съдържа съвпадащите елементи, така че подредете ги във вашия код.
| Параметър | Къде се ползва | Пример |
|---|---|---|
include_image_language | Ендпойнти за изображения | ru,en,null |
Ендпойнтите за видеа връщат всички езици в един отговор и игнорират include_video_language, затова филтрирайте по iso_639_1 сами. Вижте изображения за размерите и CDN.
Иврит и текст отдясно наляво
Ивритът е единственият език отдясно наляво от 14-те. Обработвайте го в страницата, а не в данните:
- Задайте
lang="he"иdir="rtl"на елемента, който държи текста. - Обгръщайте латинските заглавия вътре в иврит текст в елемент
<bdi>, за да не прескача пунктуацията на грешната страна. - Ползвайте логически CSS свойства като
margin-inline-startвместо left и right.
Как се сравнява
| Възможност | Сами да обработвате страници | Набор от данни само на английски | amodb |
|---|---|---|---|
| Езици | Една локализация на сайт на заявка | Английски | 14 езика чрез language |
| Същото id на всички езици | Различни URL адреси за всяка локализация | Не се прилага | Същото числово id навсякъде |
| Всички преводи на заглавие | Изтегляне на страницата на всяка локализация | Не се прилага | Едно извикване translations |
| Локализирани постери | URL адреси на изображения за всяка локализация | Вижте документацията им | Филтър include_image_language |
| Оригинално заглавие | Разчитане от текста на страницата | Вижте документацията им | original_title, original_name |
Цени
Наборът от езици е един и същ при всеки план, така че плащате само за скорост и период. Купете предплатени 1, 3, 6, 12 или 24 месеца, с отстъпка 0, 10, 20, 30 или 40 процента за по-дългите и без автоматично подновяване. Плановете за 20, 40 и 120 заявки в минута включват всеки език и всеки ендпойнт. Сайт на пет езика има нужда от до пет извиквания за детайли на заглавие, а повторните заявки се обслужват от edge кеша 6 часа. Няма безплатен план. Вижте цени.