From 6618ac6beae59ee95c2067c5f589b5d15bd7a8f8 Mon Sep 17 00:00:00 2001 From: Aleksandr Statciuk Date: Fri, 10 Jun 2022 13:42:48 +0300 Subject: [PATCH] Create mewatch.sg.config.js --- sites/mewatch.sg/mewatch.sg.config.js | 56 +++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 sites/mewatch.sg/mewatch.sg.config.js diff --git a/sites/mewatch.sg/mewatch.sg.config.js b/sites/mewatch.sg/mewatch.sg.config.js new file mode 100644 index 00000000..8b1bec06 --- /dev/null +++ b/sites/mewatch.sg/mewatch.sg.config.js @@ -0,0 +1,56 @@ +const dayjs = require('dayjs') + +module.exports = { + site: 'mewatch.sg', + url: function ({ channel, date }) { + return `https://cdn.mewatch.sg/api/schedules?channels=${channel.site_id}&date=${date.format( + 'YYYY-MM-DD' + )}&duration=24&ff=idp,ldp,rpt,cd&hour=21&intersect=true&lang=en&segments=all` + }, + parser: function ({ content, channel }) { + let programs = [] + const items = parseItems(content, channel) + items.forEach(item => { + const info = item.item + programs.push({ + title: info.title, + description: info.description, + icon: info.images.tile, + episode: info.episodeNumber, + season: info.seasonNumber, + start: parseStart(item), + stop: parseStop(item), + rating: parseRating(info) + }) + }) + + return programs + } +} + +function parseStart(item) { + return dayjs(item.startDate) +} + +function parseStop(item) { + return dayjs(item.endDate) +} + +function parseRating(info) { + const classification = info.classification + if (classification && classification.code) { + const [system, value] = classification.code.split('-') + + return { system, value } + } + + return null +} + +function parseItems(content, channel) { + const data = JSON.parse(content) + if (!data || !Array.isArray(data)) return [] + const channelData = data.find(i => i.channelId === channel.site_id) + + return channelData && Array.isArray(channelData.schedules) ? channelData.schedules : [] +}