Companii și rețele

Endpoint-urile pentru companii și rețele întorc numele, țara de origine și calea logoului unui studio sau al unei rețele TV după ID, la GET /3/company/{company_id} și GET /3/network/{network_id}. Căile și JSON-ul se potrivesc cu TMDB v3. Transmite ID-urile în with_companies și with_networks la discover ca să listezi titlurile lor.

Actualizat Vezi ca Markdown

Obține detaliile unei companii

GET /3/company/{company_id} întoarce o companie de producție: nume, țară de origine și calea logoului. Poartă și description, headquarters, homepage și parent_company, dar amodb le lasă goale. ID-ul este ID-ul de companie TMDB, deci ID-urile pe care le-ai stocat înainte continuă să funcționeze.

Exemplul de mai jos citește prima companie de producție a filmului 550 și apoi încarcă acea companie.

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_idcaleobligatoriu
    ID numeric de companie, de exemplu 25.
  • api_keyinterogareuna dintre cele două
    Cheia ta. Folosește-o pe aceasta sau antetul Authorization: Bearer.

Câmpurile răspunsului

CâmpTipObservații
descriptionșirMereu un șir gol.
headquartersșirOraș sau regiune. Gol la majoritatea companiilor.
homepageșirAdresa site-ului. Gol la majoritatea companiilor.
idnumăr întregID-ul companiei.
logo_pathșir sau nullSe adaugă la https://img.amodb.dev/t/p/{size}.
nameșirNumele companiei.
origin_countryșirCod ISO 3166-1 precum US. Poate fi gol.
parent_companynullMereu null. amodb nu completează compania-mamă.

Exemplu de răspuns

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

Aceeași structură revine pentru fiecare ID de companie, de exemplu /3/company/1 pentru Lucasfilm.

Obține detaliile unei rețele

GET /3/network/{network_id} întoarce o rețea TV: nume, țară de origine, calea logoului, headquarters și homepage. Nu are description și nici parent_company. Citește un ID de rețea din array-ul networks al unui serial. Serialul /3/tv/1399 listează HBO cu ID-ul 49.

JSON
{
  "headquarters": "",
  "homepage": "",
  "id": 49,
  "logo_path": "/tuomPhY2UtuPTqqFnKMVHvSb724.png",
  "name": "HBO",
  "origin_country": "US"
}
CâmpTipObservații
headquartersșirGol la majoritatea rețelelor.
homepageșirGol la majoritatea rețelelor.
idnumăr întregID-ul rețelei.
logo_pathșir sau nullCalea fișierului de logo.
nameșirNumele rețelei.
origin_countryșirCod ISO 3166-1. Un șir gol pentru serviciile de streaming globale, precum Netflix.

Endpoint-urile din acest grup

Fiecare cale are baza https://api.amodb.dev/3 și aceeași autentificare ca celelalte endpoint-uri.

Metodă și caleÎntoarceParametri
GET /company/{company_id}Fișa companieicompany_id
GET /network/{network_id}Fișa rețeleinetwork_id
GET /search/companyListă paginată de companii cu id, name, logo_path, origin_countryquery, page

amodb nu oferă căile alternative_names sau images pentru companii și rețele. Logoul este logo_path din fișa însăși.

Logouri

Construiește adresa logoului ca https://img.amodb.dev/t/p/w185 plus logo_path. GET /3/configuration listează dimensiunile de logo: w92, w154, w185, w300, w500 și original. Pagina imagini are tabelul complet de dimensiuni. Fișierele de logo sunt în mare parte PNG, iar fișierele de imagine nu cer cheie. O companie fără logo are logo_path setat la null.

Filtrează discover după companie sau rețea

ID-urile de companii și rețele sunt cele mai utile ca filtre. Discover transformă un ID într-o listă de titluri.

FiltruFuncționează peSemnificație
with_companies/discover/movie și /discover/tvTitluri făcute de aceste companii.
with_networks/discover/tvSeriale difuzate de aceste rețele. Discover pentru filme îl ignoră.

Separă mai multe ID-uri cu virgulă ca să le ceri pe toate sau cu bară verticală (codificată %7C) ca să accepți oricare. Apelul de mai jos listează filmele unei companii, sortate după popularitate. Al doilea apel listează serialele difuzate de 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"

Rezultatele discover sunt ținute în cache la margine 30 de minute și sosesc câte 20 pe pagină. Lista completă de filtre este pe pagina descoperire.

Găsește o companie după nume

GET /3/search/company?query=lucasfilm întoarce o listă paginată. Fiecare rând are id, logo_path, name și origin_country. Rândurile nu sunt ordonate după potrivirea exactă: studioul numit Lucasfilm Ltd. are ID-ul 1 și este al treilea rând, după două nume asemănătoare. Compară name și origin_country înainte să iei un ID. Regulile interogării sunt pe pagina căutare. Nu există cale de căutare pentru rețele.

Erori

O companie sau o rețea care nu există întoarce corpul de eroare TMDB cu status_code 34. Celelalte eșecuri folosesc același corp.

HTTPstatus_codeCând
4017Cheia lipsește sau este greșită.
40236Perioada planului s-a încheiat.
40434Nu există o companie sau o rețea cu acel ID sau ID-ul nu este un număr.
40537Ai trimis o metodă de scriere.
42925Ai depășit cererile pe minut. Așteaptă numărul de secunde din Retry-After.

Vezi erori pentru lista întreagă și limite de cereri pentru antete.

Note practice

  • Stochează id-ul companiei lângă nume. Numele se schimbă, ID-urile nu.
  • Verifică dacă logo_path este null înainte să-l afișezi. Nu te baza pe homepage, headquarters sau description, pentru că sunt goale.
  • Detaliile companiilor și ale rețelelor sunt ținute în cache 6 ore la margine. Fișierele de logo de pe img.amodb.dev sunt ținute în cache 30 de zile.
  • O rețea este un concept TV. Ca să-i obții serialele, folosește with_networks pe /discover/tv, nu pe discover pentru filme.
  • Ca să găsești o companie după nume, folosește căutarea de companii de mai sus, apoi alege rândul potrivit după name și origin_country.