Files
epg/sites/astro.com.my/astro.com.my.config.js
Aleksandr Statciuk 36b3d81400 Update astro.com.my.config.js
Caching is disabled because the server too often fails to return any response.
2022-08-29 20:19:29 +03:00

47 lines
1.1 KiB
JavaScript

const dayjs = require('dayjs')
const utc = require('dayjs/plugin/utc')
dayjs.extend(utc)
module.exports = {
site: 'astro.com.my',
url: function ({ channel }) {
return `https://contenthub-api.eco.astro.com.my/channel/${channel.site_id}.json`
},
parser: function ({ content, date }) {
const programs = []
const items = parseItems(content, date)
items.forEach(item => {
const start = dayjs.utc(item.datetimeInUtc)
const duration = parseDuration(item.duration)
const stop = start.add(duration, 's')
programs.push({
title: item.title,
start: start,
stop: stop
})
})
return programs
}
}
function parseItems(content, date) {
try {
const data = JSON.parse(content)
const schedules = data.response.schedule
return schedules[date.format('YYYY-MM-DD')] || []
} catch (e) {
return []
}
}
function parseDuration(duration) {
const match = duration.match(/(\d{2}):(\d{2}):(\d{2})/)
const hours = parseInt(match[1])
const minutes = parseInt(match[2])
const seconds = parseInt(match[3])
return hours * 3600 + minutes * 60 + seconds
}