Різні завдання, різні інструменти

Trakt зосереджений на даних користувача: історії перегляду, списках перегляду, оцінках, календарях і вході через OAuth. Він також має публічні ендпоінти метаданих, а чинні ліміти вказано в його документації. У amodb одне завдання: метадані про фільми, серіали та персони у вигляді JSON у формі TMDB v3. Обирайте Trakt для того, що робили ваші користувачі. Обирайте amodb для того, чим є назва. Більшість застосунків, яким потрібне і те, і те, викликають кожен сервіс для його половини.

Дані користувача й дані про назви

ЗавданняTraktamodb
Історія переглядуОсновна функціяНе пропонується, зберігайте самі
Списки перегляду та спискиОсновна функціяНе пропонуються, запис повертає 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. Обидва списки описано на сторінці списки трендів. Календар для одного користувача ви збираєте зі своїх записів перегляду.

Порівняння можливостей

МожливістьTraktamodb
Модель цінДивіться їхню документаціюПередплачені періоди від 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
<?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, один раз викличте /3/find/tt0903747?external_source=imdb_id і збережіть 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 запитів на хвилину. Кожен тариф повертає всі дані, безкоштовного тарифу немає. Суми дивіться на сторінці ціни.