Компанії та телемережі
Ендпоінти компаній і мереж повертають за id назву, країну походження та шлях до логотипа студії або телемережі: GET /3/company/{company_id} і GET /3/network/{network_id}. Шляхи й JSON збігаються з TMDB v3. Передайте id у with_companies та with_networks у discover, щоб отримати список їхніх проєктів.
Деталі компанії
GET / повертає одну кінокомпанію: назву, країну походження та шлях до логотипа. У відповіді є також description, headquarters, homepage і parent_company, але amodb залишає їх порожніми. Id збігається з id компанії в TMDB, тож збережені раніше id продовжують працювати.
Приклад нижче читає першу кінокомпанію фільму 550, а потім завантажує цю компанію.
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.
Поля відповіді
| Поле | Тип | Примітки |
|---|---|---|
description | string | Завжди порожній рядок. |
headquarters | string | Місто або регіон. У більшості компаній порожній. |
homepage | string | Адреса сайту. У більшості компаній порожня. |
id | integer | id компанії. |
logo_path | string або null | Додайте до https:/. |
name | string | Назва компанії. |
origin_country | string | Код ISO 3166-1, наприклад US. Може бути порожнім. |
parent_company | null | Завжди null. amodb не заповнює материнську компанію. |
Приклад відповіді
{
"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 / повертає телемережу: назву, країну походження, шлях до логотипа, headquarters і homepage. Полів description та parent_company тут немає. Id мережі читайте з масиву networks серіалу. Серіал /3/tv/1399 містить HBO з id 49.
{
"headquarters": "",
"homepage": "",
"id": 49,
"logo_path": "/tuomPhY2UtuPTqqFnKMVHvSb724.png",
"name": "HBO",
"origin_country": "US"
}| Поле | Тип | Примітки |
|---|---|---|
headquarters | string | У більшості мереж порожній. |
homepage | string | У більшості мереж порожня. |
id | integer | id мережі. |
logo_path | string або null | Шлях до файлу логотипа. |
name | string | Назва мережі. |
origin_country | string | Код ISO 3166-1. Порожній рядок для глобальних стрімінгових сервісів, таких як Netflix. |
Ендпоінти цієї групи
Усі шляхи мають спільну основу https:/ і ту саму автентифікацію, що й інші ендпоінти.
| Метод і шлях | Що повертає | Параметри |
|---|---|---|
GET / | Запис компанії | company_id |
GET / | Запис мережі | network_id |
GET /search/company | Посторінковий список компаній з id, name, logo_path, origin_country | query, page |
amodb не надає шляхів alternative_names та images для компаній і мереж. Логотип це logo_path у самому записі.
Логотипи
Складіть адресу логотипа як https:/ плюс 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 -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 / повертає посторінковий список. Кожен рядок має id, logo_path, name та origin_country. Рядки не впорядковані за точним збігом: студія Lucasfilm Ltd. має id 1 і стоїть третьою, після двох схожих назв. Перш ніж брати id, порівняйте name та origin_country. Правила запитів описано на сторінці пошук. Шляху для пошуку мереж немає.
Помилки
Неіснуюча компанія чи мережа повертає тіло помилки TMDB зі status_code 34. Інші збої мають те саме тіло.
| HTTP | status_code | Коли |
|---|---|---|
| 401 | 7 | Ключ відсутній або неправильний. |
| 402 | 36 | Термін дії тарифу закінчився. |
| 404 | 34 | Немає компанії чи мережі з таким id, або id не є числом. |
| 405 | 37 | Ви надіслали метод запису. |
| 429 | 25 | Перевищено ліміт запитів на хвилину. Зачекайте стільки секунд, скільки вказано в Retry-After. |
Повний список дивіться на сторінці помилки, а заголовки на сторінці ліміти запитів.
Практичні поради
- Зберігайте
idкомпанії поруч із назвою. Назви змінюються, id ні. - Перед відображенням перевіряйте, що
logo_pathне дорівнюєnull. Не покладайтеся наhomepage,headquartersчиdescription, бо вони порожні. - Деталі компаній і мереж кешуються на рівні CDN на 6 годин. Файли логотипів на
img.amodb.devкешуються на 30 днів. - Мережа це поняття телебачення. Щоб отримати її серіали, використовуйте
with_networksу/discover/tv, а не в discover для фільмів. - Щоб знайти компанію за назвою, скористайтеся пошуком компаній вище, а потім виберіть потрібний рядок за
nameтаorigin_country.