Компанії та телемережі

Ендпоінти компаній і мереж повертають за 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_keyqueryодне з двох
    Ваш ключ. Використовуйте його або заголовок Authorization: Bearer.

Поля відповіді

ПолеТипПримітки
descriptionstringЗавжди порожній рядок.
headquartersstringМісто або регіон. У більшості компаній порожній.
homepagestringАдреса сайту. У більшості компаній порожня.
idintegerid компанії.
logo_pathstring або nullДодайте до https://img.amodb.dev/t/p/{size}.
namestringНазва компанії.
origin_countrystringКод 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"
}
ПолеТипПримітки
headquartersstringУ більшості мереж порожній.
homepagestringУ більшості мереж порожня.
idintegerid мережі.
logo_pathstring або nullШлях до файлу логотипа.
namestringНазва мережі.
origin_countrystringКод 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 кешуються на рівні CDN на 30 хвилин і приходять по 20 на сторінку. Повний список фільтрів є на сторінці discover.

Пошук компанії за назвою

GET /3/search/company?query=lucasfilm повертає посторінковий список. Кожен рядок має id, logo_path, name та origin_country. Рядки не впорядковані за точним збігом: студія Lucasfilm Ltd. має id 1 і стоїть третьою, після двох схожих назв. Перш ніж брати id, порівняйте name та origin_country. Правила запитів описано на сторінці пошук. Шляху для пошуку мереж немає.

Помилки

Неіснуюча компанія чи мережа повертає тіло помилки TMDB зі status_code 34. Інші збої мають те саме тіло.

HTTPstatus_codeКоли
4017Ключ відсутній або неправильний.
40236Термін дії тарифу закінчився.
40434Немає компанії чи мережі з таким id, або id не є числом.
40537Ви надіслали метод запису.
42925Перевищено ліміт запитів на хвилину. Зачекайте стільки секунд, скільки вказано в Retry-After.

Повний список дивіться на сторінці помилки, а заголовки на сторінці ліміти запитів.

Практичні поради

  • Зберігайте id компанії поруч із назвою. Назви змінюються, id ні.
  • Перед відображенням перевіряйте, що logo_path не дорівнює null. Не покладайтеся на homepage, headquarters чи description, бо вони порожні.
  • Деталі компаній і мереж кешуються на рівні CDN на 6 годин. Файли логотипів на img.amodb.dev кешуються на 30 днів.
  • Мережа це поняття телебачення. Щоб отримати її серіали, використовуйте with_networks у /discover/tv, а не в discover для фільмів.
  • Щоб знайти компанію за назвою, скористайтеся пошуком компаній вище, а потім виберіть потрібний рядок за name та origin_country.