From 3a282f5108939990a86e912ed77328c6bbaccf35 Mon Sep 17 00:00:00 2001 From: freearhey <7253922+freearhey@users.noreply.github.com> Date: Sat, 18 Apr 2026 07:32:08 +0300 Subject: [PATCH] Update foxtel.com.au.config.js --- sites/foxtel.com.au/foxtel.com.au.config.js | 48 ++++++++++++++++++--- 1 file changed, 43 insertions(+), 5 deletions(-) diff --git a/sites/foxtel.com.au/foxtel.com.au.config.js b/sites/foxtel.com.au/foxtel.com.au.config.js index da6f04b1b..050261719 100644 --- a/sites/foxtel.com.au/foxtel.com.au.config.js +++ b/sites/foxtel.com.au/foxtel.com.au.config.js @@ -14,10 +14,11 @@ module.exports = { headers: { 'Accept-Language': 'en-US,en;', Cookie: 'AAMC_foxtel_0=REGION|7', - 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36' + 'User-Agent': + 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36' } }, - parser: function ({ content, date }) { + async parser({ content, date }) { let programs = [] const items = parseItems(content) for (let item of items) { @@ -32,9 +33,18 @@ module.exports = { prev.stop = start } const stop = start.add(30, 'm') + + const programId = parseProgramId($item) + const details = await loadProgramDetails(programId) + let description + if (details) { + description = parseDescription(details) + } + programs.push({ title: parseTitle($item), sub_title: parseSubTitle($item), + description, image: parseImage($item), rating: parseRating($item), season: parseSeason($item), @@ -72,6 +82,34 @@ module.exports = { } } +function parseProgramId($item) { + const href = $item('*').attr('href') + + return href.split('/')[1] +} + +async function loadProgramDetails(programId) { + if (!programId) return {} + + return await axios + .get( + `https://www.foxtel.com.au/webepg/ws/foxtel/event/${programId}?movieHeight=213&tvShowHeight=213®ionId=8336`, + { + headers: { + 'sec-fetch-dest': 'empty', + 'sec-fetch-site': 'same-origin', + 'User-Agent': 'insomnia/2022.7.5' + } + } + ) + .then(r => r.data) + .catch(console.log) +} + +function parseDescription(details) { + return details?.event?.shortSynopsis +} + function parseSeason($item) { let seasonString = $item('.epg-event-description > div > abbr:nth-child(1)').attr('title') if (!seasonString) return null @@ -118,9 +156,9 @@ function parseRating($item) { return rating ? { - system: 'ACB', - value: rating - } + system: 'ACB', + value: rating + } : null }