Компании и мрежи
Ендпойнтите за компании и мрежи връщат името, държавата на произход и пътя до логото на студио или телевизионна мрежа по 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. |
Ендпойнти в тази група
Всеки път има обща основа 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 се кешират на edge за 30 минути и идват по 20 на страница. Пълният списък с филтри е на страницата откриване по филтри.
Намиране на компания по име
GET / връща странициран списък. Всеки ред има id, logo_path, name и origin_country. Редовете не са подредени по точно съвпадение: студиото Lucasfilm Ltd. има id 1 и е третият ред, след две сходни имена. Сравнете name и origin_country, преди да вземете id. Правилата за заявките са на страницата търсене. Няма път за търсене на мрежи.
Грешки
Компания или мрежа, която не съществува, връща тялото на грешката на 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.