Obține date despre filme în 14 limbi

GET /3/movie/{movie_id}?language=ru-RU î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ăCodEtichetă exemplu
Englezăenen-US
Rusăruru-RU
Ucraineanăukuk-UA
Belarusăbebe-BY
Chinezăzhzh-CN
Portughezăptpt-BR
Bulgarăbgbg-BG
Ebraicăhehe-IL
Cehăcscs-CZ
Românăroro-RO
Francezăfrfr-FR
Polonezăplpl-PL
Italianăitit-IT
Spaniolăeses-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

EndpointConținut localizat
GET /3/movie/{movie_id}title, overview, tagline, numele genurilor
GET /3/tv/{tv_id}name, overview, tagline, numele genurilor
GET /3/tv/{tv_id}/season/{season_number}name și overview de sezon și de episod
GET /3/person/{person_id}biography
GET /3/genre/movie/listNume de genuri pentru filtre și meniuri
GET /3/movie/{movie_id}/translationsToate limbile unui titlu într-un singur răspuns
GET /3/movie/{movie_id}/imagesPostere etichetate după limbă, filtrate cu include_image_language
GET /3/movie/{movie_id}/videosVideoclipuri etichetate cu iso_639_1, toate limbile într-un singur răspuns

Începe în 3 pași

  1. Alege un plan la prețuri. Numărul de limbi nu se schimbă cu planul, doar ritmul cererilor.
  2. Creează o cheie în panoul contului tău.
  3. Apelează orice endpoint cu o etichetă language și trimite cheia ca api_key sau î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ă.

bashphp
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.

JSON
{
  "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:

  1. Cere limba pe care o afișezi.
  2. Dacă un câmp este gol, cere en-US pentru același ID sau citește intrarea în engleză din lista de traduceri.
  3. Dacă titlul este gol, arată original_title.
  4. 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 /3/movie/{movie_id}/translations î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âmpSemnificație
iso_639_1, iso_3166_1Codurile de limbă și de țară
english_nameNumele limbii în engleză
data.title (filme) sau data.name (TV), data.overview, data.taglineText localizat, titlul poate fi gol
data.homepage, data.runtimeValori 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.

ParametruFolosit peExemplu
include_image_languageEndpoint-uri de imaginiru,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" și dir="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ă

CapacitateExtragi singur paginileSet de date doar în englezăamodb
LimbiO limbă a site-ului pe cerereEngleză14 limbi cu language
Același ID în toate limbileURL-uri diferite pentru fiecare limbăNu se aplicăAcelași ID numeric peste tot
Toate traducerile unui titluPreiei pagina fiecărei limbiNu se aplicăUn singur apel translations
Postere localizateURL-uri de imagini pe limbăVezi documentația lorFiltrul include_image_language
Titlul originalÎl extragi din textul paginiiVezi documentația lororiginal_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.