Società ed emittenti

Gli endpoint di società ed emittenti restituiscono nome, paese di origine e percorso del logo di uno studio o di un'emittente TV per ID, su GET /3/company/{company_id} e GET /3/network/{network_id}. Percorsi e JSON seguono TMDB v3. Passa gli ID a with_companies e with_networks in discover per elencarne i titoli.

Aggiornato il Vedi in Markdown

Ottenere i dettagli di una società

GET /3/company/{company_id} restituisce una casa di produzione: nome, paese di origine e percorso del logo. Porta anche description, headquarters, homepage e parent_company, ma amodb li lascia vuoti. L'ID è l'ID società di TMDB, quindi gli ID che avevi salvato prima continuano a funzionare.

L'esempio qui sotto legge la prima società di produzione del film 550 e poi carica quella società.

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)
}

Parametri

  • company_idpercorsoobbligatorio
    ID numerico della società, per esempio 25.
  • api_keyqueryuno dei due
    La tua chiave. Usa questa o l'header Authorization: Bearer.

Campi della risposta

CampoTipoNote
descriptionstringaSempre una stringa vuota.
headquartersstringaCittà o regione. Vuota per la maggior parte delle società.
homepagestringaIndirizzo del sito web. Vuoto per la maggior parte delle società.
idinteroID della società.
logo_pathstringa o nullDa accodare a https://img.amodb.dev/t/p/{size}.
namestringaNome della società.
origin_countrystringaCodice ISO 3166-1 come US. Può essere vuoto.
parent_companynullSempre null. amodb non compila la società madre.

Risposta di esempio

JSON
{
  "description": "",
  "headquarters": "",
  "homepage": "",
  "id": 25,
  "logo_path": "/nM2MfoMqzJQRiSynsDabOtFKetD.png",
  "name": "20th Century Fox",
  "origin_country": "US",
  "parent_company": null
}

La stessa struttura torna per ogni ID di società, per esempio /3/company/1 per Lucasfilm.

Ottenere i dettagli di un'emittente

GET /3/network/{network_id} restituisce un'emittente TV: nome, paese di origine, percorso del logo, headquarters e homepage. Non ha description né parent_company. Leggi l'ID di un'emittente dall'array networks di una serie. La serie /3/tv/1399 elenca HBO con id 49.

JSON
{
  "headquarters": "",
  "homepage": "",
  "id": 49,
  "logo_path": "/tuomPhY2UtuPTqqFnKMVHvSb724.png",
  "name": "HBO",
  "origin_country": "US"
}
CampoTipoNote
headquartersstringaVuota per la maggior parte delle emittenti.
homepagestringaVuoto per la maggior parte delle emittenti.
idinteroID dell'emittente.
logo_pathstringa o nullPercorso del file del logo.
namestringaNome dell'emittente.
origin_countrystringaCodice ISO 3166-1. Una stringa vuota per i servizi di streaming globali come Netflix.

Endpoint di questo gruppo

Tutti i percorsi condividono la base https://api.amodb.dev/3 e la stessa autenticazione degli altri endpoint.

Metodo e percorsoRestituisceParametri
GET /company/{company_id}Scheda della societàcompany_id
GET /network/{network_id}Scheda dell'emittentenetwork_id
GET /search/companyLista paginata di società con id, name, logo_path, origin_countryquery, page

amodb non offre i percorsi alternative_names o images per società ed emittenti. Il logo è il logo_path nella scheda stessa.

Loghi

Costruisci l'indirizzo del logo come https://img.amodb.dev/t/p/w185 più logo_path. GET /3/configuration elenca le dimensioni dei loghi: w92, w154, w185, w300, w500 e original. La pagina immagini ha la tabella completa delle dimensioni. I file dei loghi sono per lo più PNG, e i file delle immagini non richiedono chiave. Una società senza logo ha logo_path impostato a null.

Filtrare discover per società o emittente

Gli ID di società ed emittenti sono più utili come filtri. Discover trasforma un ID in una lista di titoli.

FiltroFunziona suSignificato
with_companies/discover/movie e /discover/tvTitoli prodotti da queste società.
with_networks/discover/tvSerie trasmesse da queste emittenti. Discover per i film lo ignora.

Separa più ID con una virgola per richiederli tutti, o con una barra verticale (codificata %7C) per accettarne uno qualsiasi. La chiamata qui sotto elenca i film di una società, ordinati per popolarità. La seconda chiamata elenca le serie trasmesse da 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"

I risultati di discover restano in cache sull'edge per 30 minuti e arrivano a 20 per pagina. L'elenco completo dei filtri è nella pagina discover.

Trovare una società per nome

GET /3/search/company?query=lucasfilm restituisce una lista paginata. Ogni riga ha id, logo_path, name e origin_country. Le righe non sono ordinate per corrispondenza esatta: lo studio chiamato Lucasfilm Ltd. ha id 1 ed è la terza riga, dopo due nomi simili. Confronta name e origin_country prima di prendere un ID. Le regole della query sono nella pagina ricerca. Non esiste un percorso di ricerca per emittenti.

Errori

Una società o un'emittente che non esiste restituisce il corpo di errore TMDB con status_code 34. Gli altri errori usano lo stesso corpo.

HTTPstatus_codeQuando
4017La chiave manca o è sbagliata.
40236Il periodo del piano è terminato.
40434Nessuna società o emittente con quell'ID, o un ID che non è un numero.
40537Hai inviato un metodo di scrittura.
42925Oltre le tue richieste al minuto. Attendi i secondi di Retry-After.

Vedi errori per l'elenco completo e limiti di richieste per gli header.

Note pratiche

  • Salva l'id della società accanto al nome. I nomi cambiano, gli ID no.
  • Controlla che logo_path non sia null prima di mostrarlo. Non fare affidamento su homepage, headquarters o description, perché sono vuoti.
  • I dettagli di società ed emittenti restano in cache per 6 ore sull'edge. I file dei loghi su img.amodb.dev restano in cache per 30 giorni.
  • Un'emittente è un concetto televisivo. Per ottenere le sue serie usa with_networks su /discover/tv, non su discover per i film.
  • Per trovare una società per nome usa la ricerca di società qui sopra, poi scegli la riga giusta per name e origin_country.