API за сериали със статус, сезони и следващ епизод

GET /3/tv/{series_id} връща сериал с неговите status, networks, списък seasons, last_episode_to_air и next_episode_to_air. Ендпойнтите за сезон и епизод добавят дати на излъчване, продължителност и кадри. amodb е независимо API, което работи по протокола на TMDB v3, така че клиент, написан за TMDB, работи, след като смените базовия URL на https://api.amodb.dev/3.

Какво получавате:

  • Записи за сериали с брой сезони и епизоди, плюс дати на първото и последното излъчване.
  • Низ status и флаг in_production.
  • Мрежи с id, лога и държава на произход.
  • Едно извикване на сезон, което връща всеки епизод на този сезон.
  • Списъци със сериали, които се излъчват днес или в следващите 7 дни.

Какви данни получавате

От какво имате нуждаИзвикванеКлючови полета
Запис на сериалGET /3/tv/{series_id}name, original_name, status, in_production, number_of_seasons, number_of_episodes
Следващ и последен епизодсъщото извикванеnext_episode_to_air, last_episode_to_air
Един сезонGET /3/tv/{series_id}/season/{season_number}episodes, air_date, poster_path
Един епизодGET /3/tv/{series_id}/season/{season_number}/episode/{episode_number}name, overview, runtime, still_path, air_date
МрежаGET /3/network/{network_id}name, headquarters, origin_country

Пълните списъци с полета са на страниците сериали и сезони и епизоди.

Започнете в 3 стъпки

  1. Отворете цени и изберете плана със скоростта на заявките, която ви трябва: 20, 40 или 120 в минута.
  2. Създайте API ключ в личния си профил.
  3. Изпратете GET /3/tv/{series_id} с Authorization: Bearer YOUR_API_KEY или добавете api_key като параметър на заявката.

Пример със заявка

Скриптът чете Breaking Bad (id на сериала 1396), отпечатва статуса му и следващия епизод, после изброява сезон 1. Запазете го като check.mjs и го стартирайте с Node 18 или по-нов.

bashjs
curl -s "https://api.amodb.dev/3/tv/1396?language=en-US&append_to_response=ratings" \
  -H "Authorization: Bearer $AMODB_KEY"

curl -s "https://api.amodb.dev/3/tv/1396/season/1?language=en-US" \
  -H "Authorization: Bearer $AMODB_KEY"
const base = 'https://api.amodb.dev/3';
const headers = { Authorization: `Bearer ${process.env.AMODB_KEY}` };

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

const show = await get('/tv/1396?language=en-US');
const next = show.next_episode_to_air;
console.log(`${show.name}: ${show.status}, ${show.number_of_seasons} seasons`);
console.log(next
  ? `Next: S${next.season_number}E${next.episode_number} on ${next.air_date}`
  : 'No upcoming episode is scheduled');

const season = await get('/tv/1396/season/1?language=en-US');
for (const ep of season.episodes) {
  console.log(`E${ep.episode_number} ${ep.air_date} ${ep.name}`);
}

Съкратен отговор за сериал при language=en-US. Запазени са само някои полета, а seasons показва първите 2 от 6 записа. Някои имена в тези данни не следват language: името на сезон 0 е на китайски, а name в last_episode_to_air е на иврит.

JSON
{
  "first_air_date": "2008-01-20",
  "id": 1396,
  "in_production": false,
  "last_air_date": "2013-09-29",
  "last_episode_to_air": {
    "air_date": "2013-09-29",
    "episode_number": 16,
    "episode_type": "standard",
    "id": 62161,
    "name": "פלינה",
    "overview": "הסדרה זוכת הפרסים מגיעה לסיום דרמתי בפרק החותם אותה.",
    "production_code": "",
    "runtime": 56,
    "season_number": 5,
    "show_id": 1396,
    "still_path": "/pA0YwyhvdDXP3BEGL2grrIhq8aM.jpg",
    "vote_average": 0,
    "vote_count": 0
  },
  "name": "Breaking Bad",
  "next_episode_to_air": null,
  "number_of_episodes": 62,
  "number_of_seasons": 5,
  "original_name": "Breaking Bad",
  "seasons": [
    {
      "air_date": "2009-02-17",
      "episode_count": 9,
      "id": 3577,
      "name": "特别篇",
      "overview": "",
      "poster_path": "/ikBSCmgG5Z4jequUUAjKpf1QG3T.jpg",
      "season_number": 0,
      "vote_average": 0
    },
    {
      "air_date": "2008-01-20",
      "episode_count": 7,
      "id": 3572,
      "name": "Season 1",
      "overview": "High school chemistry teacher Walter White's life is suddenly transformed by a dire medical diagn...",
      "poster_path": "/91EIXdWxmp2mHNRsSuDW3WyDJLj.jpg",
      "season_number": 1,
      "vote_average": 0
    }
  ],
  "status": "Ended"
}

Как да четете статуса и следващия епизод

Низът status ви казва как да обозначите сериала. next_episode_to_air е обект само докато има насрочен епизод, така че между сезоните е null, както и след края. Проверете status, преди да покажете „приключил“.

statusЗначениеКакво да покажете
Returning SeriesОчакват се още епизодиСледващата дата на излъчване, ако обектът съществува, иначе „продължава“
In ProductionСнима се, още не е в ефира„В производство“
PlannedСамо обявен„Планиран“
PilotСъществува само пилот„Пилот“
EndedИзлъчването е приключило„Приключил“ и last_air_date
CanceledСпрян преди планирания край„Спрян“

Полета в next_episode_to_air и last_episode_to_air: air_date, season_number, episode_number, episode_type, id, show_id, name, overview, runtime и still_path. Низът status може да е празен и при няколко заглавия, затова дръжте готов неутрален етикет.

Детайлите се кешират на edge за 6 часа, така че искането на същия сериал повече от четири пъти на ден връща същото тяло. Проверявайте следваните сериали веднъж или два пъти на ден и обновявайте този, който потребителят отвори.

Сезони, епизоди и какво е в ефира

Сезон 0, когато сериалът има такъв, съдържа специалните епизоди. Обикновените сезони започват от 1.

ИзвикванеКакво връщаПараметри
GET /3/tv/{series_id}/season/{season_number}Запис на сезон с масив episodeslanguage, append_to_response
GET /3/tv/airing_todayСериали с епизод в ефира днесpage, language
GET /3/tv/on_the_airСериали в ефира през следващата седмицаpage, language
GET /3/discover/tvСериали, филтрирани по мрежа, статус и другиwith_networks, with_status, sort_by, page

Списъците и резултатите от discover се кешират за 30 минути, така че една заявка на половин час стига за значка „скоро в ефира“. Съпоставете върнатите id със сериалите, които следят потребителите ви. Детайлите за сезони и епизоди са на страницата справочник по епизоди.

Списък за следене с обратно броене

Екран „сериали, които следя“ иска по едно запазено id на сериал и малка дневна задача.

  1. Запазете id на сериала, когато потребител започне да го следи.
  2. Веднъж дневно викайте /3/tv/{series_id} за всяко следено id и пазете status, next_episode_to_air и last_air_date.
  3. Когато next_episode_to_air е обект, показвайте air_date като дата. Тя не носи час от денонощието и часова зона, затова не броете обратно до минутата.
  4. Когато е null, а status е Returning Series, показвайте „новият сезон не е насрочен“.
  5. Викайте сезона само когато потребител отвори сериала, защото е най-големият отговор.

404 със status_code 34 означава, че id е непознато, а 429 означава, че сте надхвърлили заявките в минута: изчакайте Retry-After секунди. При 200 следени сериала един дневен преглед са 200 заявки, около десет минути при 20 заявки в минута. Вижте лимити на заявките и грешки.

Как се сравнява

ВъзможностСами да обработвате странициAPI за метаданни с безплатен планamodb
Структура на сезони и епизодиВъзстановява се от оформлението на странициРазлично, вижте документациятаИзвикване за сезон с масив episodes
Дата на следващото излъчванеРазчита се от страница с програмаРазлично, вижте документациятаnext_episode_to_air, null, когато нищо не е насрочено
Статус на сериалаСвободен текст на страницаРазлично, вижте документациятаНиз status и флаг in_production
Излъчвани тази седмицаОбработка на програмаРазлично, вижте документацията/3/tv/on_the_air и /3/tv/airing_today
ЕзициКаквото предлага страницатаРазлично14, избират се с language
Условия за достъпВажат условията на сайтаБезплатен план с условия за ползванеПлатен, предплатен, без безплатен план

Цени

Плащате веднъж за 1, 3, 6, 12 или 24 месеца. По-дългите периоди дават отстъпка 10, 20, 30 или 40 процента и нищо не се подновява автоматично. Всеки план получава всички данни за сериали, като единствената разлика е 20, 40 или 120 заявки в минута. Вижте цени, създайте ключ и първото ви извикване за сериал струва една заявка.