From d1b90f74d6164ba7072d67f59cc05a96ce815ca4 Mon Sep 17 00:00:00 2001 From: RevGear <95308545+RevGear@users.noreply.github.com> Date: Mon, 2 Jan 2023 17:43:59 +0000 Subject: [PATCH] Add RTP International Asia / America resolves #1594 --- sites/rtp.pt/rtp.pt.config.js | 24 +++++++++++++++--------- sites/rtp.pt/rtp.pt.test.js | 6 +++--- sites/rtp.pt/rtp.pt_pt.channels.xml | 18 ++++++++++-------- 3 files changed, 28 insertions(+), 20 deletions(-) diff --git a/sites/rtp.pt/rtp.pt.config.js b/sites/rtp.pt/rtp.pt.config.js index 13a19b46..3185274c 100644 --- a/sites/rtp.pt/rtp.pt.config.js +++ b/sites/rtp.pt/rtp.pt.config.js @@ -9,19 +9,24 @@ dayjs.extend(utc) dayjs.extend(timezone) dayjs.extend(customParseFormat) +const tz = { + lis: 'Europe/Lisbon', + per: 'Asia/Macau', + rja: 'America/Sao_Paulo' +} + module.exports = { site: 'rtp.pt', url({ channel, date }) { - return `https://www.rtp.pt/EPG/json/rtp-channels-page/list-grid/tv/${ - channel.site_id - }/${date.format('D-M-YYYY')}` + let [region, channelCode] = channel.site_id.split('#') + return `https://www.rtp.pt/EPG/json/rtp-channels-page/list-grid/tv/${channelCode}/${date.format('D-M-YYYY')}/${region}` }, - parser({ content }) { + parser({ content, channel }) { let programs = [] const items = parseItems(content) items.forEach(item => { const prev = programs[programs.length - 1] - let start = parseStart(item) + let start = parseStart(item, channel) if (!start) return if (prev) { prev.stop = start @@ -56,12 +61,13 @@ module.exports = { function parseIcon(item) { const last = item.image.pop() - - return last?.src + if(!last) return null + return last.src } -function parseStart(item) { - return dayjs.tz(item.date, 'YYYY-MM-DD HH:mm:ss', 'Europe/Lisbon') +function parseStart(item, channel) { + let [region] = channel.site_id.split('#') + return dayjs.tz(item.date, 'YYYY-MM-DD HH:mm:ss', tz[region]) } function parseItems(content) { diff --git a/sites/rtp.pt/rtp.pt.test.js b/sites/rtp.pt/rtp.pt.test.js index 046476e5..a282e843 100644 --- a/sites/rtp.pt/rtp.pt.test.js +++ b/sites/rtp.pt/rtp.pt.test.js @@ -12,19 +12,19 @@ dayjs.extend(utc) const date = dayjs.utc('2022-12-02', 'YYYY-MM-DD').startOf('d') const channel = { - site_id: '4', + site_id: 'lis#4', xmltv_id: 'RTPMadeira.pt' } it('can generate valid url', () => { expect(url({ channel, date })).toBe( - 'https://www.rtp.pt/EPG/json/rtp-channels-page/list-grid/tv/4/2-12-2022' + 'https://www.rtp.pt/EPG/json/rtp-channels-page/list-grid/tv/4/2-12-2022/lis' ) }) it('can parse response', () => { const content = fs.readFileSync(path.resolve(__dirname, '__data__/content.json')) - let results = parser({ content }).map(p => { + let results = parser({ content, channel }).map(p => { p.start = p.start.toJSON() p.stop = p.stop.toJSON() return p diff --git a/sites/rtp.pt/rtp.pt_pt.channels.xml b/sites/rtp.pt/rtp.pt_pt.channels.xml index fb6817e7..5f113cdc 100644 --- a/sites/rtp.pt/rtp.pt_pt.channels.xml +++ b/sites/rtp.pt/rtp.pt_pt.channels.xml @@ -1,13 +1,15 @@ - RTP1 - RTP2 - RTP3 - RTP Memória - RTP África - RTP Internacional - RTP Açores - RTP Madeira + RTP1 + RTP2 + RTP3 + RTP Memória + RTP África + RTP Internacional + RTP Internacional América + RTP Internacional Ásia + RTP Açores + RTP Madeira