Obtenir les données de films en 14 langues
GET / renvoie le titre, le résumé, le slogan et les noms de genres en russe. Le paramètre language accepte les balises TMDB comme ru-RU ou pt-BR et fonctionne sur tous les points de terminaison qui renvoient du texte. Les identifiants restent les mêmes dans toutes les langues : une seule ligne de votre base de données les sert toutes.
Vous obtenez 14 langues avec une seule clé, l'original_title de chaque film, un point de terminaison de traductions qui liste toutes les langues d'un titre, et des noms de genres localisés. La liste complète est sur langues.
Les 14 langues servies
| Langue | Code | Exemple de balise |
|---|---|---|
| Anglais | en | en-US |
| Russe | ru | ru-RU |
| Ukrainien | uk | uk-UA |
| Biélorusse | be | be-BY |
| Chinois | zh | zh-CN |
| Portugais | pt | pt-BR |
| Bulgare | bg | bg-BG |
| Hébreu | he | he-IL |
| Tchèque | cs | cs-CZ |
| Roumain | ro | ro-RO |
| Français | fr | fr-FR |
| Polonais | pl | pl-PL |
| Italien | it | it-IT |
| Espagnol | es | es-ES |
Toute autre balise se replie sur en. Le japonais et le coréen ne sont pas servis comme langues d'interface. Leurs titres originaux reviennent quand même dans original_title pour les films et original_name pour les séries.
Les données obtenues
| Point de terminaison | Contenu localisé |
|---|---|
GET / | title, overview, tagline, noms de genres |
GET /3/tv/{tv_id} | name, overview, tagline, noms de genres |
GET / | name et overview des saisons et des épisodes |
GET / | biography |
GET / | Noms de genres pour les filtres et les menus |
GET / | Toutes les langues d'un titre en une seule réponse |
GET / | Affiches étiquetées par langue, filtrées avec include_image_language |
GET / | Vidéos étiquetées par iso_639_1, toutes les langues en une seule réponse |
Démarrer en 3 étapes
- Choisissez une offre sur les tarifs. Le nombre de langues ne change pas avec l'offre, seul le débit de requêtes change.
- Créez une clé dans le tableau de bord de votre compte.
- Appelez n'importe quel point de terminaison avec une balise
language, et envoyez la clé dansapi_keyou dans un en-tête Bearer.
Exemple de requête
L'exemple bash affiche le titre de Fight Club (id 550) en trois langues. Il utilise jq pour afficher un champ. L'exemple PHP demande le biélorusse et se replie sur l'anglais quand le résumé est vide.
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éponse pour language=ru-RU, réduite à quelques champs. La clé text_language de l'exemple PHP est ajoutée par votre code, pas par l'API.
{
"genres": [
{
"id": 18,
"name": "драма"
},
{
"id": 53,
"name": "триллер"
}
],
"id": 550,
"original_language": "en",
"original_title": "Fight Club",
"overview": "Сотрудник страховой компании страдает хронической бессонницей и отчаянно пытается вырваться из мучительно скучной жизни. Однажды в очередной командировке он...",
"poster_path": "/66RvLrRJTm4J8l3uHXWF09AICol.jpg",
"tagline": "«Интриги. Хаос. Мыло»",
"title": "Бойцовский клуб"
}Repli quand un champ est vide
Tous les titres n'ont pas de texte dans toutes les langues. Un overview peut revenir vide quand il n'existe pas de traduction, et un title ou un tagline peut revenir en anglais. L'API n'invente pas de texte. Utilisez un ordre fixe pour que la page affiche toujours quelque chose :
- Demandez la langue que vous affichez.
- Si un champ est vide, demandez
en-USpour le même identifiant, ou lisez l'entrée anglaise de la liste des traductions. - Si le titre est vide, affichez
original_title. - Enregistrez la langue d'origine de chaque champ, pour pouvoir réessayer plus tard.
Le cache de périphérie conserve une copie par langue pour chaque chemin mis en cache : le repli en anglais d'un titre populaire est donc généralement servi depuis le cache.
Lister toutes les traductions d'un titre
GET / renvoie un tableau translations, avec une entrée par langue disposant de données. La liste peut être plus longue que les 14 langues servies : Fight Club a 50 entrées. Utilisez-la pour construire un sélecteur de langue, ou pour stocker tous les textes d'un titre dans une seule ligne.
| Champ | Signification |
|---|---|
iso_639_1, iso_3166_1 | Codes de langue et de pays |
english_name | Nom de la langue en anglais |
data.title (films) ou data.name (séries), data.overview, data.tagline | Texte localisé, le titre peut être vide |
data.homepage, data.runtime | Valeurs facultatives pour cette traduction |
Le même point de terminaison existe pour les séries et les épisodes. Les entrées de séries portent data.name et pas de runtime, et les entrées d'épisodes ne portent que name et overview. Les saisons répondent par une liste vide, et les personnes et les collections n'ont pas de point de terminaison de traductions. Les détails sont sur traductions. Un seul appel de traductions remplace jusqu'à 14 appels de détails quand vous voulez toutes les langues à la fois.
Affiches et vidéos par langue
Les images et les vidéos portent leurs propres balises de langue dans iso_639_1. Sur les points de terminaison d'images, passez une liste séparée par des virgules et ajoutez null pour les éléments sans langue, comme les affiches sans texte. La réponse contient les éléments correspondants, classez-les donc dans votre code.
| Paramètre | Utilisé sur | Exemple |
|---|---|---|
include_image_language | Points de terminaison d'images | ru,en,null |
Les points de terminaison de vidéos renvoient toutes les langues en une seule réponse et ignorent include_video_language : filtrez donc vous-même sur iso_639_1. Voir images pour les tailles et le CDN.
L'hébreu et le texte de droite à gauche
L'hébreu est la seule langue de droite à gauche parmi les 14. Gérez-le dans la page, pas dans les données :
- Définissez
lang="he"etdir="rtl"sur l'élément qui contient le texte. - Entourez les titres en caractères latins au milieu d'un texte hébreu d'un élément
<bdi>pour que la ponctuation ne passe pas du mauvais côté. - Utilisez des propriétés CSS logiques comme
margin-inline-startau lieu de gauche et droite.
Comparaison
| Capacité | Extraire les pages soi-même | Jeu de données en anglais uniquement | amodb |
|---|---|---|---|
| Langues | Une langue de site par requête | Anglais | 14 langues avec language |
| Même identifiant dans toutes les langues | Des URL différentes par langue | Sans objet | Le même identifiant numérique partout |
| Toutes les traductions d'un titre | Récupérer chaque page de langue | Sans objet | Un seul appel translations |
| Affiches localisées | URL d'images par langue | Voir leur documentation | Filtre include_image_language |
| Titre original | À extraire du texte de la page | Voir leur documentation | original_title, original_name |
Tarifs
Le jeu de langues est le même pour toutes les offres : vous ne payez donc que le débit et la période. Achetez 1, 3, 6, 12 ou 24 mois prépayés, avec 0, 10, 20, 30 ou 40 pour cent de réduction sur les plus longues et sans renouvellement automatique. Les offres à 20, 40 et 120 requêtes par minute incluent toutes les langues et tous les points de terminaison. Un site en cinq langues demande jusqu'à cinq appels de détails par titre, et les requêtes répétées sont servies depuis le cache de périphérie pendant 6 heures. Pas d'offre gratuite. Voir les tarifs.