Sociétés et chaînes
Les points de terminaison de sociétés et de chaînes renvoient le nom, le pays d'origine et le chemin du logo d'un studio ou d'une chaîne de télévision par id, sur GET /3/company/{company_id} et GET /3/network/{network_id}. Chemins et JSON suivent TMDB v3. Passez les ids à with_companies et with_networks dans discover pour lister leurs titres.
Obtenir les détails d'une société
GET / renvoie une société de production : nom, pays d'origine et chemin du logo. Il porte aussi description, headquarters, homepage et parent_company, mais amodb les laisse vides. L'identifiant est l'identifiant de société TMDB : les identifiants que vous avez stockés plus tôt continuent donc de fonctionner.
L'exemple ci-dessous lit la première société de production du film 550 puis charge cette société.
COMPANY_ID=$(curl -sf "https://api.amodb.dev/3/movie/550" \
-H "Authorization: Bearer $AMODB_KEY" | jq '.production_companies[0].id')
curl -sf "https://api.amodb.dev/3/company/$COMPANY_ID" \
-H "Authorization: Bearer $AMODB_KEY"const base = 'https://api.amodb.dev/3';
const headers = { Authorization: `Bearer ${process.env.AMODB_KEY}` };
async function get(path) {
const res = await fetch(base + path, { headers });
if (!res.ok) throw new Error(`amodb returned ${res.status} for ${path}`);
return res.json();
}
const movie = await get('/movie/550');
const company = await get(`/company/${movie.production_companies[0].id}`);
console.log(company.name, company.origin_country, company.logo_path);import os
import requests
BASE = "https://api.amodb.dev/3"
HEADERS = {"Authorization": f"Bearer {os.environ['AMODB_KEY']}"}
def get(path):
r = requests.get(BASE + path, headers=HEADERS, timeout=10)
r.raise_for_status()
return r.json()
movie = get("/movie/550")
company = get(f"/company/{movie['production_companies'][0]['id']}")
print(company["name"], company["origin_country"], company["logo_path"])<?php
function amodb_get(string $path): array {
$ch = curl_init('https://api.amodb.dev/3' . $path);
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 for $path");
}
return json_decode($body, true);
}
$movie = amodb_get('/movie/550');
$company = amodb_get('/company/' . $movie['production_companies'][0]['id']);
echo $company['name'], ' ', $company['origin_country'], PHP_EOL;package main
import (
"encoding/json"
"fmt"
"net/http"
"os"
"time"
)
var client = &http.Client{Timeout: 10 * time.Second}
func get(path string, out any) error {
req, err := http.NewRequest("GET", "https://api.amodb.dev/3"+path, nil)
if err != nil {
return err
}
req.Header.Set("Authorization", "Bearer "+os.Getenv("AMODB_KEY"))
res, err := client.Do(req)
if err != nil {
return err
}
defer res.Body.Close()
if res.StatusCode != http.StatusOK {
return fmt.Errorf("amodb returned %s for %s", res.Status, path)
}
return json.NewDecoder(res.Body).Decode(out)
}
func main() {
var movie struct {
Companies []struct {
ID int `json:"id"`
} `json:"production_companies"`
}
if err := get("/movie/550", &movie); err != nil || len(movie.Companies) == 0 {
panic("movie has no production companies")
}
var company struct {
Name string `json:"name"`
OriginCountry string `json:"origin_country"`
}
if err := get(fmt.Sprintf("/company/%d", movie.Companies[0].ID), &company); err != nil {
panic(err)
}
fmt.Println(company.Name, company.OriginCountry)
}Paramètres
company_idcheminobligatoireIdentifiant numérique de la société, par exemple25.api_keyrequêtel'un des deuxVotre clé. Utilisez-la ou l'en-têteAuthorization: Bearer.
Champs de la réponse
| Champ | Type | Remarques |
|---|---|---|
description | chaîne | Toujours une chaîne vide. |
headquarters | chaîne | Ville ou région. Vide pour la plupart des sociétés. |
homepage | chaîne | Adresse du site web. Vide pour la plupart des sociétés. |
id | entier | Identifiant de la société. |
logo_path | chaîne ou null | À ajouter à https:/. |
name | chaîne | Nom de la société. |
origin_country | chaîne | Code ISO 3166-1 comme US. Peut être vide. |
parent_company | null | Toujours null. amodb ne renseigne pas la société mère. |
Exemple de réponse
{
"description": "",
"headquarters": "",
"homepage": "",
"id": 25,
"logo_path": "/nM2MfoMqzJQRiSynsDabOtFKetD.png",
"name": "20th Century Fox",
"origin_country": "US",
"parent_company": null
}La même forme revient pour chaque identifiant de société, par exemple /3/company/1 pour Lucasfilm.
Obtenir les détails d'une chaîne
GET / renvoie une chaîne de télévision : nom, pays d'origine, chemin du logo, headquarters et homepage. Il n'a ni description ni parent_company. Lisez l'identifiant d'une chaîne dans le tableau networks d'une série. La série /3/tv/1399 liste HBO avec l'id 49.
{
"headquarters": "",
"homepage": "",
"id": 49,
"logo_path": "/tuomPhY2UtuPTqqFnKMVHvSb724.png",
"name": "HBO",
"origin_country": "US"
}| Champ | Type | Remarques |
|---|---|---|
headquarters | chaîne | Vide pour la plupart des chaînes. |
homepage | chaîne | Vide pour la plupart des chaînes. |
id | entier | Identifiant de la chaîne. |
logo_path | chaîne ou null | Chemin du fichier du logo. |
name | chaîne | Nom de la chaîne. |
origin_country | chaîne | Code ISO 3166-1. Une chaîne vide pour les services de streaming mondiaux comme Netflix. |
Points de terminaison de ce groupe
Tous les chemins partagent la base https:/ et la même authentification que les autres points de terminaison.
| Méthode et chemin | Renvoie | Paramètres |
|---|---|---|
GET / | Fiche de société | company_id |
GET / | Fiche de chaîne | network_id |
GET /search/company | Liste paginée de sociétés avec id, name, logo_path, origin_country | query, page |
amodb ne propose pas les chemins alternative_names ou images pour les sociétés et les chaînes. Le logo est le logo_path de la fiche elle-même.
Logos
Construisez l'adresse du logo comme https:/ plus logo_path. GET /3/configuration liste les tailles de logos : w92, w154, w185, w300, w500 et original. La page images contient le tableau complet des tailles. Les fichiers de logos sont surtout en PNG, et les fichiers d'images n'exigent aucune clé. Une société sans logo a logo_path à null.
Filtrer discover par société ou par chaîne
Les identifiants de sociétés et de chaînes sont surtout utiles comme filtres. Discover transforme un identifiant en liste de titres.
| Filtre | Fonctionne sur | Signification |
|---|---|---|
with_companies | /discover/movie et /discover/tv | Titres réalisés par ces sociétés. |
with_networks | /discover/tv | Séries diffusées par ces chaînes. Discover pour les films l'ignore. |
Séparez plusieurs identifiants par une virgule pour les exiger tous, ou par une barre verticale (encodée %7C) pour en accepter n'importe lequel. L'appel ci-dessous liste les films d'une société, triés par popularité. Le second appel liste les séries diffusées par HBO.
curl -sf "https://api.amodb.dev/3/discover/movie?with_companies=$COMPANY_ID&sort_by=popularity.desc&page=1" \
-H "Authorization: Bearer $AMODB_KEY"
curl -sf "https://api.amodb.dev/3/discover/tv?with_networks=49&sort_by=popularity.desc" \
-H "Authorization: Bearer $AMODB_KEY"Les résultats de discover sont mis en cache 30 minutes en périphérie et arrivent par pages de 20. La liste complète des filtres est sur la page découverte.
Trouver une société par son nom
GET / renvoie une liste paginée. Chaque ligne a id, logo_path, name et origin_country. Les lignes ne sont pas classées par correspondance exacte : le studio appelé Lucasfilm Ltd. a l'id 1 et se trouve en troisième ligne, après deux noms proches. Comparez name et origin_country avant de prendre un identifiant. Les règles de requête sont sur la page recherche. Il n'existe pas de chemin de recherche de chaînes.
Erreurs
Une société ou une chaîne qui n'existe pas renvoie le corps d'erreur TMDB avec status_code 34. Les autres échecs utilisent le même corps.
| HTTP | status_code | Quand |
|---|---|---|
| 401 | 7 | La clé est absente ou fausse. |
| 402 | 36 | La période de l'offre est terminée. |
| 404 | 34 | Aucune société ni chaîne avec cet identifiant, ou un identifiant qui n'est pas un nombre. |
| 405 | 37 | Vous avez envoyé une méthode d'écriture. |
| 429 | 25 | Au-dessus de vos requêtes par minute. Attendez les secondes de Retry-After. |
Voir erreurs pour la liste complète et limites de débit pour les en-têtes.
Remarques pratiques
- Stockez l'
idde la société à côté du nom. Les noms changent, pas les identifiants. - Vérifiez que
logo_pathn'est pasnullavant de l'afficher. Ne comptez pas surhomepage,headquartersoudescription, car ils sont vides. - Les détails des sociétés et des chaînes sont mis en cache 6 heures en périphérie. Les fichiers de logos sur
img.amodb.devsont mis en cache 30 jours. - Une chaîne est un concept de télévision. Pour obtenir ses séries, utilisez
with_networkssur/discover/tv, pas sur discover pour les films. - Pour trouver une société par son nom, utilisez la recherche de sociétés ci-dessus, puis choisissez la bonne ligne par
nameetorigin_country.