Files
epg/sites/tv.mail.ru/tv.mail.ru.config.js
T

71 lines
1.7 KiB
JavaScript
Raw Normal View History

2023-06-07 03:37:48 +03:00
const { DateTime } = require('luxon')
2021-09-24 12:04:16 +03:00
module.exports = {
site: 'tv.mail.ru',
2023-01-10 12:40:01 +03:00
days: 2,
2021-09-24 12:04:16 +03:00
url({ channel, date }) {
return `https://tv.mail.ru/ajax/channel/?region_id=70&channel_id=${
channel.site_id
}&date=${date.format('YYYY-MM-DD')}`
},
parser({ content, date }) {
const programs = []
const items = parseItems(content)
items.forEach(item => {
2021-11-25 00:36:49 +03:00
const prev = programs[programs.length - 1]
2021-09-24 12:04:16 +03:00
let start = parseStart(item, date)
2021-11-25 00:36:49 +03:00
if (prev) {
2023-06-07 03:37:48 +03:00
if (start < prev.start) {
start = start.plus({ days: 1 })
2021-11-25 00:36:49 +03:00
date = date.add(1, 'd')
}
prev.stop = start
2021-09-24 12:04:16 +03:00
}
2023-06-07 03:37:48 +03:00
const stop = start.plus({ hours: 1 })
2021-09-24 12:04:16 +03:00
programs.push({
2021-11-25 00:36:49 +03:00
title: item.name,
category: parseCategory(item),
2021-09-24 12:04:16 +03:00
start,
stop
})
})
return programs
}
}
function parseStart(item, date) {
2021-11-25 00:36:49 +03:00
const dateString = `${date.format('YYYY-MM-DD')} ${item.start}`
2021-09-24 12:04:16 +03:00
2023-06-07 03:37:48 +03:00
return DateTime.fromFormat(dateString, 'yyyy-MM-dd HH:mm', { zone: 'Europe/Moscow' }).toUTC()
2021-09-24 12:04:16 +03:00
}
function parseCategory(item) {
const categories = {
1: 'Фильм',
2: 'Сериал',
6: 'Документальное',
2021-11-25 00:36:49 +03:00
7: 'Телемагазин',
2021-09-24 12:04:16 +03:00
8: 'Позновательное',
10: 'Другое',
14: 'ТВ-шоу',
16: 'Досуг,Хобби',
17: 'Ток-шоу',
18: 'Юмористическое',
2021-11-25 00:36:49 +03:00
23: 'Музыка',
2021-09-24 12:04:16 +03:00
24: 'Развлекательное',
25: 'Игровое',
26: 'Новости'
}
2021-11-25 00:36:49 +03:00
return categories[item.category_id]
2021-09-24 12:04:16 +03:00
}
function parseItems(content) {
const json = JSON.parse(content)
2021-11-25 00:36:49 +03:00
if (!Array.isArray(json.schedule) || !json.schedule[0]) return []
const event = json.schedule[0].event || []
2021-09-24 12:04:16 +03:00
return [...event.past, ...event.current]
}