Obține date despre filme în 14 limbi
GET / întoarce titlul, descrierea, sloganul și numele genurilor în rusă. Parametrul language primește etichete TMDB precum ru-RU sau pt-BR și funcționează pe fiecare endpoint care întoarce text. ID-urile rămân aceleași în orice limbă, deci un singur rând din baza ta de date le servește pe toate.
Primești 14 limbi cu o singură cheie, original_title pentru fiecare film, un endpoint de traduceri care listează toate limbile unui titlu și nume de genuri localizate. Lista completă este la limbi.
Cele 14 limbi servite
| Limbă | Cod | Etichetă exemplu |
|---|---|---|
| Engleză | en | en-US |
| Rusă | ru | ru-RU |
| Ucraineană | uk | uk-UA |
| Belarusă | be | be-BY |
| Chineză | zh | zh-CN |
| Portugheză | pt | pt-BR |
| Bulgară | bg | bg-BG |
| Ebraică | he | he-IL |
| Cehă | cs | cs-CZ |
| Română | ro | ro-RO |
| Franceză | fr | fr-FR |
| Poloneză | pl | pl-PL |
| Italiană | it | it-IT |
| Spaniolă | es | es-ES |
Orice altă etichetă revine la en. Japoneza și coreeana nu sunt servite ca limbi de interfață. Titlurile lor originale revin în continuare în original_title pentru filme și în original_name pentru seriale TV.
Ce date primești
| Endpoint | Conținut localizat |
|---|---|
GET / | title, overview, tagline, numele genurilor |
GET /3/tv/{tv_id} | name, overview, tagline, numele genurilor |
GET / | name și overview de sezon și de episod |
GET / | biography |
GET / | Nume de genuri pentru filtre și meniuri |
GET / | Toate limbile unui titlu într-un singur răspuns |
GET / | Postere etichetate după limbă, filtrate cu include_image_language |
GET / | Videoclipuri etichetate cu iso_639_1, toate limbile într-un singur răspuns |
Începe în 3 pași
- Alege un plan la prețuri. Numărul de limbi nu se schimbă cu planul, doar ritmul cererilor.
- Creează o cheie în panoul contului tău.
- Apelează orice endpoint cu o etichetă
languageși trimite cheia caapi_keysau într-un antet Bearer.
Exemplu de cerere
Exemplul bash afișează titlul din Fight Club (ID 550) în trei limbi. Folosește jq ca să afișeze un câmp. Exemplul PHP cere belarusa și revine la engleză când descrierea este goală.
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;Răspuns pentru language=ru-RU, scurtat la câteva câmpuri. Cheia text_language din exemplul PHP este adăugată de codul tău, nu de API.
{
"genres": [
{
"id": 18,
"name": "драма"
},
{
"id": 53,
"name": "триллер"
}
],
"id": 550,
"original_language": "en",
"original_title": "Fight Club",
"overview": "Сотрудник страховой компании страдает хронической бессонницей и отчаянно пытается вырваться из мучительно скучной жизни. Однажды в очередной командировке он...",
"poster_path": "/66RvLrRJTm4J8l3uHXWF09AICol.jpg",
"tagline": "«Интриги. Хаос. Мыло»",
"title": "Бойцовский клуб"
}Revenirea când un câmp este gol
Nu orice titlu are text în orice limbă. Un overview poate veni gol când nu există traducere, iar un title sau un tagline poate veni în engleză. API-ul nu inventează text. Folosește o ordine fixă, ca pagina să arate mereu ceva:
- Cere limba pe care o afișezi.
- Dacă un câmp este gol, cere
en-USpentru același ID sau citește intrarea în engleză din lista de traduceri. - Dacă titlul este gol, arată
original_title. - Stochează din ce limbă provine fiecare câmp, ca să poți încerca din nou mai târziu.
Cache-ul la margine ține o copie pe limbă pentru fiecare cale ținută în cache, așa că revenirea la engleză pentru un titlu popular este de obicei servită din cache.
Listează toate traducerile unui titlu
GET / întoarce un array translations, câte o intrare pentru fiecare limbă care are date. Lista poate fi mai lungă decât cele 14 limbi servite: Fight Club are 50 de intrări. Folosește-o ca să construiești un selector de limbă sau ca să stochezi toate textele unui titlu într-un singur rând.
| Câmp | Semnificație |
|---|---|
iso_639_1, iso_3166_1 | Codurile de limbă și de țară |
english_name | Numele limbii în engleză |
data.title (filme) sau data.name (TV), data.overview, data.tagline | Text localizat, titlul poate fi gol |
data.homepage, data.runtime | Valori opționale pentru acea traducere |
Același endpoint există pentru serialele TV și pentru episoade. Intrările TV au data.name și nu au runtime, iar intrările de episod au doar name și overview. Sezoanele răspund cu o listă goală, iar persoanele și colecțiile nu au endpoint de traduceri. Detaliile sunt la traduceri. Un apel de traduceri înlocuiește până la 14 apeluri de detalii când vrei toate limbile deodată.
Postere și videoclipuri pe limbi
Imaginile și videoclipurile au propriile etichete de limbă în iso_639_1. Pe endpoint-urile de imagini, transmite o listă separată prin virgulă și adaugă null pentru elementele fără limbă, precum posterele fără text. Răspunsul conține elementele care se potrivesc, așa că ordonează-le în codul tău.
| Parametru | Folosit pe | Exemplu |
|---|---|---|
include_image_language | Endpoint-uri de imagini | ru,en,null |
Endpoint-urile de videoclipuri întorc toate limbile într-un singur răspuns și ignoră include_video_language, așa că filtrează tu după iso_639_1. Vezi imagini pentru dimensiuni și CDN.
Ebraica și textul de la dreapta la stânga
Ebraica este singura limbă din cele 14 care se scrie de la dreapta la stânga. Tratează-o în pagină, nu în date:
- Setează
lang="he"șidir="rtl"pe elementul care conține textul. - Învelește titlurile latine din textul ebraic într-un element
<bdi>, ca punctuația să nu sară pe partea greșită. - Folosește proprietăți CSS logice precum
margin-inline-startîn loc de stânga și dreapta.
Cum se compară
| Capacitate | Extragi singur paginile | Set de date doar în engleză | amodb |
|---|---|---|---|
| Limbi | O limbă a site-ului pe cerere | Engleză | 14 limbi cu language |
| Același ID în toate limbile | URL-uri diferite pentru fiecare limbă | Nu se aplică | Același ID numeric peste tot |
| Toate traducerile unui titlu | Preiei pagina fiecărei limbi | Nu se aplică | Un singur apel translations |
| Postere localizate | URL-uri de imagini pe limbă | Vezi documentația lor | Filtrul include_image_language |
| Titlul original | Îl extragi din textul paginii | Vezi documentația lor | original_title, original_name |
Prețuri
Setul de limbi este același la fiecare plan, așa că plătești doar pentru ritm și perioadă. Cumperi 1, 3, 6, 12 sau 24 de luni plătite în avans, cu reduceri de 0, 10, 20, 30 sau 40 la sută la cele mai lungi și fără reînnoire automată. Planurile de 20, 40 și 120 de cereri pe minut includ toate limbile și toate endpoint-urile. Un site în cinci limbi are nevoie de până la cinci apeluri de detalii pe titlu, iar cererile repetate sunt servite din cache-ul la margine 6 ore. Nu există nivel gratuit. Vezi prețuri.