Różne zadania, różne narzędzia

Trakt skupia się na danych użytkownika: historii oglądania, listach do obejrzenia, ocenach, kalendarzach i logowaniu przez OAuth. Ma też publiczne endpointy metadanych, a jego dokumentacja podaje obowiązujące limity. amodb ma jedno zadanie: metadane filmów, seriali i osób, zwracane jako JSON w kształcie TMDB v3. Wybierz Trakt dla tego, co zrobili twoi użytkownicy. Wybierz amodb dla tego, czym jest tytuł. Większość aplikacji potrzebujących obu wywołuje każdą usługę po swoją połowę.

Dane użytkownika a dane tytułów

ZadanieTraktamodb
Historia oglądaniaFunkcja podstawowaNiedostępne, zapisuj ją samodzielnie
Listy i listy do obejrzeniaFunkcja podstawowaNiedostępne, zapisy zwracają 405
Oceny użytkownikówFunkcja podstawowaNiedostępne, zapisy zwracają 405
KalendarzeDla użytkownika, sprawdź ich dokumentacjęnext_episode_to_air na serial i listy według ramówki
LogowanieOAuthTylko klucz, bez logowania użytkownika
Metadane tytułówPubliczne endpointy, limity sprawdź w ich dokumentacjiEndpointy szczegółów w 14 językach
Obsada i ekipaSprawdź ich dokumentację/credits dla tytułu, combined_credits dla osoby
ObrazySprawdź ich dokumentacjęimg.amodb.dev, klucz niepotrzebny
ZwiastunySprawdź ich dokumentację/videos z type i official
Zmienione od datySprawdź ich dokumentacjęNiedostępne, kanały zmian nie istnieją

Do ramówek GET /3/tv/airing_today i GET /3/tv/on_the_air wypisują seriale według daty emisji, a każdy rekord serialu niesie własne next_episode_to_air. Dla zakończonego serialu to pole ma wartość null. Oba zestawienia opisuje strona trendy i listy. Kalendarz dla jednego użytkownika zbudujesz z własnych zapisów o oglądaniu.

Porównanie funkcji

FunkcjaTraktamodb
Model cenowySprawdź ich dokumentacjęOkresy przedpłacone od 1 do 24 miesięcy
Darmowy planSprawdź ich dokumentacjęBrak, ani wersji próbnej
UwierzytelnianieOAuth dla danych użytkownika, dla publicznych wywołań sprawdź ich dokumentacjęapi_key lub nagłówek Bearer
Format odpowiedziJSON, sprawdź ich dokumentacjęJSON w kształcie TMDB v3
JęzykiSprawdź ich dokumentację14 języków interfejsu
FilmyTakTak
SerialeTakTak, z sezonami i odcinkami
OsobySprawdź ich dokumentacjęTak
ObrazySprawdź ich dokumentacjęimg.amodb.dev, te same tokeny rozmiarów co TMDB
OcenyOceny użytkowników, sprawdź ich dokumentacjęWyniki z IMDb, Kinopoisk, Metacritic, Rotten Tomatoes i TMDB, gdy znane
Limit żądańLimity sprawdź w ich dokumentacji20, 40 lub 120 na minutę na klucz
Użycie komercyjneSprawdź ich dokumentacjęPłatne plany, zobacz cennik
ZgodnośćWłasne APIOdczyty TMDB v3 i OMDb

Czym amodb się różni

  • Brak ekranu logowania dla twoich użytkowników. Wystarczy klucz po stronie serwera. Nikt nie łączy konta, więc nie ma tokena do odświeżania ani ekranu zgody do wyjaśniania.
  • Szerokość pól. Czas trwania, gatunki, firmy produkcyjne, klasyfikacje wiekowe, tłumaczenia i słowa kluczowe pochodzą z endpointów szczegółów, w języku, o który prosisz.
  • Opublikowane limity. Limit planu to liczba na minutę, a każda odpowiedź pokazuje, ile zostało. Z tych liczb możesz dobrać rozmiar synchronizacji w tle.
  • Mierniki nastroju i ścieżki dźwiękowe. Rozszerzenia ze stron nastroje i ścieżki dźwiękowe dodają dane, które nie są częścią TMDB v3.

Kiedy Trakt pasuje lepiej

  • Wszystko osobiste. Scrobbling, synchronizacja historii, listy społecznościowe i kalendarze dla poszczególnych użytkowników to funkcje Trakt. amodb nie ma kont ani metod zapisu.
  • Stan między urządzeniami. Jeśli użytkownik oczekuje tych samych oznaczeń obejrzenia na telefonie i telewizorze, stan musi żyć w usłudze użytkownika, a amodb nią nie jest.
  • Istniejące aplikacje z OAuth. Jeśli twoja aplikacja już trzyma tokeny Trakt, zachowujesz je. Dodaj amodb tylko dla danych tytułów, które teraz pobierasz gdzie indziej.

Przejście na amodb: łączenie rekordów

Nie migrujesz danych użytkowników, bo amodb żadnych nie trzyma. Zastępujesz wywołania metadanych. Pozycje Trakt niosą ID z innych baz (dokładne pola sprawdź w ich dokumentacji), więc zapisz ID z TMDB lub z IMDb obok każdego zapisu o oglądaniu i używaj go tutaj.

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;

Gdy masz tylko ID z IMDb, wywołaj raz /3/find/tt0903747?external_source=imdb_id i zachowaj ID z tv_results. 429 zawiera Retry-After, jak opisuje strona limity żądań.

Wymiarowanie zadania odświeżania

Biblioteka użytkownika z 200 serialami wymaga 200 żądań o szczegóły na jedno odświeżenie. Przy 20 żądaniach na minutę zajmuje to 10 minut, przy 40 zajmuje 5, a przy 120 mniej niż 2. Sprawdzenie klucza działa przed cache na edge, więc powtórzone wywołania też się liczą. amodb nie ma kanałów zmian, więc nie powie, które ID zmieniły się od daty. Zamiast tego odczytaj status i next_episode_to_air z odpowiedzi szczegółów. Seriale, które nadal są emitowane, odświeżaj często, a zakończone rzadko. Szczegóły zostają w cache 6 godzin, więc odświeżanie częstsze zwraca te same dane.

Cennik

amodb jest przedpłacone i nie odnawia się samo. Wybierz 1, 3, 6, 12 lub 24 miesiące, za które jest zniżka 0, 10, 20, 30 lub 40 procent, oraz jeden z trzech planów z 20, 40 lub 120 żądaniami na minutę. Każdy plan zwraca wszystkie dane i nie ma darmowego planu. Kwoty są na stronie cennik.