Компании и мрежи

Ендпойнтите за компании и мрежи връщат името, държавата на произход и пътя до логото на студио или телевизионна мрежа по id на GET /3/company/{company_id} и GET /3/network/{network_id}. Пътищата и JSON съвпадат с TMDB v3. Подайте id на with_companies и with_networks в discover, за да изброите заглавията им.

Обновено Отвори като Markdown

Вземане на детайли за компания

GET /3/company/{company_id} връща една продуцентска компания: име, държава на произход и път до логото. Носи също description, headquarters, homepage и parent_company, но amodb ги оставя празни. Id е id на компания в TMDB, така че вече запазените id продължават да работят.

Примерът по-долу чете първата продуцентска компания на филм 550 и после зарежда тази компания.

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

Параметри

  • company_idпътзадължителен
    Числов id на компания, например 25.
  • api_keyзаявкаедин от двата
    Вашият ключ. Ползвайте него или заглавката Authorization: Bearer.

Полета на отговора

ПолеТипБележки
descriptionнизВинаги празен низ.
headquartersнизГрад или регион. Празен при повечето компании.
homepageнизАдрес на сайта. Празен при повечето компании.
idцяло числоId на компанията.
logo_pathниз или nullДобавя се към https://img.amodb.dev/t/p/{size}.
nameнизИме на компанията.
origin_countryнизКод по ISO 3166-1, например US. Може да е празен.
parent_companynullВинаги null. amodb не попълва родителската компания.

Примерен отговор

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

Същата форма се връща за всяко id на компания, например /3/company/1 за Lucasfilm.

Вземане на детайли за мрежа

GET /3/network/{network_id} връща телевизионна мрежа: име, държава на произход, път до логото, headquarters и homepage. Няма description и parent_company. Id на мрежа четете от масива networks на сериал. Сериалът /3/tv/1399 изброява HBO с id 49.

JSON
{
  "headquarters": "",
  "homepage": "",
  "id": 49,
  "logo_path": "/tuomPhY2UtuPTqqFnKMVHvSb724.png",
  "name": "HBO",
  "origin_country": "US"
}
ПолеТипБележки
headquartersнизПразен при повечето мрежи.
homepageнизПразен при повечето мрежи.
idцяло числоId на мрежата.
logo_pathниз или nullПът до файла с логото.
nameнизИме на мрежата.
origin_countryнизКод по ISO 3166-1. Празен низ за глобални стрийминг услуги като Netflix.

Ендпойнти в тази група

Всеки път има обща основа https://api.amodb.dev/3 и същото удостоверяване като другите ендпойнти.

Метод и пътКакво връщаПараметри
GET /company/{company_id}Запис на компанияcompany_id
GET /network/{network_id}Запис на мрежаnetwork_id
GET /search/companyСтранициран списък с компании с id, name, logo_path, origin_countryquery, page

amodb не предлага пътища alternative_names и images за компании и мрежи. Логото е logo_path в самия запис.

Лога

Построете адреса на логото като https://img.amodb.dev/t/p/w185 плюс logo_path. GET /3/configuration изброява размерите на логата: w92, w154, w185, w300, w500 и original. Пълната таблица с размери е на страницата изображения. Файловете с лога са предимно PNG, а за файловете с изображения не е нужен ключ. Компания без лого има logo_path със стойност null.

Филтриране на discover по компания или мрежа

Id на компании и мрежи са най-полезни като филтри. Discover превръща id в списък със заглавия.

ФилтърКъде работиЗначение
with_companies/discover/movie и /discover/tvЗаглавия, направени от тези компании.
with_networks/discover/tvСериали, излъчени от тези мрежи. Discover за филми го игнорира.

Разделете няколко id със запетая, за да изисквате всички, или с вертикална черта (кодирана като %7C), за да приемете което и да е. Извикването по-долу изброява филми на една компания, подредени по популярност. Второто извикване изброява сериалите, излъчени от 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"

Резултатите от discover се кешират на edge за 30 минути и идват по 20 на страница. Пълният списък с филтри е на страницата откриване по филтри.

Намиране на компания по име

GET /3/search/company?query=lucasfilm връща странициран списък. Всеки ред има id, logo_path, name и origin_country. Редовете не са подредени по точно съвпадение: студиото Lucasfilm Ltd. има id 1 и е третият ред, след две сходни имена. Сравнете name и origin_country, преди да вземете id. Правилата за заявките са на страницата търсене. Няма път за търсене на мрежи.

Грешки

Компания или мрежа, която не съществува, връща тялото на грешката на TMDB със status_code 34. Другите неуспехи ползват същото тяло.

HTTPstatus_codeКога
4017Ключът липсва или е грешен.
40236Периодът на плана е изтекъл.
40434Няма компания или мрежа с това id, или id не е число.
40537Изпратили сте метод за запис.
42925Надхвърлен е лимитът на заявки в минута. Изчакайте Retry-After секунди.

Вижте грешки за целия списък и лимити на заявките за заглавките.

Практически бележки

  • Пазете id на компанията до името. Имената се променят, id не.
  • Проверявайте logo_path за null, преди да го показвате. Не разчитайте на homepage, headquarters или description, защото са празни.
  • Детайлите за компании и мрежи се кешират на edge за 6 часа. Файловете с лога на img.amodb.dev се кешират за 30 дни.
  • Мрежата е понятие за телевизия. За да вземете сериалите ѝ, ползвайте with_networks в /discover/tv, а не в discover за филми.
  • За да намерите компания по име, ползвайте търсенето на компании по-горе, после изберете правилния ред по name и origin_country.