diff --git a/sites/tvguide.com.config.js b/sites/tvguide.com.config.js new file mode 100644 index 00000000..f6c13ac1 --- /dev/null +++ b/sites/tvguide.com.config.js @@ -0,0 +1,47 @@ +const dayjs = require('dayjs') +const utc = require('dayjs/plugin/utc') +const timezone = require('dayjs/plugin/timezone') + +dayjs.extend(utc) +dayjs.extend(timezone) + +module.exports = { + lang: 'en', + site: 'tvguide.com', + channels: 'tvguide.com.channels.xml', + output: '.gh-pages/guides/tvguide.com.guide.xml', + url: function ({ date, channel }) { + const localTime = date.tz('America/New_York') + const parts = channel.site_id.split('#') + const start = localTime.startOf('d') + const duration = localTime.endOf('d').diff(start, 'm') + const url = `https://cmg-prod.apigee.net/v1/xapi/tvschedules/tvguide/${ + parts[0] + }/web?start=${start.unix()}&duration=${duration}&channelSourceIds=${parts[1]}` + + return url + }, + parser: function ({ content }) { + const programs = [] + const items = parseItems(content) + items.forEach(item => { + programs.push({ + title: item.title, + start: parseTime(item.startTime), + stop: parseTime(item.endTime) + }) + }) + + return programs + } +} + +function parseTime(timestamp) { + return dayjs.unix(timestamp) +} + +function parseItems(content) { + const json = JSON.parse(content) + + return json.data.items[0].programSchedules +}