Різні завдання, різні інструменти
Trakt зосереджений на даних користувача: історії перегляду, списках перегляду, оцінках, календарях і вході через OAuth. Він також має публічні ендпоінти метаданих, а чинні ліміти вказано в його документації. У amodb одне завдання: метадані про фільми, серіали та персони у вигляді JSON у формі TMDB v3. Обирайте Trakt для того, що робили ваші користувачі. Обирайте amodb для того, чим є назва. Більшість застосунків, яким потрібне і те, і те, викликають кожен сервіс для його половини.
Дані користувача й дані про назви
| Завдання | Trakt | amodb |
|---|---|---|
| Історія перегляду | Основна функція | Не пропонується, зберігайте самі |
| Списки перегляду та списки | Основна функція | Не пропонуються, запис повертає 405 |
| Оцінки користувачів | Основна функція | Не пропонуються, запис повертає 405 |
| Календарі | Для кожного користувача, дивіться їхню документацію | next_episode_to_air для кожного шоу та списки за розкладом |
| Вхід | OAuth | Лише ключ, без входу користувача |
| Метадані назв | Публічні ендпоінти, ліміти дивіться в їхній документації | Ендпоінти деталей 14 мовами |
| Акторський склад і знімальна група | Дивіться їхню документацію | /credits для назви, combined_credits для персони |
| Зображення | Дивіться їхню документацію | img.amodb.dev, ключ не потрібен |
| Трейлери | Дивіться їхню документацію | /videos з полями type і official |
| Змінене від дати | Дивіться їхню документацію | Не пропонується, стрічок змін немає |
Для розкладів GET /3/tv/airing_today і GET /3/tv/on_the_air перелічують шоу за датою ефіру, а кожен запис серіалу несе власне next_episode_to_air. Для завершеного шоу це поле дорівнює null. Обидва списки описано на сторінці списки трендів. Календар для одного користувача ви збираєте зі своїх записів перегляду.
Порівняння можливостей
| Можливість | Trakt | amodb |
|---|---|---|
| Модель цін | Дивіться їхню документацію | Передплачені періоди від 1 до 24 місяців |
| Безкоштовний тариф | Дивіться їхню документацію | Немає, пробного періоду теж немає |
| Автентифікація | OAuth для даних користувача, про публічні виклики дивіться в їхній документації | api_key або заголовок Bearer |
| Формат відповіді | JSON, дивіться їхню документацію | JSON у формі TMDB v3 |
| Мови | Дивіться їхню документацію | 14 мов інтерфейсу |
| Фільми | Так | Так |
| Серіали | Так | Так, із сезонами та серіями |
| Персони | Дивіться їхню документацію | Так |
| Зображення | Дивіться їхню документацію | img.amodb.dev, ті самі токени розмірів, що в TMDB |
| Рейтинги | Оцінки користувачів, дивіться їхню документацію | Оцінки з IMDb, Kinopoisk, Metacritic, Rotten Tomatoes і TMDB, де вони відомі |
| Ліміт запитів | Ліміти дивіться в їхній документації | 20, 40 або 120 на хвилину на ключ |
| Комерційне використання | Дивіться їхню документацію | Платні тарифи, див. ціни |
| Сумісність | Власний API | Читання TMDB v3 та OMDb |
Чим відрізняється amodb
- Жодного екрана входу для ваших користувачів. Достатньо серверного ключа. Ніхто не підключає акаунт, тож немає токена для оновлення й екрана згоди, який треба пояснювати.
- Широкий набір полів. Тривалість, жанри, виробничі компанії, вікові рейтинги, переклади й ключові слова надходять з ендпоінтів деталей, мовою, яку ви запитуєте.
- Відкриті ліміти. Ліміт тарифу це число запитів на хвилину, а кожна відповідь показує залишок. За цими числами можна розрахувати фонову синхронізацію.
- Шкали настрою й саундтреки. Розширення на сторінках настрої та саундтреки додають дані, яких немає в TMDB v3.
Коли Trakt підходить краще
- Усе персональне. Скроблінг, синхронізація історії, соціальні списки та календарі окремих користувачів це функції Trakt. В amodb немає акаунтів і методів запису.
- Стан між пристроями. Якщо користувач очікує однакових позначок «переглянуто» на телефоні й телевізорі, стан має жити в сервісі користувачів, а amodb таким не є.
- Наявні застосунки з OAuth. Якщо ваш застосунок уже має токени Trakt, залишайте їх. Додавайте amodb лише для даних про назви, які ви зараз отримуєте з інших джерел.
Міграція на amodb: об'єднайте свої записи
Дані користувачів мігрувати не треба, бо amodb їх не зберігає. Ви замінюєте виклики метаданих. Елементи Trakt містять id для інших баз (точні поля дивіться в їхній документації), тож зберігайте id TMDB або id IMDb поруч із кожним записом перегляду та використовуйте його тут.
<?php
declare(strict_types=1);
function amodb(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");
}
return json_decode($body, true);
}
$show = amodb('/tv/1396?language=en-US');
$next = $show['next_episode_to_air'] ?? null;
echo $show['name'], ' ', $show['status'], PHP_EOL;
echo $next ? 'Next: ' . $next['air_date'] : 'No episode scheduled', PHP_EOL;Якщо у вас є лише id IMDb, один раз викличте / і збережіть id з tv_results. Відповідь 429 містить Retry-After, як описано на сторінці ліміти запитів.
Розрахунок завдання оновлення
Бібліотека користувача з 200 шоу потребує 200 запитів деталей для одного оновлення. За 20 запитів на хвилину це займає 10 хвилин, за 40 це 5, а за 120 менше 2. Перевірка ключа виконується перед edge-кешем, тож повторні виклики теж рахуються. В amodb немає стрічок змін, тому він не скаже, які id змінилися від певної дати. Натомість читайте status і next_episode_to_air з відповіді деталей. Шоу, що ще виходять, оновлюйте часто, а завершені рідко. Деталі кешуються на 6 годин, тож оновлення частіше повертає ті самі дані.
Ціни
amodb працює за передплатою й не продовжується сам. Оберіть 1, 3, 6, 12 або 24 місяці, що дають знижку 0, 10, 20, 30 або 40 відсотків, та один із трьох тарифів на 20, 40 або 120 запитів на хвилину. Кожен тариф повертає всі дані, безкоштовного тарифу немає. Суми дивіться на сторінці ціни.