Pobieranie danych filmu w 14 językach
GET / zwraca tytuł, opis, slogan i nazwy gatunków po rosyjsku. Parametr language przyjmuje tagi TMDB, takie jak ru-RU lub pt-BR, i działa na każdym endpoincie zwracającym tekst. ID są takie same w każdym języku, więc jeden wiersz w twojej bazie obsługuje wszystkie.
Dostajesz 14 języków na jednym kluczu, original_title każdego filmu, endpoint tłumaczeń, który wypisuje wszystkie języki tytułu, i zlokalizowane nazwy gatunków. Pełna lista jest na stronie języki.
14 obsługiwanych języków
| Język | Kod | Przykładowy tag |
|---|---|---|
| angielski | en | en-US |
| rosyjski | ru | ru-RU |
| ukraiński | uk | uk-UA |
| białoruski | be | be-BY |
| chiński | zh | zh-CN |
| portugalski | pt | pt-BR |
| bułgarski | bg | bg-BG |
| hebrajski | he | he-IL |
| czeski | cs | cs-CZ |
| rumuński | ro | ro-RO |
| francuski | fr | fr-FR |
| polski | pl | pl-PL |
| włoski | it | it-IT |
| hiszpański | es | es-ES |
Każdy inny tag wraca do en. Japoński i koreański nie są obsługiwane jako języki interfejsu. Ich oryginalne tytuły nadal wracają w original_title dla filmów i w original_name dla seriali.
Jakie dane dostajesz
| Endpoint | Zlokalizowana treść |
|---|---|
GET / | title, overview, tagline, nazwy gatunków |
GET /3/tv/{tv_id} | name, overview, tagline, nazwy gatunków |
GET / | name i overview sezonu i odcinków |
GET / | biography |
GET / | Nazwy gatunków do filtrów i menu |
GET / | Wszystkie języki tytułu w jednej odpowiedzi |
GET / | Plakaty oznaczone językiem, filtrowane przez include_image_language |
GET / | Wideo oznaczone iso_639_1, wszystkie języki w jednej odpowiedzi |
Start w 3 krokach
- Wybierz plan na stronie cennik. Liczba języków nie zależy od planu, zmienia się tylko tempo żądań.
- Utwórz klucz w panelu konta.
- Wywołaj dowolny endpoint z tagiem
languagei wyślij klucz jakoapi_keyalbo w nagłówku Bearer.
Przykładowe żądanie
Przykład w bashu wypisuje tytuł filmu Fight Club (ID 550) w trzech językach. Do wypisania jednego pola używa jq. Przykład w PHP prosi o białoruski i wraca do angielskiego, gdy opis jest pusty.
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;Odpowiedź dla language=ru-RU, przycięta do kilku pól. Klucz text_language w przykładzie PHP dodaje twój kod, nie API.
{
"genres": [
{
"id": 18,
"name": "драма"
},
{
"id": 53,
"name": "триллер"
}
],
"id": 550,
"original_language": "en",
"original_title": "Fight Club",
"overview": "Сотрудник страховой компании страдает хронической бессонницей и отчаянно пытается вырваться из мучительно скучной жизни. Однажды в очередной командировке он...",
"poster_path": "/66RvLrRJTm4J8l3uHXWF09AICol.jpg",
"tagline": "«Интриги. Хаос. Мыло»",
"title": "Бойцовский клуб"
}Zapas, gdy pole jest puste
Nie każdy tytuł ma tekst w każdym języku. overview może wrócić pusty, gdy tłumaczenie nie istnieje, a title lub tagline mogą wrócić po angielsku. API nie wymyśla tekstu. Użyj stałej kolejności, aby strona zawsze coś pokazywała:
- Poproś o język, który wyświetlasz.
- Jeśli pole jest puste, poproś o to samo ID z
en-USalbo odczytaj angielską pozycję z listy tłumaczeń. - Jeśli tytuł jest pusty, pokaż
original_title. - Zapisuj, z jakiego języka pochodzi każde pole, aby móc spróbować ponownie później.
Cache na edge trzyma jedną kopię na język dla każdej ścieżki w cache, więc angielski zapas dla popularnego tytułu zwykle jest serwowany z cache.
Lista wszystkich tłumaczeń tytułu
GET / zwraca tablicę translations, jedną pozycję na każdy język z danymi. Lista może być dłuższa niż 14 obsługiwanych języków: Fight Club ma 50 pozycji. Użyj jej do zbudowania przełącznika języka albo do zapisania wszystkich tekstów tytułu w jednym wierszu.
| Pole | Znaczenie |
|---|---|
iso_639_1, iso_3166_1 | Kody języka i kraju |
english_name | Nazwa języka po angielsku |
data.title (filmy) lub data.name (TV), data.overview, data.tagline | Zlokalizowany tekst, tytuł może być pusty |
data.homepage, data.runtime | Opcjonalne wartości dla danego tłumaczenia |
Ten sam endpoint istnieje dla seriali i odcinków. Pozycje seriali niosą data.name i brak runtime, a pozycje odcinków tylko name i overview. Sezony odpowiadają pustą listą, a osoby i kolekcje nie mają endpointu tłumaczeń. Szczegóły są na stronie tłumaczenia. Jedno wywołanie tłumaczeń zastępuje do 14 wywołań szczegółów, gdy chcesz mieć wszystkie języki naraz.
Plakaty i wideo według języka
Obrazy i wideo niosą własne tagi języka w iso_639_1. W endpointach obrazów przekaż listę oddzieloną przecinkami i dodaj null dla pozycji bez języka, takich jak plakaty bez tekstu. Odpowiedź zawiera pasujące pozycje, więc uporządkuj je w swoim kodzie.
| Parametr | Używany w | Przykład |
|---|---|---|
include_image_language | Endpointy obrazów | ru,en,null |
Endpointy wideo zwracają wszystkie języki w jednej odpowiedzi i ignorują include_video_language, więc filtruj po iso_639_1 samodzielnie. Rozmiary i CDN opisuje strona obrazy.
Hebrajski i tekst od prawej do lewej
Hebrajski to jedyny z 14 języków pisany od prawej do lewej. Obsłuż to na stronie, nie w danych:
- Ustaw
lang="he"idir="rtl"na elemencie z tekstem. - Łacińskie tytuły wewnątrz hebrajskiego tekstu opakuj elementem
<bdi>, aby interpunkcja nie skakała na złą stronę. - Używaj logicznych właściwości CSS, takich jak
margin-inline-start, zamiast left i right.
Jak wypada w porównaniu
| Możliwość | Własny scraping stron | Zbiór danych tylko po angielsku | amodb |
|---|---|---|---|
| Języki | Jedna lokalizacja strony na żądanie | Angielski | 14 języków przez language |
| To samo ID w różnych językach | Różne adresy URL dla każdej lokalizacji | Nie dotyczy | Wszędzie to samo numeryczne ID |
| Wszystkie tłumaczenia tytułu | Pobrać stronę każdej lokalizacji | Nie dotyczy | Jedno wywołanie translations |
| Zlokalizowane plakaty | Adresy URL obrazów według lokalizacji | Sprawdź ich dokumentację | Filtr include_image_language |
| Tytuł oryginalny | Parsować z tekstu strony | Sprawdź ich dokumentację | original_title, original_name |
Cennik
Zestaw języków jest taki sam w każdym planie, więc płacisz tylko za tempo i okres. Kup przedpłatę na 1, 3, 6, 12 lub 24 miesiące, ze zniżką 0, 10, 20, 30 lub 40 procent za dłuższe i bez automatycznego odnawiania. Plany z 20, 40 i 120 żądaniami na minutę obejmują każdy język i każdy endpoint. Strona w pięciu językach potrzebuje do pięciu wywołań szczegółów na tytuł, a powtórne żądania są obsługiwane z cache na edge przez 6 godzin. Nie ma darmowego planu. Zobacz cennik.