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.
Ottenere i dettagli di una società
GET / 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à.
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_idpercorsoobbligatorioID numerico della società, per esempio25.api_keyqueryuno dei dueLa tua chiave. Usa questa o l'headerAuthorization: Bearer.
Campi della risposta
| Campo | Tipo | Note |
|---|---|---|
description | stringa | Sempre una stringa vuota. |
headquarters | stringa | Città o regione. Vuota per la maggior parte delle società. |
homepage | stringa | Indirizzo del sito web. Vuoto per la maggior parte delle società. |
id | intero | ID della società. |
logo_path | stringa o null | Da accodare a https:/. |
name | stringa | Nome della società. |
origin_country | stringa | Codice ISO 3166-1 come US. Può essere vuoto. |
parent_company | null | Sempre null. amodb non compila la società madre. |
Risposta di esempio
{
"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 / 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.
{
"headquarters": "",
"homepage": "",
"id": 49,
"logo_path": "/tuomPhY2UtuPTqqFnKMVHvSb724.png",
"name": "HBO",
"origin_country": "US"
}| Campo | Tipo | Note |
|---|---|---|
headquarters | stringa | Vuota per la maggior parte delle emittenti. |
homepage | stringa | Vuoto per la maggior parte delle emittenti. |
id | intero | ID dell'emittente. |
logo_path | stringa o null | Percorso del file del logo. |
name | stringa | Nome dell'emittente. |
origin_country | stringa | Codice 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:/ e la stessa autenticazione degli altri endpoint.
| Metodo e percorso | Restituisce | Parametri |
|---|---|---|
GET / | Scheda della società | company_id |
GET / | Scheda dell'emittente | network_id |
GET /search/company | Lista paginata di società con id, name, logo_path, origin_country | query, 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:/ 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.
| Filtro | Funziona su | Significato |
|---|---|---|
with_companies | /discover/movie e /discover/tv | Titoli prodotti da queste società. |
with_networks | /discover/tv | Serie 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 -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 / 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.
| HTTP | status_code | Quando |
|---|---|---|
| 401 | 7 | La chiave manca o è sbagliata. |
| 402 | 36 | Il periodo del piano è terminato. |
| 404 | 34 | Nessuna società o emittente con quell'ID, o un ID che non è un numero. |
| 405 | 37 | Hai inviato un metodo di scrittura. |
| 429 | 25 | Oltre 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'
iddella società accanto al nome. I nomi cambiano, gli ID no. - Controlla che
logo_pathnon sianullprima di mostrarlo. Non fare affidamento suhomepage,headquartersodescription, perché sono vuoti. - I dettagli di società ed emittenti restano in cache per 6 ore sull'edge. I file dei loghi su
img.amodb.devrestano in cache per 30 giorni. - Un'emittente è un concetto televisivo. Per ottenere le sue serie usa
with_networkssu/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
nameeorigin_country.