Компании и телесети
Эндпоинты компаний и телесетей возвращают название, страну происхождения и путь к логотипу студии или телесети по 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_keyстрока запросаодин из двухВаш ключ. Используйте его или заголовокAuthorization: Bearer.
Поля ответа
| Поле | Тип | Примечания |
|---|---|---|
description | строка | Всегда пустая строка. |
headquarters | строка | Город или регион. У большинства компаний пусто. |
homepage | строка | Адрес сайта. У большинства компаний пусто. |
id | целое число | ID компании. |
logo_path | строка или null | Добавьте к https:/. |
name | строка | Название компании. |
origin_country | строка | Код 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 | строка | У большинства телесетей пусто. |
homepage | строка | У большинства телесетей пусто. |
id | целое число | ID телесети. |
logo_path | строка или null | Путь к файлу логотипа. |
name | строка | Название телесети. |
origin_country | строка | Код ISO 3166-1. Пустая строка для глобальных стриминговых сервисов, например Netflix. |
Эндпоинты этой группы
Все пути используют базовый URL 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. Полная таблица размеров есть на странице API изображений. Файлы логотипов в основном в формате 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 кэшируются на edge-серверах на 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, потому что они пустые. - Данные компаний и телесетей кэшируются на edge-серверах на 6 часов. Файлы логотипов на
img.amodb.devкэшируются на 30 дней. - Телесеть относится к телевидению. Чтобы получить ее сериалы, используйте
with_networksв/discover/tv, а не в discover для фильмов. - Чтобы найти компанию по названию, воспользуйтесь поиском компаний выше, затем выберите нужную строку по
nameиorigin_country.