Získání dat filmu ve 14 jazycích
GET / vrací název, popis, slogan a názvy žánrů rusky. Parametr language přijímá tagy TMDB jako ru-RU nebo pt-BR a funguje na každém endpointu, který vrací text. ID zůstávají ve všech jazycích stejná, takže jeden řádek ve vaší databázi slouží všem.
Dostanete 14 jazyků na jeden klíč, original_title každého filmu, endpoint překladů, který vypíše všechny jazyky titulu, a lokalizované názvy žánrů. Úplný seznam je na stránce jazyky.
14 podporovaných jazyků
| Jazyk | Kód | Příklad tagu |
|---|---|---|
| angličtina | en | en-US |
| ruština | ru | ru-RU |
| ukrajinština | uk | uk-UA |
| běloruština | be | be-BY |
| čínština | zh | zh-CN |
| portugalština | pt | pt-BR |
| bulharština | bg | bg-BG |
| hebrejština | he | he-IL |
| čeština | cs | cs-CZ |
| rumunština | ro | ro-RO |
| francouzština | fr | fr-FR |
| polština | pl | pl-PL |
| italština | it | it-IT |
| španělština | es | es-ES |
Jakýkoli jiný tag se vrátí k en. Japonština a korejština se jako jazyky rozhraní nepodporují. Jejich původní názvy stále přijdou v original_title u filmů a v original_name u seriálů.
Jaká data dostanete
| Endpoint | Lokalizovaný obsah |
|---|---|
GET / | title, overview, tagline, názvy žánrů |
GET /3/tv/{tv_id} | name, overview, tagline, názvy žánrů |
GET / | name a overview sezóny a epizod |
GET / | biography |
GET / | Názvy žánrů pro filtry a menu |
GET / | Všechny jazyky titulu v jedné odpovědi |
GET / | Plakáty označené jazykem, filtrované přes include_image_language |
GET / | Videa označená iso_639_1, všechny jazyky v jedné odpovědi |
Začněte ve 3 krocích
- Vyberte tarif na stránce ceník. Počet jazyků se s tarifem nemění, mění se jen rychlost požadavků.
- Vytvořte klíč v panelu účtu.
- Zavolejte libovolný endpoint s tagem
languagea klíč pošlete jakoapi_keynebo v hlavičce Bearer.
Příklad požadavku
Ukázka v bashi vypíše název filmu Fight Club (ID 550) ve třech jazycích. K vypsání jednoho pole používá jq. Ukázka v PHP si vyžádá běloruštinu a když je popis prázdný, vrátí se k angličtině.
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;Odpověď pro language=ru-RU, zkrácená na několik polí. Klíč text_language v ukázce v PHP přidává váš kód, ne API.
{
"genres": [
{
"id": 18,
"name": "драма"
},
{
"id": 53,
"name": "триллер"
}
],
"id": 550,
"original_language": "en",
"original_title": "Fight Club",
"overview": "Сотрудник страховой компании страдает хронической бессонницей и отчаянно пытается вырваться из мучительно скучной жизни. Однажды в очередной командировке он...",
"poster_path": "/66RvLrRJTm4J8l3uHXWF09AICol.jpg",
"tagline": "«Интриги. Хаос. Мыло»",
"title": "Бойцовский клуб"
}Záloha, když je pole prázdné
Ne každý titul má text v každém jazyce. overview se může vrátit prázdný, když překlad neexistuje, a title nebo tagline se mohou vrátit anglicky. API texty nevymýšlí. Použijte pevné pořadí, aby stránka vždy něco zobrazila:
- Vyžádejte jazyk, který zobrazujete.
- Když je pole prázdné, vyžádejte stejné ID s
en-US, nebo přečtěte anglickou položku ze seznamu překladů. - Když je název prázdný, zobrazte
original_title. - Ukládejte, z jakého jazyka každé pole pochází, abyste to mohli později zkusit znovu.
Cache na edge drží jednu kopii na jazyk pro každou cachovanou cestu, takže anglická záloha pro oblíbený titul se obvykle obslouží z cache.
Výpis všech překladů titulu
GET / vrací pole translations, jednu položku na každý jazyk, který má data. Seznam může být delší než 14 podporovaných jazyků: Fight Club má 50 položek. Použijte jej k sestavení přepínače jazyků nebo k uložení všech textů titulu do jednoho řádku.
| Pole | Význam |
|---|---|
iso_639_1, iso_3166_1 | Kódy jazyka a země |
english_name | Název jazyka anglicky |
data.title (filmy) nebo data.name (TV), data.overview, data.tagline | Lokalizovaný text, název může být prázdný |
data.homepage, data.runtime | Volitelné hodnoty pro daný překlad |
Stejný endpoint existuje pro seriály a epizody. Položky seriálů nesou data.name a žádné runtime, položky epizod jen name a overview. Sezóny odpovídají prázdným seznamem a osoby ani kolekce endpoint překladů nemají. Podrobnosti jsou na stránce překlady. Jedno volání překladů nahradí až 14 volání detailů, když chcete všechny jazyky najednou.
Plakáty a videa podle jazyka
Obrázky a videa nesou vlastní jazykové tagy v iso_639_1. Na endpointech obrázků předejte seznam oddělený čárkami a pro položky bez jazyka, například plakáty bez textu, přidejte null. Odpověď obsahuje odpovídající položky, shody tedy řaďte ve svém kódu.
| Parametr | Použití | Příklad |
|---|---|---|
include_image_language | Endpointy obrázků | ru,en,null |
Endpointy videí vrací všechny jazyky v jedné odpovědi a include_video_language ignorují, filtrujte proto podle iso_639_1 sami. Velikosti a CDN viz obrázky.
Hebrejština a text zprava doleva
Hebrejština je jediný z 14 jazyků psaný zprava doleva. Řešte to ve stránce, ne v datech:
- Nastavte
lang="he"adir="rtl"na prvku s textem. - Latinské názvy uvnitř hebrejského textu obalte prvkem
<bdi>, aby interpunkce neskákala na špatnou stranu. - Používejte logické vlastnosti CSS jako
margin-inline-startmísto left a right.
Jak si stojí v porovnání
| Schopnost | Scrapování stránek vlastními silami | Dataset jen v angličtině | amodb |
|---|---|---|---|
| Jazyky | Jedna lokalizace webu na požadavek | Angličtina | 14 jazyků přes language |
| Stejné ID napříč jazyky | Jiné URL pro každou lokalizaci | Netýká se | Všude stejné číselné ID |
| Všechny překlady titulu | Stáhnout stránku každé lokalizace | Netýká se | Jedno volání translations |
| Lokalizované plakáty | URL obrázků podle lokalizace | Podívejte se do jejich dokumentace | Filtr include_image_language |
| Původní název | Parsovat z textu stránky | Podívejte se do jejich dokumentace | original_title, original_name |
Ceník
Sada jazyků je u každého tarifu stejná, platíte tedy jen za rychlost a období. Kupte si předplatné na 1, 3, 6, 12 nebo 24 měsíců, u delších je sleva 0, 10, 20, 30 nebo 40 procent a bez automatického obnovení. Tarify s 20, 40 a 120 požadavky za minutu zahrnují všechny jazyky a všechny endpointy. Web v pěti jazycích potřebuje až pět volání detailů na titul a opakované požadavky se obsluhují z cache na edge po 6 hodin. Bezplatný tarif neexistuje. Viz ceník.