Розныя задачы, розныя інструменты

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 падыходзіць лепш

  • Усё асабістае. Scrobbling, сінхранізацыя гісторыі, сацыяльныя спісы і календары для кожнага карыстальніка гэта функцыі Trakt. У amodb няма акаўнтаў і метадаў запісу.
  • Стан на розных прыладах. Калі карыстальнік чакае тыя ж пазнакі прагляду на тэлефоне і тэлевізары, стан павінен жыць у сэрвісе карыстальнікаў, а amodb ім не з’яўляецца.
  • Існуючыя праграмы з OAuth. Калі ваша праграма ўжо трымае токены Trakt, вы іх захоўваеце. Дадайце amodb толькі для даных назваў, якія цяпер бераце ў іншым месцы.

Міграцыя на amodb: злучыце свае запісы

Даныя карыстальнікаў не мігруюць, бо ў amodb іх няма. Вы замяняеце выклікі метаданых. Элементы Trakt нясуць id з іншых баз (дакладныя палі глядзіце ў іх дакументацыі), таму захоўвайце id TMDB або 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;

Калі ў вас ёсць толькі IMDb id, выклічце /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 запытаў у хвіліну. Кожны план вяртае ўсе даныя, бясплатнага тарыфа няма. Сумы ёсць на старонцы цэны.