diff --git a/sites/derana.lk/derana.lk.config.js b/sites/derana.lk/derana.lk.config.js new file mode 100644 index 00000000..4d43be08 --- /dev/null +++ b/sites/derana.lk/derana.lk.config.js @@ -0,0 +1,48 @@ +const dayjs = require('dayjs') +const utc = require('dayjs/plugin/utc') +const customParseFormat = require('dayjs/plugin/customParseFormat') +const parseDuration = require('parse-duration').default +const timezone = require('dayjs/plugin/timezone') +const _ = require('lodash') + +dayjs.extend(customParseFormat) +dayjs.extend(utc) +dayjs.extend(timezone) + +module.exports = { + site: 'derana.lk', + url({ date }) { + return `https://derana.lk/api/schedules/${date.format('DD-MM-YYYY')}` + }, + parser({ content }) { + const programs = parseItems(content).map(item => { + const start = parseStart(item) + const duration = parseDuration(item.duration) + const stop = start.add(duration, 'ms') + + return { + title: item.dramaName, + image: item.imageUrl, + start, + stop + } + }) + + return _.sortBy(programs, p => p.start) + } +} + +function parseStart(item) { + return dayjs.tz(`${item.date} ${item.time}`, 'DD-MM-YYYY H:mm A', 'Asia/Colombo') +} + +function parseItems(content) { + try { + const data = JSON.parse(content) + if (!data || !Array.isArray(data.all_schedules)) return [] + + return data.all_schedules + } catch { + return [] + } +}