Атрыманне афіцыйнага трэйлера фільма

GET /3/movie/{movie_id}/videos вяртае кожнае відэа, прывязанае да фільма. Кожны запіс мае type, прыкмету official, код мовы, часовую пазнаку published_at, а таксама site і key, якія ідэнтыфікуюць відэа. Пакіньце запісы, дзе type роўны Trailer і official роўны true, і трэйлер у вас у руках.

Вы атрымліваеце спіс запісаў відэа, якія можна ранжыраваць самім, а не струмень. Адказ называе відэа і месца, дзе яно жыве, а ваша старонка будуе прайгравальнік з site і key. Тая ж форма вяртаецца для серыялаў. Шляхі сезонаў і эпізодаў адказваюць пустым спісам.

Якія даныя вы атрымліваеце

ЭндпоінтШто вяртае
GET /3/movie/{movie_id}/videosТрэйлеры, тызеры, кліпы, фічарэты, матэрыялы за кадрам і абляпухі для фільма
GET /3/tv/{tv_id}/videosТой жа спіс для серыяла
GET /3/tv/{tv_id}/season/{season_number}/videosЗаўсёды пусты спіс results
GET /3/tv/{tv_id}/season/{season_number}/episode/{episode_number}/videosЗаўсёды пусты спіс results
GET /3/movie/{movie_id} з append_to_response=videosДэталі і відэа адным запытам

Палі кожнага відэа:

ПолеТыпПрызначэнне
typeрадокВід відэа: Trailer, Teaser, Clip, Featurette, Behind the Scenes або Bloopers, як на старонцы відэа
officialлагічнае значэннеtrue, калі відэа пазначана як афіцыйнае
iso_639_1, iso_3166_1радокКоды мовы і краіны відэа
key, siteрадокІдэнтыфікатар відэа і назва сайта, на якім яно размешчана, YouTube у кожнага відэа, якое мы бачылі
sizeцэлы лікВертыкальнае разрозненне, 1080 у кожнага відэа, якое мы бачылі
published_atрадокЧасовая пазнака ISO 8601, зручная для сартавання ад новых да старых
name, idрадокНазва відэа і яго id, які супадае са значэннем key

Пачніце за 3 крокі

  1. Абярыце план на старонцы цэны. Кожны план вяртае ўсе даныя, таму выбірайце па запытах у хвіліну.
  2. Стварыце ключ у асабістым кабінеце. Гэта 32 малыя шаснаццатковыя сімвалы.
  3. Выклічце GET /3/movie/{movie_id}/videos з ключом у api_key або ў загалоўку Authorization: Bearer.

Прыклад запыту

У прыкладзе запытваюцца відэа Inception (id 27205), ранжыруюцца ў кодзе, і друкуецца найлепшае. Ранжыраванне ставіць першымі супадзенні па мове, потым Trailer перад Teaser, потым афіцыйныя перад неафіцыйнымі, потым найноўшы published_at.

bashjs
curl -s "https://api.amodb.dev/3/movie/27205/videos" \
  -H "Authorization: Bearer $AMODB_KEY"
const BASE = 'https://api.amodb.dev/3';
const headers = { Authorization: `Bearer ${process.env.AMODB_KEY}` };
const TYPE_RANK = { Trailer: 0, Teaser: 2 };

function rank(video, lang) {
  const language = video.iso_639_1 === lang ? 0 : 10;
  const type = TYPE_RANK[video.type] ?? 4;
  return language + type + (video.official ? 0 : 1);
}

async function pickTrailer(movieId, lang = 'en') {
  const res = await fetch(`${BASE}/movie/${movieId}/videos`, { headers });
  if (!res.ok) throw new Error(`amodb returned ${res.status}`);
  const { results } = await res.json();
  results.sort(
    (a, b) => rank(a, lang) - rank(b, lang) || (b.published_at || '').localeCompare(a.published_at || ''),
  );
  return results[0] ?? null;
}

const trailer = await pickTrailer(27205, 'en');
console.log(trailer ? `${trailer.name}: ${trailer.site} ${trailer.key}` : 'no video found');

Скарочаны адказ: першыя 2 з 42 відэа. Спіс змяшчае ўсе мовы.

JSON
{
  "id": 27205,
  "results": [
    {
      "iso_639_1": "en",
      "iso_3166_1": "US",
      "name": "The Dream Sequence",
      "key": "mpj9dL7swwk",
      "site": "YouTube",
      "size": 1080,
      "type": "Clip",
      "official": true,
      "published_at": "2022-03-09T01:00:20Z",
      "id": "mpj9dL7swwk"
    },
    {
      "iso_639_1": "en",
      "iso_3166_1": "US",
      "name": "35mm Theatrical Trailer #3",
      "key": "cdx31ak4KbQ",
      "site": "YouTube",
      "size": 1080,
      "type": "Trailer",
      "official": false,
      "published_at": "2022-03-07T06:00:19Z",
      "id": "cdx31ak4KbQ"
    }
  ]
}

Як выбраць відэа для прайгравання

У назвы часта некалькі афіцыйных трэйлераў (першы анонс, фінальны мантаж) побач з тызерамі і кліпамі. Ранжыруйце іх у фіксаваным парадку, каб на месцы трэйлера ніколі не апынуліся абляпухі.

ПрыярытэтФільтрТыповае выкарыстанне
1Trailer, афіцыйны, мова супадаеВідэа для прайгравання
2Trailer, неафіцыйныРэгіянальныя або фанацкія загрузкі, калі афіцыйнага няма
3Teaser, афіцыйныКароткія ролікі да выхаду
4Clip, FeaturetteЗапасны варыянт, каб месца не было пустым
прапусціцьBehind the Scenes, BloopersПаказваць у асобным спісе дадатковых матэрыялаў

Роўныя выпадкі сартуйце па published_at. Спачатку новыя даюць апошні мантаж, спачатку старыя даюць першы анонс.

Мовы трэйлераў

Відэа пазначаюцца мовай праз iso_639_1, і ў адной назвы могуць быць трэйлеры на некалькіх мовах. У Inception 42 відэа на 9 мовах. amodb вяртае ўсе іх у адным адказе. Параметры language і include_video_language на эндпоінтах відэа не дзейнічаюць, таму мову выбірайце ў сваім кодзе.

КрокШто рабіць
1Пакіньце відэа, у якіх iso_639_1 супадае з карыстальнікам, напрыклад ru
2Калі нічога не супала, пакіньце en
3Калі нічога не супала, пакіньце астатнія

Усярэдзіне кожнага кроку ранжыруйце па тыпе і прыкмеце official, як у прыкладзе. Мовы відэа залежаць ад загрузкі, а не ад 14 моў інтэрфейсу са старонкі мовы, таму трэйлер можа быць cs або he.

Трэйлеры для серыялаў

Трэйлер серыяла знаходзіцца па /3/tv/1396/videos (Breaking Bad), дзе 9 трэйлераў. Функцыя ранжыравання вышэй працуе як ёсць, бо палі не мяняюцца. Шляхі сезонаў і эпізодаў, напрыклад /3/tv/1396/season/1/videos, адказваюць 200 з пустым спісам results, таму чытайце спіс серыяла. Поўны спіс шляхоў гл. на старонцы відэа і трэйлеры.

Стужка трэйлераў

Стужка фільмаў, што зараз у пракаце, патрабуе аднаго выкліку спісу і па адным выкліку на назву: GET /3/movie/now_playing (гл. трэнды і спісы) плюс дзесяць выклікаў відэа дае 11 запытаў на дзесяць назваў. Захоўвайце выбраны key побач з id фільма. Трэйлеры мяняюцца рэдка, таму абнаўляйце захаваны выбар раз у некалькі гадзін або пры паўторным выхадзе назвы.

Параўнанне

МагчымасцьУласны скрэйпінг старонакAPI метаданых з бясплатным тарыфамamodb
Прыкмета афіцыйнасціЗдагадвацца па загалоўку старонкіГлядзіце іх дакументацыюЛагічнае official у кожным відэа
Фільтр па тыпе відэаРазбіраць тэкстГлядзіце іх дакументацыюШэсць значэнняў type
Выбар мовыАдна лакаль на старонкуГлядзіце іх дакументацыюiso_639_1 і iso_3166_1 у кожным відэа, фільтруюцца ў вашым кодзе
Серыялы і эпізодыАсобныя старонкі для абыходуГлядзіце іх дакументацыюСерыялы выкарыстоўваюць той жа эндпоінт, спісы сезонаў і эпізодаў пустыя
ПадтрымкаЛамаецца, калі змяняецца разметкаЗалежыць ад пастаўшчыкаАдна стабільная форма JSON
УмовыРызыку нясяце выГлядзіце іх умовыПлатныя планы, гл. цэны

Цэны

Планы аплачваюцца наперад. Вы купляеце 1, 3, 6, 12 або 24 месяцы і атрымліваеце зніжку 0, 10, 20, 30 або 40 працэнтаў за доўгія перыяды. Нічога не прадаўжаецца само. Планы на 20, 40 і 120 запытаў у хвіліну абслугоўваюць кожны эндпоінт на гэтай старонцы, таму загружаная стужка трэйлераў залежыць толькі ад частаты. Бясплатнага тарыфа і пробнага перыяду няма. Параўнайце планы на старонцы цэны.