diff --git a/sites/webtv.sk/webtv.sk.config.js b/sites/webtv.sk/webtv.sk.config.js new file mode 100644 index 00000000..dc7045a2 --- /dev/null +++ b/sites/webtv.sk/webtv.sk.config.js @@ -0,0 +1,74 @@ +const axios = require('axios') +const dayjs = require('dayjs') +const utc = require('dayjs/plugin/utc') + +dayjs.extend(utc) + +module.exports = { + site: 'webtv.sk', + days: 2, + delay: 1000, + url: 'https://api.webtv.sk/epg/channel', + request: { + method: 'POST', + headers: { + 'content-type': 'application/json' + }, + data({ channel, date }) { + return { + channel_id: channel.site_id, + date: dayjs.utc(date).toJSON() + } + } + }, + parser({ content }) { + return parseItems(content).map(item => { + return { + title: item.Title, + subtitle: item.Subtitle, + description: item.Description, + categories: item.Genres, + start: dayjs(item.Start), + stop: dayjs(item.Stop) + } + }) + }, + async channels() { + const data = await axios + .post( + 'https://api.webtv.sk/channels', + { type: 'TV', channels_content: null }, + { + headers: { + 'content-type': 'application/json' + } + } + ) + .then(r => r.data) + .catch(console.error) + + let channels = [] + for (const site_id in data.data) { + const channel = data.data[site_id] + + channels.push({ + site_id, + name: channel.name, + lang: 'sk' + }) + } + + return channels + } +} + +function parseItems(content) { + try { + const data = JSON.parse(content) + if (!data || !Array.isArray(data.content)) return [] + + return data.content + } catch { + return [] + } +}