Кампаніі і тэлеканалы

Эндпоінты кампаній і тэлеканалаў вяртаюць назву, краіну паходжання і шлях да лагатыпа студыі або тэлеканала па 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.