API за сериали със статус, сезони и следващ епизод
GET /3/tv/{series_id} връща сериал с неговите status, networks, списък seasons, last_episode_to_air и next_episode_to_air. Ендпойнтите за сезон и епизод добавят дати на излъчване, продължителност и кадри. amodb е независимо API, което работи по протокола на TMDB v3, така че клиент, написан за TMDB, работи, след като смените базовия URL на https:/.
Какво получавате:
- Записи за сериали с брой сезони и епизоди, плюс дати на първото и последното излъчване.
- Низ
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 / | episodes, air_date, poster_path |
| Един епизод | GET / | name, overview, runtime, still_path, air_date |
| Мрежа | GET / | name, headquarters, origin_country |
Пълните списъци с полета са на страниците сериали и сезони и епизоди.
Започнете в 3 стъпки
- Отворете цени и изберете плана със скоростта на заявките, която ви трябва: 20, 40 или 120 в минута.
- Създайте API ключ в личния си профил.
- Изпратете
GET /3/tv/{series_id}сAuthorization: Bearer YOUR_или добаветеAPI_ KEY api_keyкато параметър на заявката.
Пример със заявка
Скриптът чете Breaking Bad (id на сериала 1396), отпечатва статуса му и следващия епизод, после изброява сезон 1. Запазете го като check.mjs и го стартирайте с Node 18 или по-нов.
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 е на иврит.
{
"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 / | Запис на сезон с масив episodes | language, 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 на сериал и малка дневна задача.
- Запазете
idна сериала, когато потребител започне да го следи. - Веднъж дневно викайте
/3/tv/{series_id}за всяко следено id и пазетеstatus,next_episode_to_airиlast_air_date. - Когато
next_episode_to_airе обект, показвайтеair_dateкато дата. Тя не носи час от денонощието и часова зона, затова не броете обратно до минутата. - Когато е null, а
statusе Returning Series, показвайте „новият сезон не е насрочен“. - Викайте сезона само когато потребител отвори сериала, защото е най-големият отговор.
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 заявки в минута. Вижте цени, създайте ключ и първото ви извикване за сериал струва една заявка.