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, а
statusReturning 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 запытаў у хвіліну. Гл. цэны, стварыце ключ, і ваш першы выклік серыяла каштуе адзін запыт.