Отримайте офіційний трейлер фільму

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Здогадуватися за заголовком сторінкиДивіться їхню документаціюБулеве поле official у кожному відео
Фільтр за типом відеоРозбирати текстДивіться їхню документаціюШість значень type
Вибір мовиОдна локаль на сторінкуДивіться їхню документаціюiso_639_1 та iso_3166_1 у кожному відео, фільтрація у вашому коді
Серіали й серіїОкремі сторінки для обходуДивіться їхню документаціюСеріали використовують той самий ендпоінт, списки сезонів і серій порожні
ПідтримкаЛамається, коли змінюється розміткаЗалежить від провайдераОдна стабільна структура JSON
УмовиРизик на васДивіться їхні умовиПлатні тарифи, дивіться ціни

Ціни

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