Что подойдет для проекта про сериалы

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

Как данные о сериалах соответствуют друг другу

Понятия совпадают, а названия различаются. Таблица охватывает то, что обычно читает приложение о сериалах.

ЗадачаПодход TheTVDBВызов amodb
Один сериалЗапись сериала по TVDB IDGET /3/tv/1396 после поиска по tvdb_id
Список сезоновСм. их документациюМассив seasons в сведениях о сериале
Один сезон с сериямиСм. их документациюGET /3/tv/1396/season/1
Одна серияСм. их документациюGET /3/tv/1396/season/1/episode/1
Какие порядки существуютЭфирный, DVD и абсолютный порядкиGET /3/tv/1396/episode_groups
Серии внутри одного порядкаСм. их документациюНе поддерживается, /3/tv/episode_group/{id} отвечает 404
Следующая серия в эфиреСм. их документациюnext_episode_to_air в сведениях о сериале

Поля серии используют имена TMDB: air_date, episode_number, season_number, runtime и still_path. Поля external_ids у сезонов и серий всегда равны null, поэтому TVDB ID отдельного сезона или серии из amodb прочитать нельзя. Связывайте записи по season_number и episode_number. Подробности на странице сезоны и серии.

Что возвращает список групп серий

Вызов списка показывает, какие порядки существуют для сериала. Серии внутри них он не возвращает.

ПолеЗначение
idID группы, строка
nameНазвание порядка, например DVD / PVOD
descriptionТекст из источника, часто пустой
typeЧисло, которое показывает вид порядка
episode_countЧисло серий в порядке
group_countЧисло блоков в порядке, например сезонов
networkОбъект с телесетью или null

Вот настоящий ответ для Breaking Bad.

JSON
{
  "id": 1396,
  "results": [
    {
      "description": "Seasons grouped as they appear on DVD, as well as paid video-on-demand services, such as Prime Video and YouTube.",
      "episode_count": 62,
      "group_count": 6,
      "id": "69f50757054263b7bc87e32a",
      "name": "DVD / PVOD",
      "network": null,
      "type": 3
    }
  ]
}

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

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

ФункцияTheTVDBamodb
Модель оплатыМодель ключа API, лицензирование см. в их документацииПредоплата на периоды от 1 до 24 месяцев
Бесплатный тарифСм. их документациюНет, пробного периода тоже нет
АутентификацияКлюч API, порядок см. в их документацииapi_key или заголовок Bearer
Формат ответаJSON, см. их документациюJSON в формате TMDB v3
ЯзыкиСм. их документацию14 языков интерфейса
ФильмыСм. их документациюДа
СериалыДа, это основной профильДа, с сезонами и сериями
ЛюдиСм. их документациюДа
ИзображенияСм. их документациюimg.amodb.dev, ключ не нужен
РейтингиСм. их документациюIMDb и еще четыре источника, где есть данные
Лимит запросовСм. их документацию20, 40 или 120 в минуту на ключ
Коммерческое использованиеЛицензирование см. в их документацииПлатные тарифы, см. цены
СовместимостьСобственный APIЧтение TMDB v3 и OMDb

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

  • Один ключ на весь каталог. Сериал, его актерский состав, трейлеры и фильм с тем же актером используют один базовый URL и один лимит.
  • Рейтинги рядом с гидом по сериям. Параметр append_to_response=ratings в сведениях о сериале добавляет оценки IMDb и других источников за один запрос.
  • Понятные заголовки для контроля темпа. X-RateLimit-Remaining и X-RateLimit-Reset показывают задаче синхронизации, сколько запросов осталось в окне 60 секунд.
  • Оригинальные названия сохраняются. У сериала остается original_name, а name следует вашему language, что удобно, когда нужно показать название на родном языке.

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

  • Порядок серий и есть продукт. Если ваши пользователи спорят о DVD-порядке, эфирном и абсолютном, TheTVDB считает это ядром своей модели. amodb называет порядки шоу, но не возвращает их серии, а набор групп зависит от шоу.
  • Готовые интеграции. Если ваш конвейер уже хранит ID TheTVDB и читает его порядки, оставьте эту часть и добавьте amodb для дополнительных данных.
  • Фокус на сериалах. Если вы никогда не показываете фильмы и людей, источник, построенный вокруг сериалов, проще освоить.

Миграция на amodb

Сопоставьте сохраненные TVDB ID один раз. После этого используйте ID amodb для каждого вызова. Эндпоинт find разрешает только ID сериалов. Его массивы tv_season_results и tv_episode_results всегда пусты, поэтому сезоны и серии сопоставляйте по номеру.

JavaScript
const key = process.env.AMODB_KEY;
const headers = { Authorization: `Bearer ${key}` };
const base = 'https://api.amodb.dev/3';

async function getJson(path) {
  const res = await fetch(`${base}${path}`, { headers });
  if (!res.ok) throw new Error(`${path} returned ${res.status}`);
  return res.json();
}

const found = await getJson('/find/81189?external_source=tvdb_id');
const show = found.tv_results[0];
console.log(show.id, show.name);

const groups = await getJson(`/tv/${show.id}/episode_groups`);
for (const g of groups.results) {
  console.log(g.name, g.type, g.episode_count);
}

Первый запрос возвращает Breaking Bad с id 1396. Второй перечисляет существующие порядки этого шоу вместе с их размерами. Чтобы сравнить нумерацию с той, что вы храните сейчас, читайте эфирный порядок из /tv/{id}/season/{n}, а любой альтернативный порядок оставьте на стороне TheTVDB. Проведите такую проверку на десяти самых популярных шоу, прежде чем переносить остальные.

Каждый вызов считается одним запросом в окне 60 секунд, а ответ 429 содержит Retry-After. См. поиск по внешнему ID и лимиты запросов.

Цены

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