Společnosti a televizní sítě

Endpointy společností a sítí vrací název, zemi původu a cestu k logu studia nebo televizní sítě podle ID na GET /3/company/{company_id} a GET /3/network/{network_id}. Cesty a JSON odpovídají TMDB v3. ID předejte do with_companies a with_networks v discover a vypíšete jejich tituly.

Aktualizováno Zobrazit jako Markdown

Získání detailů společnosti

GET /3/company/{company_id} vrací jednu produkční společnost: název, zemi původu a cestu k logu. Nese také description, headquarters, homepage a parent_company, ale amodb je ponechává prázdné. ID je ID společnosti z TMDB, takže dříve uložená ID dál fungují.

Ukázka níže přečte první produkční společnost filmu 550 a pak tuto společnost načte.

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

Parametry

  • company_idpathpovinný
    Číselné ID společnosti, například 25.
  • api_keyqueryjeden ze dvou
    Váš klíč. Použijte jej, nebo hlavičku Authorization: Bearer.

Pole odpovědi

PoleTypPoznámky
descriptionstringVždy prázdný řetězec.
headquartersstringMěsto nebo region. U většiny společností prázdné.
homepagestringAdresa webu. U většiny společností prázdná.
idintegerID společnosti.
logo_pathstring nebo nullPřipojte k https://img.amodb.dev/t/p/{size}.
namestringNázev společnosti.
origin_countrystringKód ISO 3166-1, například US. Může být prázdný.
parent_companynullVždy null. amodb mateřskou společnost nevyplňuje.

Příklad odpovědi

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

Stejný tvar se vrací pro každé ID společnosti, například /3/company/1 pro Lucasfilm.

Získání detailů televizní sítě

GET /3/network/{network_id} vrací televizní síť: název, zemi původu, cestu k logu, headquarters a homepage. Nemá description ani parent_company. ID sítě přečtěte z pole networks seriálu. Seriál /3/tv/1399 uvádí HBO s ID 49.

JSON
{
  "headquarters": "",
  "homepage": "",
  "id": 49,
  "logo_path": "/tuomPhY2UtuPTqqFnKMVHvSb724.png",
  "name": "HBO",
  "origin_country": "US"
}
PoleTypPoznámky
headquartersstringU většiny sítí prázdné.
homepagestringU většiny sítí prázdná.
idintegerID sítě.
logo_pathstring nebo nullCesta k souboru loga.
namestringNázev sítě.
origin_countrystringKód ISO 3166-1. Prázdný řetězec u globálních streamovacích služeb, například Netflix.

Endpointy v této skupině

Všechny cesty sdílejí základ https://api.amodb.dev/3 a stejné ověření jako ostatní endpointy.

Metoda a cestaVracíParametry
GET /company/{company_id}Záznam společnosticompany_id
GET /network/{network_id}Záznam sítěnetwork_id
GET /search/companyStránkovaný seznam společností s id, name, logo_path, origin_countryquery, page

amodb nenabízí cesty alternative_names ani images pro společnosti a sítě. Logo je logo_path přímo v záznamu.

Loga

Adresu loga sestavte jako https://img.amodb.dev/t/p/w185 plus logo_path. GET /3/configuration uvádí velikosti log: w92, w154, w185, w300, w500 a original. Úplná tabulka velikostí je na stránce obrázky. Soubory log jsou většinou PNG a soubory obrázků klíč nepotřebují. Společnost bez loga má logo_path nastavené na null.

Filtrování discover podle společnosti nebo sítě

ID společností a sítí jsou nejužitečnější jako filtry. Discover mění ID na seznam titulů.

FiltrFunguje naVýznam
with_companies/discover/movie a /discover/tvTituly natočené těmito společnostmi.
with_networks/discover/tvSeriály vysílané těmito sítěmi. Discover pro filmy jej ignoruje.

Více ID oddělte čárkou, pokud požadujete všechna, nebo znakem svislé čáry (kódovaným jako %7C), pokud stačí kterékoli. Volání níže vypíše filmy jedné společnosti seřazené podle popularity. Druhé volání vypíše seriály, které vysílala 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"

Výsledky discover se na edge cachují 30 minut a přicházejí po 20 na stránku. Úplný seznam filtrů je na stránce discover.

Hledání společnosti podle názvu

GET /3/search/company?query=lucasfilm vrací stránkovaný seznam. Každý řádek má id, logo_path, name a origin_country. Řádky nejsou řazeny podle přesné shody: studio s názvem Lucasfilm Ltd. má ID 1 a je třetím řádkem, za dvěma podobnými názvy. Než ID vezmete, porovnejte name a origin_country. Pravidla dotazu jsou na stránce vyhledávání. Cesta pro hledání sítí neexistuje.

Chyby

Neexistující společnost nebo síť vrací tělo chyby TMDB se status_code 34. Ostatní selhání používají stejné tělo.

HTTPstatus_codeKdy
4017Klíč chybí nebo je nesprávný.
40236Platnost tarifu skončila.
40434Společnost ani síť s tímto ID neexistuje, nebo ID není číslo.
40537Poslali jste metodu pro zápis.
42925Překročen počet požadavků za minutu. Počkejte tolik sekund, kolik říká Retry-After.

Úplný seznam viz chyby a hlavičky popisují limity požadavků.

Praktické poznámky

  • Ukládejte id společnosti vedle názvu. Názvy se mění, ID ne.
  • Než logo vykreslíte, zkontrolujte, zda logo_path není null. Nespoléhejte na homepage, headquarters ani description, protože jsou prázdné.
  • Detaily společností a sítí se na edge cachují 6 hodin. Soubory log na img.amodb.dev se cachují 30 dní.
  • Síť je televizní pojem. Její seriály získáte přes with_networks na /discover/tv, ne na discover pro filmy.
  • Chcete-li najít společnost podle názvu, použijte hledání společností výše a správný řádek vyberte podle name a origin_country.