Какой 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 |
Попадания в кэш тоже считаются. Проверка ключа и лимит запросов выполняются раньше кэша на границе сети, поэтому повторный запрос все равно тратит один из ваших запросов в минуту. Планируйте общее число запросов, а не только промахи кэша.
Сравнение возможностей
| Функция | TMDB | amodb |
|---|---|---|
| Модель оплаты | Бесплатный API для подходящих случаев по собственным условиям | Предоплата на периоды 1, 3, 6, 12 или 24 месяца |
| Бесплатный тариф | Да, для подходящих случаев | Нет, пробного периода тоже нет |
| Аутентификация | Ключ v3 в api_key или токен v4 как Bearer | api_key или Bearer, ключ из 32 шестнадцатеричных символов |
| Формат ответа | JSON | JSON в формате 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:/отвечает на вызовы в стиле OMDb с параметром/ api.amodb.dev/ 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
- Выберите тариф на странице цены и создайте ключ в панели аккаунта.
- Замените базовый URL и ключ в одном месте, как показано ниже.
- Прочитайте
images.secure_base_urlиз/3/configuration, чтобы ссылки на изображения вели наimg.amodb.dev. - Уберите вызовы методов записи и путей из таблицы выше.
- Обрабатывайте 429, выжидая
Retry-Afterсекунд.
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, переписывать не нужно.
| HTTP | status_code | Типичная причина |
|---|---|---|
| 401 | 7 | Ключ отсутствует или набран с ошибкой |
| 401 | 10 | Ключ приостановлен |
| 402 | 36 | Оплаченный период закончился |
| 404 | 34 | ID не найден или путь, который amodb не поддерживает |
| 405 | 37 | Метод записи, который ваш код все еще вызывает |
| 429 | 25 | Больше запросов, чем разрешает тариф за 60 секунд |
Считайте 402 сигналом продлить доступ вручную, потому что ничего не продлевается автоматически. Полный список есть на странице ошибки.
Цены
amodb работает по предоплате. Выберите период 1, 3, 6, 12 или 24 месяца, что дает скидку 0, 10, 20, 30 или 40 процентов, и один из трех тарифов на 20, 40 или 120 запросов в минуту. Любой тариф дает все данные, и ничего не продлевается автоматически. Бесплатного тарифа и пробного периода нет. Актуальные суммы указаны на странице цены.