const axios = require('axios') const dayjs = require('dayjs') const utc = require('dayjs/plugin/utc') const timezone = require('dayjs/plugin/timezone') const customParseFormat = require('dayjs/plugin/customParseFormat') dayjs.extend(utc) dayjs.extend(timezone) dayjs.extend(customParseFormat) module.exports = { site: 'neo.io', timezone: 'Europe/Ljubljana', days: 5, url({ date, channel }) { return 'https://stargate.telekom.si/api/titan.tv.WebEpg/GetWebEpgData' }, request: { method: 'POST', headers: { 'Host': 'stargate.telekom.si', 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:121.0) Gecko/20100101 Firefox/121.0', 'Accept': 'application/json, text/plain, */*', 'Accept-Language': 'nl,en-US;q=0.7,en;q=0.3', 'Content-Type': 'application/json', 'X-AppLayout': '1', 'x-language': 'sl', 'Origin': 'https://neo.io', 'Sec-Fetch-Dest': 'empty', 'Sec-Fetch-Mode': 'cors', 'Sec-Fetch-Site': 'cross-site', 'Sec-GPC': '1', 'Connection': 'keep-alive' }, data({ channel, date }) { const todayEpoch = date.startOf('day').unix(); const nextDayEpoch = date.add(1, 'day').startOf('day').unix(); return JSON.stringify({ ch_ext_id: channel.site_id, from: todayEpoch, to: nextDayEpoch }) } }, parser: function ({ content }) { const programs = []; const data = JSON.parse(content); data.shows.forEach(show => { const start = dayjs.unix(show.show_start).utc(); const stop = dayjs.unix(show.show_end).utc(); const programData = { title: show.title, description: show.summary || 'No description available', start: start.toISOString(), stop: stop.toISOString(), thumbnail: show.thumbnail } programs.push(programData) }) return programs }, async channels() { const response = await axios.post('https://stargate.telekom.si/api/titan.tv.WebEpg/ZapList', JSON.stringify({ includeRadioStations: true }), { headers: this.request.headers }); const data = response.data.data; return data.map(item => ({ lang: 'sq', name: String(item.channel.title), site_id: String(item.channel.id), //logo: String(item.channel.logo) })) } }