Firmy i sieci telewizyjne

Endpointy firm i sieci zwracają nazwę, kraj pochodzenia i ścieżkę do logo studia lub sieci telewizyjnej po ID, pod GET /3/company/{company_id} i GET /3/network/{network_id}. Ścieżki i JSON odpowiadają TMDB v3. Przekaż ID do with_companies i with_networks w discover, aby wypisać ich tytuły.

Zaktualizowano Zobacz jako Markdown

Pobieranie szczegółów firmy

GET /3/company/{company_id} zwraca jedną firmę produkcyjną: nazwę, kraj pochodzenia i ścieżkę do logo. Niesie też description, headquarters, homepage i parent_company, ale amodb zostawia je puste. ID to ID firmy z TMDB, więc zapisane wcześniej ID nadal działają.

Poniższy przykład odczytuje pierwszą firmę produkcyjną filmu 550, a potem pobiera tę firmę.

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_idpathwymagany
    Numeryczne ID firmy, na przykład 25.
  • api_keyqueryjeden z dwóch
    Twój klucz. Użyj go albo nagłówka Authorization: Bearer.

Pola odpowiedzi

PoleTypUwagi
descriptionstringZawsze pusty ciąg.
headquartersstringMiasto lub region. Puste dla większości firm.
homepagestringAdres strony. Puste dla większości firm.
idintegerID firmy.
logo_pathstring lub nullDołącz do https://img.amodb.dev/t/p/{size}.
namestringNazwa firmy.
origin_countrystringKod ISO 3166-1, na przykład US. Może być pusty.
parent_companynullZawsze null. amodb nie wypełnia firmy nadrzędnej.

Przykładowa odpowiedź

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

Ten sam kształt wraca dla każdego ID firmy, na przykład /3/company/1 dla Lucasfilm.

Pobieranie szczegółów sieci telewizyjnej

GET /3/network/{network_id} zwraca sieć telewizyjną: nazwę, kraj pochodzenia, ścieżkę do logo, headquarters i homepage. Nie ma description ani parent_company. ID sieci odczytaj z tablicy networks serialu. Serial /3/tv/1399 wymienia HBO z ID 49.

JSON
{
  "headquarters": "",
  "homepage": "",
  "id": 49,
  "logo_path": "/tuomPhY2UtuPTqqFnKMVHvSb724.png",
  "name": "HBO",
  "origin_country": "US"
}
PoleTypUwagi
headquartersstringPuste dla większości sieci.
homepagestringPuste dla większości sieci.
idintegerID sieci.
logo_pathstring lub nullŚcieżka pliku logo.
namestringNazwa sieci.
origin_countrystringKod ISO 3166-1. Pusty ciąg dla globalnych usług streamingowych, takich jak Netflix.

Endpointy w tej grupie

Wszystkie ścieżki mają wspólną bazę https://api.amodb.dev/3 i to samo uwierzytelnianie co inne endpointy.

Metoda i ścieżkaZwracaParametry
GET /company/{company_id}Rekord firmycompany_id
GET /network/{network_id}Rekord siecinetwork_id
GET /search/companyLista firm z paginacją z id, name, logo_path, origin_countryquery, page

amodb nie udostępnia ścieżek alternative_names ani images dla firm i sieci. Logo to logo_path w samym rekordzie.

Loga

Adres logo zbuduj jako https://img.amodb.dev/t/p/w185 plus logo_path. GET /3/configuration wymienia rozmiary logo: w92, w154, w185, w300, w500 i original. Pełna tabela rozmiarów jest na stronie obrazy. Pliki logo to głównie PNG, a pliki obrazów nie wymagają klucza. Firma bez logo ma logo_path ustawione na null.

Filtrowanie discover według firmy lub sieci

ID firm i sieci są najprzydatniejsze jako filtry. Discover zamienia ID na listę tytułów.

FiltrDziała wZnaczenie
with_companies/discover/movie i /discover/tvTytuły nakręcone przez te firmy.
with_networks/discover/tvSeriale emitowane przez te sieci. Discover filmów go ignoruje.

Oddziel kilka ID przecinkiem, by wymagać wszystkich, albo znakiem kreski pionowej (zakodowanym jako %7C), by zaakceptować dowolne. Poniższe wywołanie wypisuje filmy jednej firmy, posortowane według popularności. Drugie wywołanie wypisuje seriale emitowane przez 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"

Wyniki discover są w cache na edge przez 30 minut i przychodzą po 20 na stronę. Pełna lista filtrów jest na stronie discover.

Wyszukiwanie firmy po nazwie

GET /3/search/company?query=lucasfilm zwraca listę z paginacją. Każdy wiersz ma id, logo_path, name i origin_country. Wiersze nie są uporządkowane według dokładnego dopasowania: studio o nazwie Lucasfilm Ltd. ma ID 1 i jest trzecim wierszem, po dwóch podobnych nazwach. Zanim weźmiesz ID, porównaj name i origin_country. Zasady zapytań opisuje strona wyszukiwanie. Nie ma ścieżki wyszukiwania sieci.

Błędy

Nieistniejąca firma lub sieć zwraca treść błędu TMDB z status_code 34. Inne awarie używają tej samej treści.

HTTPstatus_codeKiedy
4017Brakuje klucza lub jest błędny.
40236Okres planu dobiegł końca.
40434Brak firmy lub sieci o tym ID albo ID nie jest liczbą.
40537Wysłano metodę zapisu.
42925Przekroczono limit żądań na minutę. Poczekaj tyle sekund, ile podaje Retry-After.

Pełną listę zobacz w błędy, a nagłówki opisują limity żądań.

Praktyczne uwagi

  • Zapisuj id firmy obok nazwy. Nazwy się zmieniają, ID nie.
  • Zanim wyrenderujesz logo, sprawdź, czy logo_path nie ma wartości null. Nie polegaj na homepage, headquarters ani description, bo są puste.
  • Szczegóły firm i sieci są w cache na edge przez 6 godzin. Pliki logo na img.amodb.dev są w cache przez 30 dni.
  • Sieć to pojęcie telewizyjne. Aby dostać jej seriale, użyj with_networks w /discover/tv, a nie w discover filmów.
  • Aby znaleźć firmę po nazwie, użyj wyszukiwania firm powyżej, a właściwy wiersz wybierz według name i origin_country.