From 75235fd12295ae1678a6cd39f1397367f518e4c3 Mon Sep 17 00:00:00 2001 From: RevGear <95308545+RevGear@users.noreply.github.com> Date: Wed, 17 Aug 2022 20:47:03 +0100 Subject: [PATCH] Canal Plus description / category canalplus-afrique.com canalplus-reunion.com canalplus-haiti.com canalplus-caraibes.com Added program description and category. Updated image to use program-specific image instead of generic default --- .../canalplus-afrique.com.config.js | 40 +++++++++++++++---- .../canalplus-caraibes.com.config.js | 37 +++++++++++++---- .../canalplus-haiti.com.config.js | 39 ++++++++++++++---- .../canalplus-reunion.com.config.js | 38 ++++++++++++++---- 4 files changed, 126 insertions(+), 28 deletions(-) diff --git a/sites/canalplus-afrique.com/canalplus-afrique.com.config.js b/sites/canalplus-afrique.com/canalplus-afrique.com.config.js index 88de22dd..d589af32 100644 --- a/sites/canalplus-afrique.com/canalplus-afrique.com.config.js +++ b/sites/canalplus-afrique.com/canalplus-afrique.com.config.js @@ -12,18 +12,21 @@ module.exports = { return `https://service.canal-overseas.com/ott-frontend/vector/83001/channel/${channel.site_id}/events?filter.day=${diff}` }, - parser: function ({ content }) { + async parser({ content }) { let programs = [] const items = parseItems(content) - items.forEach(item => { + for (let item of items) { if (item.title === 'Fin des programmes') return + const detail = await loadProgramDetails(item) programs.push({ - title: item.title, - icon: item.URLImageDefault, - start: parseStart(item), - stop: parseStop(item) + title: item.title, + description:parseDescription(detail), + category: parseCategory(detail), + icon: parseIcon(item), + start: parseStart(item), + stop: parseStop(item) }) - }) + } return programs }, @@ -49,6 +52,28 @@ module.exports = { } } + +async function loadProgramDetails(item) { + if (!item.onClick.URLPage) return {} + const url = item.onClick.URLPage + const data = await axios + .get(url) + .then(r => r.data) + .catch(console.log) + return data || {} + } + +function parseDescription(detail){ + return detail.detail.informations.summary || null +} + +function parseCategory(detail){ + return detail.detail.informations.subGenre || null +} +function parseIcon(item){ + return item.URLImage || item.URLImageDefault +} + function parseStart(item) { return dayjs.unix(item.startTime) } @@ -67,3 +92,4 @@ function parseItems(content) { return items } + diff --git a/sites/canalplus-caraibes.com/canalplus-caraibes.com.config.js b/sites/canalplus-caraibes.com/canalplus-caraibes.com.config.js index d283bd76..921cf3dc 100644 --- a/sites/canalplus-caraibes.com/canalplus-caraibes.com.config.js +++ b/sites/canalplus-caraibes.com/canalplus-caraibes.com.config.js @@ -12,18 +12,21 @@ module.exports = { return `https://service.canal-overseas.com/ott-frontend/vector/53001/channel/${channel.site_id}/events?filter.day=${diff}` }, - parser: function ({ content }) { + async parser({ content }) { let programs = [] const items = parseItems(content) - items.forEach(item => { + for (let item of items) { if (item.title === 'Fin des programmes') return + const detail = await loadProgramDetails(item) programs.push({ - title: item.title, - icon: item.URLImageDefault, - start: parseStart(item).toJSON(), - stop: parseStop(item).toJSON() + title: item.title, + description:parseDescription(detail), + category: parseCategory(detail), + icon: parseIcon(item), + start: parseStart(item), + stop: parseStop(item) }) - }) + } return programs }, @@ -49,6 +52,26 @@ module.exports = { } } +async function loadProgramDetails(item) { + if (!item.onClick.URLPage) return {} + const url = item.onClick.URLPage + const data = await axios + .get(url) + .then(r => r.data) + .catch(console.log) + return data || {} + } + +function parseDescription(detail){ + return detail.detail.informations.summary || null +} + +function parseCategory(detail){ + return detail.detail.informations.subGenre || null +} +function parseIcon(item){ + return item.URLImage || item.URLImageDefault +} function parseStart(item) { return dayjs.unix(item.startTime) } diff --git a/sites/canalplus-haiti.com/canalplus-haiti.com.config.js b/sites/canalplus-haiti.com/canalplus-haiti.com.config.js index 4c47c268..b9dd20fd 100644 --- a/sites/canalplus-haiti.com/canalplus-haiti.com.config.js +++ b/sites/canalplus-haiti.com/canalplus-haiti.com.config.js @@ -12,18 +12,21 @@ module.exports = { return `https://service.canal-overseas.com/ott-frontend/vector/53101/channel/${channel.site_id}/events?filter.day=${diff}` }, - parser: function ({ content }) { + async parser({ content }) { let programs = [] const items = parseItems(content) - items.forEach(item => { + for (let item of items) { if (item.title === 'Fin des programmes') return + const detail = await loadProgramDetails(item) programs.push({ - title: item.title, - icon: item.URLImageDefault, - start: parseStart(item).toJSON(), - stop: parseStop(item).toJSON() + title: item.title, + description:parseDescription(detail), + category: parseCategory(detail), + icon: parseIcon(item), + start: parseStart(item), + stop: parseStop(item) }) - }) + } return programs }, @@ -49,6 +52,28 @@ module.exports = { } } + +async function loadProgramDetails(item) { + if (!item.onClick.URLPage) return {} + const url = item.onClick.URLPage + const data = await axios + .get(url) + .then(r => r.data) + .catch(console.log) + return data || {} + } + +function parseDescription(detail){ + return detail.detail.informations.summary || null +} + +function parseCategory(detail){ + return detail.detail.informations.subGenre || null +} +function parseIcon(item){ + return item.URLImage || item.URLImageDefault +} + function parseStart(item) { return dayjs.unix(item.startTime) } diff --git a/sites/canalplus-reunion.com/canalplus-reunion.com.config.js b/sites/canalplus-reunion.com/canalplus-reunion.com.config.js index c1f0517a..22c23f97 100644 --- a/sites/canalplus-reunion.com/canalplus-reunion.com.config.js +++ b/sites/canalplus-reunion.com/canalplus-reunion.com.config.js @@ -1,3 +1,4 @@ +const axios = require('axios') const dayjs = require('dayjs') const utc = require('dayjs/plugin/utc') @@ -10,23 +11,46 @@ module.exports = { return `https://service.canal-overseas.com/ott-frontend/vector/63001/channel/${channel.site_id}/events?filter.day=${diff}` }, - parser: function ({ content }) { + async parser({ content }) { let programs = [] const items = parseItems(content) - items.forEach(item => { + for (let item of items) { if (item.title === 'Fin des programmes') return + const detail = await loadProgramDetails(item) programs.push({ - title: item.title, - icon: item.URLImageDefault, - start: parseStart(item).toJSON(), - stop: parseStop(item).toJSON() + title: item.title, + description:parseDescription(detail), + category: parseCategory(detail), + icon: parseIcon(item), + start: parseStart(item), + stop: parseStop(item) }) - }) + } return programs } } +async function loadProgramDetails(item) { + if (!item.onClick.URLPage) return {} + const url = item.onClick.URLPage + const data = await axios + .get(url) + .then(r => r.data) + .catch(console.log) + return data || {} + } + +function parseDescription(detail){ + return detail.detail.informations.summary || null +} + +function parseCategory(detail){ + return detail.detail.informations.subGenre || null +} +function parseIcon(item){ + return item.URLImage || item.URLImageDefault +} function parseStart(item) { return dayjs.unix(item.startTime) }