Краткое сравнение

amodb является независимым API, работающим по тому же протоколу, что и TMDB v3. Клиент, написанный для TMDB, читает данные из amodb после смены базового URL и ключа, если он не вызывает путь из таблицы не предлагаемых вызовов ниже. Поэтому выбор зависит от условий, дополнений и нескольких пробелов. TMDB предлагает бесплатный API для подходящего использования на своих условиях. amodb, напротив, платный API только для чтения с 14 языками, пятью дополнительными блоками данных и лимитом, который считается на ключ.

Совместимость эндпоинтов

Каждая строка показывает путь чтения TMDB v3 и его поведение на https://api.amodb.dev/3.

ОбластьПуть TMDB v3В amodb
Детали фильма/movie/{movie_id}То же, плюс пять дополнительных значений append_to_response
Детали сериала/tv/{series_id}То же, но без поля type, а created_by пусто у большинства сериалов
Сезоны и серии/tv/{series_id}/season/{season_number}Та же структура. Изображения, видео и переводы сезонов пусты, а external_ids сезонов и серий равны null
Люди/person/{person_id}То же, с combined_credits, movie_credits, tv_credits, external_ids и images (только профили)
Актеры и съемочная группа/movie/{movie_id}/creditsТо же. У серий cast пуст
Поиск/search/multiТо же, кэш 10 минут
Discover/discover/movieТо же, кэш 30 минут
В тренде/trending/{media_type}/{time_window}То же, кэш 30 минут
Списки/movie/popularТо же, page от 1 до 500
Изображения/movie/{movie_id}/imagesТа же структура, файлы загружаются с img.amodb.dev
Видео/movie/{movie_id}/videosТо же
Переводы/movie/{movie_id}/translationsТо же, поддерживается 14 языков
Ключевые слова/movie/{movie_id}/keywordsТо же
Отзывы/movie/{movie_id}/reviewsОтвечает 200, но отзывы есть лишь у нескольких тайтлов, поэтому пустой список вполне обычен
Коллекции/collection/{collection_id}То же, parts упорядочены по дате выхода
Компании и телесети/company/{company_id}Те же ключи. description компании пуст, а parent_company равен null
Жанры/genre/movie/listТо же
Конфигурация/configurationТе же ключи, хост изображений img.amodb.dev
Поиск по внешнему ID/find/{external_id}Тот же эндпоинт, плюс kinopoisk_id. tv_episode_results и tv_season_results всегда пусты
Группы серий/tv/{series_id}/episode_groupsВыводит группы сериала без их содержимого

Что amodb не предлагает

У этих вызовов TMDB v3 нет аналога. Неизвестные пути отвечают 404 со status_code 34, а методы записи отвечают 405 со status_code 37.

Вызов TMDB v3Ответ amodb
/movie/changes, /tv/changes, /person/changes и changes внутри одного ID404, status_code 34
aggregate_credits у сериала или сезона404, status_code 34
/credit/{credit_id} и /review/{review_id}404, status_code 34
/tv/episode_group/{id}404, status_code 34
/person/{person_id}/translations, tagged_images и /person/latest404, status_code 34
images, translations и alternative_names для коллекций, компаний и телесетей404, status_code 34
/configuration/timezones404, status_code 34
Все, что находится под account, authentication, guest_session и list, а также любой путь /rating или /account_states405, status_code 37

Если добавить aggregate_credits или changes в append_to_response, amodb игнорирует это имя без ошибки, поэтому ключ просто отсутствует в теле ответа.

Сравнение возможностей

ВозможностьTMDBamodb
Модель оплатыБесплатно для подходящего использования, на условиях TMDBПредоплата, от 1 до 24 месяцев за покупку
Бесплатный тарифДа, для подходящего использованияНет, пробного периода тоже нет
АутентификацияКлюч v3 в api_key или токен v4 как Bearerapi_key или Bearer с шестнадцатеричным ключом из 32 символов
Формат ответаJSONJSON, те же поля на поддерживаемых путях
ЯзыкиУточняйте в их документации14 поддерживаются, остальные теги откатываются на en
ФильмыДаДа
СериалыДаДа
ЛюдиДаДа
ИзображенияДаimg.amodb.dev, размеры от w92 до original
РейтингиОценка пользователей TMDB, другие источники: уточняйте в их документацииПять источников в одном объекте, где они известны
Методы записиМетоды аккаунта, списков и оценокНет, они отвечают 405
Лимит запросовУточняйте в их документации20, 40 или 120 в минуту на ключ
Коммерческое использованиеУсловия коммерческого использования и указания авторства смотрите у нихПлатные тарифы, см. цены
СовместимостьОпределяет TMDB v3Большинство путей чтения TMDB v3 и маршрут OMDb

Подробные отличия

  • Условия. TMDB просит изучить его условия коммерческого использования и указания авторства. amodb продается по предоплаченным периодам, без автоматического продления, без бесплатного тарифа и без пробного периода.
  • Языки. amodb поддерживает en, ru, uk, be, zh, pt, bg, he, cs, ro, fr, pl, it и es. Он принимает теги TMDB, например ru-RU и pt-BR. Немецкий, японский и корейский откатываются на en, а original_title сохраняет исходное название. Охват языков TMDB уточняйте в их документации. См. языки.
  • Расширения. append_to_response принимает также moods, soundtracks, ratings, wikidata и showtimes, и у каждого есть собственный путь для фильмов и сериалов.
  • Внешние ID. /3/find разрешает imdb_id, tvdb_id, wikidata_id, kinopoisk_id, facebook_id, twitter_id и instagram_id. Источники freebase_mid, freebase_id, tvrage_id, tiktok_id и youtube_id принимаются, но возвращают пустые массивы. Отсутствующий или неизвестный external_source отвечает 400 со status_code 22.
  • Пусто по замыслу. Изображения, видео и переводы сезонов, а также description компании всегда пусты. Отзывы и created_by у сериала заполнены лишь для нескольких тайтлов. external_ids сезонов и серий везде равны null.
  • Контент для взрослых. include_adult игнорируется. Тайтлы и люди для взрослых никогда не отдаются и отвечают 404.
  • Изображения. Путь CDN: https://img.amodb.dev/t/p/{size}/{file}. Ключ не нужен, файлы кэшируются на 30 дней.
  • Лимиты. Окно скользящее, 60 секунд на ключ. Заголовки показывают остаток, а попадания в кэш тоже засчитываются, потому что проверка лимита выполняется первой.
  • Независимость. Каталог собирается из публичных и открытых источников и нашего собственного обогащения. Общая структура не гарантирует одинаковых значений каждого поля у каждого тайтла.

Когда TMDB подходит лучше

  • Бесплатное подходящее использование. Платить не нужно, и amodb здесь не сможет сравниться.
  • Запись. Оценка тайтла, создание списка и сессии аккаунта работают в TMDB. В amodb они возвращают 405.
  • Ленты changes. TMDB перечисляет ID, которые изменились. В amodb такой ленты нет, поэтому обновление идет по вашему расписанию.
  • Aggregate credits и поиск по credit. Оба отвечают 404 в amodb. Используйте /credits у тайтла.
  • Потребность в других языках. Если вашему интерфейсу нужен язык вне этих 14, сначала проверьте TMDB.
  • Уже полученное одобрение. Команде, которая согласовала TMDB с юристами, стоит учесть цену второго согласования.

Миграция на amodb

Изменение сводится к одной строке на запрос.

Shell
# before: TMDB_BASE is your current TMDB v3 base URL
curl -s "$TMDB_BASE/movie/550?api_key=$TMDB_KEY"

# after
curl -s "https://api.amodb.dev/3/movie/550?api_key=$AMODB_KEY"

Перед переключением сравните структуру нескольких ответов бок о бок. Этот скрипт печатает ключи верхнего уровня, которые возвращает одна сторона и не возвращает другая.

JavaScript
async function topLevelKeys(base, key, path) {
  const res = await fetch(`${base}${path}?api_key=${key}`);
  if (!res.ok) throw new Error(`${path} returned ${res.status}`);
  return Object.keys(await res.json()).sort();
}

for (const path of ['/movie/550', '/tv/1396', '/person/31']) {
  const current = await topLevelKeys(process.env.TMDB_BASE, process.env.TMDB_KEY, path);
  const next = await topLevelKeys('https://api.amodb.dev/3', process.env.AMODB_KEY, path);
  const missing = current.filter((k) => !next.includes(k));
  console.log(path, missing.length ? `missing: ${missing.join(', ')}` : 'same keys');
}

Необязательные поля у конкретного тайтла могут отличаться, поэтому воспринимайте отсутствующий ключ как повод проверить, а не как приговор. Затем пройдите по этому списку:

  1. Выберите тариф на странице цены, затем создайте ключ в личном кабинете.
  2. Вынесите базовый URL и ключ в конфигурацию.
  3. Читайте images.secure_base_url из /3/configuration.
  4. Найдите в коде вызовы записи и пути из таблицы не предлагаемых. Вызовы записи оставьте в TMDB, остальное замените.
  5. Добавьте обработчик 429, который ждет Retry-After секунд. См. лимиты запросов и ошибки.

Цены

amodb работает по предоплате. Выберите 1, 3, 6, 12 или 24 месяца со скидкой 0, 10, 20, 30 или 40 процентов и один из трех тарифов на 20, 40 или 120 запросов в минуту. Любой тариф возвращает все данные, и ни один не продлевается сам. Суммы указаны на странице цены.