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.

Mis à jour le Voir en Markdown

Obtenir les détails d'une société

GET /3/company/{company_id} 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é.

bashjspyphpgo
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_idcheminobligatoire
    Identifiant numérique de la société, par exemple 25.
  • api_keyrequêtel'un des deux
    Votre clé. Utilisez-la ou l'en-tête Authorization: Bearer.

Champs de la réponse

ChampTypeRemarques
descriptionchaîneToujours une chaîne vide.
headquarterschaîneVille ou région. Vide pour la plupart des sociétés.
homepagechaîneAdresse du site web. Vide pour la plupart des sociétés.
identierIdentifiant de la société.
logo_pathchaîne ou nullÀ ajouter à https://img.amodb.dev/t/p/{size}.
namechaîneNom de la société.
origin_countrychaîneCode ISO 3166-1 comme US. Peut être vide.
parent_companynullToujours null. amodb ne renseigne pas la société mère.

Exemple de réponse

JSON
{
  "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 /3/network/{network_id} 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.

JSON
{
  "headquarters": "",
  "homepage": "",
  "id": 49,
  "logo_path": "/tuomPhY2UtuPTqqFnKMVHvSb724.png",
  "name": "HBO",
  "origin_country": "US"
}
ChampTypeRemarques
headquarterschaîneVide pour la plupart des chaînes.
homepagechaîneVide pour la plupart des chaînes.
identierIdentifiant de la chaîne.
logo_pathchaîne ou nullChemin du fichier du logo.
namechaîneNom de la chaîne.
origin_countrychaîneCode 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://api.amodb.dev/3 et la même authentification que les autres points de terminaison.

Méthode et cheminRenvoieParamètres
GET /company/{company_id}Fiche de sociétécompany_id
GET /network/{network_id}Fiche de chaînenetwork_id
GET /search/companyListe paginée de sociétés avec id, name, logo_path, origin_countryquery, 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://img.amodb.dev/t/p/w185 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.

FiltreFonctionne surSignification
with_companies/discover/movie et /discover/tvTitres réalisés par ces sociétés.
with_networks/discover/tvSé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
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 /3/search/company?query=lucasfilm 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.

HTTPstatus_codeQuand
4017La clé est absente ou fausse.
40236La période de l'offre est terminée.
40434Aucune société ni chaîne avec cet identifiant, ou un identifiant qui n'est pas un nombre.
40537Vous avez envoyé une méthode d'écriture.
42925Au-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'id de la société à côté du nom. Les noms changent, pas les identifiants.
  • Vérifiez que logo_path n'est pas null avant de l'afficher. Ne comptez pas sur homepage, headquarters ou description, 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.dev sont mis en cache 30 jours.
  • Une chaîne est un concept de télévision. Pour obtenir ses séries, utilisez with_networks sur /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 name et origin_country.