Отримайте офіційний трейлер фільму
GET / повертає всі відео, прив'язані до фільму. Кожен елемент має type, прапорець official, код мови, мітку часу published_at, а також site і key, які ідентифікують відео. Залиште елементи, де type дорівнює Trailer, а official дорівнює true, і трейлер у вас є.
Ви отримуєте список відеозаписів, які можна ранжувати самостійно, а не потік. Відповідь називає відео та вказує, де воно розміщене, а ваша сторінка будує програвач із site і key. Та сама структура повертається для серіалів. Шляхи сезонів і серій відповідають порожнім списком.
Які дані ви отримуєте
| Ендпоінт | Що повертає |
|---|---|
GET / | Трейлери, тизери, кліпи, фічерети, відео про створення фільму та невдалі дублі для фільму |
GET / | Той самий список для серіалу |
GET / | Завжди порожній список results |
GET / | Завжди порожній список results |
GET / з append_ | Деталі й відео одним запитом |
Поля кожного відео:
| Поле | Тип | Призначення |
|---|---|---|
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 кроки
- Оберіть тариф на сторінці ціни. Кожен тариф повертає всі дані, тож ви обираєте за кількістю запитів на хвилину.
- Створіть ключ у кабінеті акаунта. Це 32 шістнадцяткові символи в нижньому регістрі.
- Викличте
GET /, передавши ключ в3/ movie/ {movie_ id}/ videos api_keyабо в заголовкуAuthorization: Bearer.
Приклад запиту
У прикладі запитуються відео Inception (id 27205), ранжуються в коді, і виводиться найкраще. Ранжування ставить на перше місце збіг мови, потім Trailer перед Teaser, потім офіційні перед неофіційними, потім найновіший published_at.
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 відео. Список містить усі мови.
{
"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"
}
]
}Виберіть, яке відео відтворювати
Тайтл часто має кілька офіційних трейлерів (перший анонс, фінальна версія) поруч із тизерами й кліпами. Ранжуйте їх за фіксованим порядком, щоб у слоті трейлера ніколи не опинилася добірка невдалих дублів.
| Пріоритет | Фільтр | Типове застосування |
|---|---|---|
| 1 | Trailer, офіційний, мова збігається | Відео для відтворення |
| 2 | Trailer, неофіційний | Регіональні чи фанатські завантаження, коли офіційних немає |
| 3 | Teaser, офіційний | Короткі ролики до прем'єри |
| 4 | Clip, 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 трейлерів. Функція ранжування вище працює без змін, бо поля не змінюються. Шляхи сезонів і серій, як-от /, відповідають 200 із порожнім списком results, тож читайте список серіалу. Повний перелік шляхів дивіться в розділі відео та трейлери.
Складіть стрічку трейлерів
Стрічка фільмів, що зараз у прокаті, потребує одного виклику списку й по одному виклику на тайтл: GET / (дивіться списки трендів) плюс десять викликів відео дають 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 запитів на хвилину обслуговують усі ендпоінти на цій сторінці, тож завантажена стрічка трейлерів упирається лише в частоту запитів. Безкоштовного тарифу й пробного періоду немає. Порівняйте тарифи на сторінці ціни.