Какой API выбрать

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

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

Признаки, что вам нужна альтернатива

Решить помогают пять проверок. Проводите их на собственном трафике и собственном договоре, а не по списку функций.

ПризнакЧто проверитьКак отвечает amodb
Коммерческие условияПрочитайте условия API, которым вы пользуетесь сейчас, о коммерческом использовании и указании источникаПлатные тарифы, предоплата, без автоматического продления
Пиковый трафикПосчитайте запросы в самую загруженную минутуФиксированный лимит 20, 40 или 120 запросов в минуту на ключ
Данные на экранПеречислите дополнительные вызовы за одной страницей названияappend_to_response принимает также ratings, moods, soundtracks, wikidata и showtimes
Язык интерфейсаПроверьте каждый язык, который вы поддерживаете14 языков, остальные откатываются на en
Цена уходаПосчитайте строки кода, где назван поставщикТе же пути и JSON на поддерживаемых эндпоинтах, поэтому уход тоже сводится к смене базового URL

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

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

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

Чем отличается amodb

  • Лимиты, которые можно прочитать. Каждый ответ с ключом содержит X-RateLimit-Limit, X-RateLimit-Remaining и X-RateLimit-Reset в секундах. Ответ 429 добавляет Retry-After. Числа объяснены на странице лимиты запросов.
  • Дополнительные блоки в одном вызове. Рейтинги из пяти источников, шкалы настроения, саундтреки, факты Wikidata и сеансы в кинотеатрах приходят через append_to_response, поэтому одной странице названия может хватить одного запроса.
  • Больше источников внешних ID. /3/find разрешает imdb_id, tvdb_id, wikidata_id и kinopoisk_id, а также facebook_id, twitter_id и instagram_id. См. поиск по внешнему ID.
  • OMDb с тем же ключом. https://api.amodb.dev/omdb/ отвечает на вызовы в стиле OMDb с параметром apikey, что удобно, когда две ваши системы используют разные протоколы.
  • Известное время кэширования. Сведения и актерский состав хранятся на границе сети 6 часов, тренды и discover 30 минут, поиск 10 минут, конфигурация 24 часа, изображения 30 дней.

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

  • Бесплатные проекты. Если ваш случай подпадает под бесплатные условия, TMDB не стоит ничего, и amodb с этим не сравнится.
  • Методы записи пользователей. TMDB предлагает методы записи для аккаунтов, сессий, оценок и списков. amodb отвечает на них 405 и status_code 37, поэтому приложению, где люди входят и оценивают фильмы, стоит оставить TMDB для этой части.
  • Ленты изменений. TMDB перечисляет ID, которые изменились. В amodb такой ленты нет, поэтому вы обновляете данные по собственному расписанию.
  • Языки сверх 14. amodb не отдает интерфейсный текст на немецком, японском и корейском и откатывается на английский. Оригинальные названия по-прежнему приходят в original_title и original_name. О других языках в TMDB см. их документацию.
  • Условия, которые вы уже приняли. Если юридическая проверка TMDB пройдена, переход потребует еще одной.

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

Сверьте свой код с этим списком до переключения. Полная таблица находится на странице amodb и TMDB.

Вызов TMDBОтвет amodb
Запись в аккаунты, сессии, оценки и списки405, status_code 37
Изменения, агрегированные актерские составы, поиск по credit и отзывам, содержимое групп серий404, status_code 34
Переводы людей, изображения и переводы коллекций, компаний и телесетей404, status_code 34
Список отзывов о фильме или сериале200, для большинства названий пуст
Изображения, видео и переводы сезонов200, пусто
Внешние ID сезонов и серий200, все равны null

Два поведения срабатывают молча. Имя в append_to_response, которое amodb не знает, например aggregate_credits, игнорируется без ошибки. Параметр include_adult тоже игнорируется, потому что фильмы и люди для взрослых никогда не отдаются.

Миграция на amodb

  1. Выберите тариф на странице цены и создайте ключ в панели аккаунта.
  2. Замените базовый URL и ключ в одном месте, как показано ниже.
  3. Прочитайте images.secure_base_url из /3/configuration, чтобы ссылки на изображения вели на img.amodb.dev.
  4. Уберите вызовы методов записи и путей из таблицы выше.
  5. Обрабатывайте 429, выжидая Retry-After секунд.
JavaScript
const config = {
  // before: baseUrl held your current TMDB v3 base URL
  baseUrl: 'https://api.amodb.dev/3',
  apiKey: process.env.AMODB_KEY,
};

const res = await fetch(`${config.baseUrl}/movie/550?language=en-US`, {
  headers: { Authorization: `Bearer ${config.apiKey}` },
});
if (!res.ok) throw new Error(`request failed with status ${res.status}`);
const movie = await res.json();
console.log(movie.title, movie.release_date);

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

Обработка ошибок переносится без изменений

Неудачные вызовы возвращают тело TMDB {"success": false, "status_code": N, "status_message": "..."}, поэтому код, который ветвится по status_code, переписывать не нужно.

HTTPstatus_codeТипичная причина
4017Ключ отсутствует или набран с ошибкой
40110Ключ приостановлен
40236Оплаченный период закончился
40434ID не найден или путь, который amodb не поддерживает
40537Метод записи, который ваш код все еще вызывает
42925Больше запросов, чем разрешает тариф за 60 секунд

Считайте 402 сигналом продлить доступ вручную, потому что ничего не продлевается автоматически. Полный список есть на странице ошибки.

Цены

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