Files
epg/sites/rts.ch/rts.ch.config.js
2026-03-21 09:10:12 +01:00

42 lines
1.3 KiB
JavaScript

const axios = require('axios')
const dayjs = require('dayjs')
module.exports = {
site: 'rts.ch',
days: 2,
url({ channel, date }) {
return `https://il.srgssr.ch/integrationlayer/2.0/rts/programGuide/tv/byDate/${date.format('YYYY-MM-DD')}?reduced=false&channelId=${channel.site_id}`
},
parser({ content }) {
try {
const { programGuide } = JSON.parse(content)
if (!programGuide?.[0]?.programList) return []
return programGuide[0].programList.map(program => ({
title: program.title || '',
subTitle: program.subtitle || undefined,
description: program.description || program.show?.description || undefined,
start: new Date(program.startTime).toISOString(),
stop: new Date(program.endTime).toISOString(),
icon: program.imageUrl ? { src: program.imageUrl } : undefined,
category: program.genre || undefined,
}))
} catch {
return []
}
},
async channels() {
const today = dayjs().format('YYYY-MM-DD')
const { data } = await axios.get(
`https://www.rts.ch/play/v3/api/rts/production/tv-program-guide?date=${today}`
)
return data.data.map(entry => ({
site_id: entry.channel.id,
name: entry.channel.title,
lang: 'fr',
}))
}
}