fix sky.nz and add new channels for sky.com

This commit is contained in:
theofficialomega
2025-12-15 00:45:10 +01:00
parent 78c7a13104
commit 0f506fb52f
5 changed files with 28471 additions and 756 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -1,42 +1,67 @@
<?xml version="1.0" encoding="UTF-8"?>
<channels>
<channel site="sky.co.nz" site_id="1" lang="en" xmltv_id="TVNZ1.nz@SD">One</channel>
<channel site="sky.co.nz" site_id="2" lang="en" xmltv_id="TVNZ2.nz@SD">TV2</channel>
<channel site="sky.co.nz" site_id="3" lang="en" xmltv_id="Three.nz@SD">Three</channel>
<channel site="sky.co.nz" site_id="4" lang="en" xmltv_id="SkyOpen.nz@SD">Prime TV</channel>
<channel site="sky.co.nz" site_id="5" lang="en" xmltv_id="Sky5.nz@SD">Sky 5</channel>
<channel site="sky.co.nz" site_id="6" lang="en" xmltv_id="Vibe.nz@SD">Vibe</channel>
<channel site="sky.co.nz" site_id="207" lang="en" xmltv_id="">BBC First</channel>
<channel site="sky.co.nz" site_id="600" lang="en" xmltv_id="">SKY Sport Popup 1</channel>
<channel site="sky.co.nz" site_id="601" lang="en" xmltv_id="">SKY Sport Popup 2</channel>
<channel site="sky.co.nz" site_id="90" lang="en" xmltv_id="AlJazeera.qa@English">Al Jazeera</channel>
<channel site="sky.co.nz" site_id="76" lang="en" xmltv_id="AnimalPlanet.au@SD">Animal Planet</channel>
<channel site="sky.co.nz" site_id="74" lang="en" xmltv_id="BBCEarth.uk@NewZealand">BBC Earth</channel>
<channel site="sky.co.nz" site_id="89" lang="en" xmltv_id="BBCNews.uk@AsiaPacific">BBC World News</channel>
<channel site="sky.co.nz" site_id="7" lang="en" xmltv_id="BBCUKTV.au@NewZealand">UKTV</channel>
<channel site="sky.co.nz" site_id="8" lang="en" xmltv_id="JONES.nz@SD">JONES!</channel>
<channel site="sky.co.nz" site_id="9" lang="en" xmltv_id="SkyBoxSets.nz@SD">SKY BOX SETS</channel>
<channel site="sky.co.nz" site_id="10" lang="en" xmltv_id="SoHo.nz@SD">SoHo</channel>
<channel site="sky.co.nz" site_id="11" lang="en" xmltv_id="ComedyCentral.au@SD">Comedy Central</channel>
<channel site="sky.co.nz" site_id="512" lang="en" xmltv_id="Bravo.nz@Plus1">BRAVO Plus 1</channel>
<channel site="sky.co.nz" site_id="12" lang="en" xmltv_id="Bravo.nz@SD">BRAVO</channel>
<channel site="sky.co.nz" site_id="102" lang="en" xmltv_id="CartoonNetwork.au@Australia">Cartoon Network</channel>
<channel site="sky.co.nz" site_id="103" lang="en" xmltv_id="CBeebies.au@SD">CBeebies</channel>
<channel site="sky.co.nz" site_id="310" lang="en" xmltv_id="CGTN.cn@SD">CGTN</channel>
<channel site="sky.co.nz" site_id="309" lang="en" xmltv_id="CGTNDocumentary.cn@SD">CGTN</channel>
<channel site="sky.co.nz" site_id="91" lang="en" xmltv_id="CNBCAustralia.au@SD">CNBC</channel>
<channel site="sky.co.nz" site_id="87" lang="en" xmltv_id="CNNInternational.us@AsiaPacific">CNN International</channel>
<channel site="sky.co.nz" site_id="151" lang="en" xmltv_id="ColorsAsiaPacific.in@SD">Colors</channel>
<channel site="sky.co.nz" site_id="11" lang="en" xmltv_id="ComedyCentral.au@SD">Comedy Central</channel>
<channel site="sky.co.nz" site_id="81" lang="en" xmltv_id="CountryTV.nz@SD">Country TV</channel>
<channel site="sky.co.nz" site_id="71" lang="en" xmltv_id="CrimePlusInvestigation.au@SD">Real Crime</channel>
<channel site="sky.co.nz" site_id="202" lang="en" xmltv_id="DaystarTV.us@SD">Daystar TV Network</channel>
<channel site="sky.co.nz" site_id="70" lang="en" xmltv_id="DiscoveryChannel.nz@SD">Discovery Channel</channel>
<channel site="sky.co.nz" site_id="75" lang="en" xmltv_id="DiscoveryTurbo.au@NewZealand">Discovery Turbo</channel>
<channel site="sky.co.nz" site_id="505" lang="en" xmltv_id="eden.nz@Plus1">eden +1</channel>
<channel site="sky.co.nz" site_id="13" lang="en" xmltv_id="eden.nz@SD">eden</channel>
<channel site="sky.co.nz" site_id="15" lang="en" xmltv_id="MTV.nz@SD">MTV</channel>
<channel site="sky.co.nz" site_id="16" lang="en" xmltv_id="TLC.nz@SD">TLC</channel>
<channel site="sky.co.nz" site_id="17" lang="en" xmltv_id="Living.nz@SD">Living Channel</channel>
<channel site="sky.co.nz" site_id="18" lang="en" xmltv_id="InvestigationDiscovery.au@SD">Investigation Discovery</channel>
<channel site="sky.co.nz" site_id="19" lang="en" xmltv_id="WhakaataMaori.nz@SD">Maori Television</channel>
<channel site="sky.co.nz" site_id="20" lang="en" xmltv_id="SkyArts.nz@SD">SKY ARTS</channel>
<channel site="sky.co.nz" site_id="61" lang="en" xmltv_id="ESPN2.au@SD">ESPN2</channel>
<channel site="sky.co.nz" site_id="60" lang="en" xmltv_id="ESPN.au@SD">ESPN</channel>
<channel site="sky.co.nz" site_id="83" lang="en" xmltv_id="FaceTV.nz@SD">FACE TV</channel>
<channel site="sky.co.nz" site_id="206" lang="en" xmltv_id="Firstlight.nz@SD">Firstlight</channel>
<channel site="sky.co.nz" site_id="88" lang="en" xmltv_id="FoxNewsChannel.us@SD">Fox News</channel>
<channel site="sky.co.nz" site_id="21" lang="en" xmltv_id="HGTV.nz@SD">HGTV</channel>
<channel site="sky.co.nz" site_id="22" lang="en" xmltv_id="MTVHits.nz@SD">MTV Hits</channel>
<channel site="sky.co.nz" site_id="23" lang="en" xmltv_id="TVNZDUKE.nz@SD">DUKE</channel>
<channel site="sky.co.nz" site_id="24" lang="en" xmltv_id="Rush.nz@SD">Rush</channel>
<channel site="sky.co.nz" site_id="25" lang="en" xmltv_id="TheShoppingChannel.nz@SD">The Shopping Channel</channel>
<channel site="sky.co.nz" site_id="30" lang="en" xmltv_id="SkyMoviesPremiere.nz@SD">SKY Movies Premiere</channel>
<channel site="sky.co.nz" site_id="31" lang="en" xmltv_id="SkyMoviesComedy.nz@SD">SKY Movies Comedy</channel>
<channel site="sky.co.nz" site_id="32" lang="en" xmltv_id="SkyMoviesAction.nz@SD">SKY Movies Action</channel>
<channel site="sky.co.nz" site_id="33" lang="en" xmltv_id="SkyMoviesGreats.nz@SD">SKY Movies Greats</channel>
<channel site="sky.co.nz" site_id="34" lang="en" xmltv_id="SkyMoviesClassics.nz@SD">SKY Movies Classic</channel>
<channel site="sky.co.nz" site_id="35" lang="en" xmltv_id="SkyMoviesCollection.nz@SD">SKY Movies Collection</channel>
<channel site="sky.co.nz" site_id="36" lang="en" xmltv_id="SkyMoviesFamily.nz@SD">SKY Movies Family</channel>
<channel site="sky.co.nz" site_id="73" lang="en" xmltv_id="History.au@SD">Real History</channel>
<channel site="sky.co.nz" site_id="204" lang="en" xmltv_id="HopeChannelNewZealand.nz@SD">Hope Channel</channel>
<channel site="sky.co.nz" site_id="18" lang="en" xmltv_id="InvestigationDiscovery.au@SD">Investigation Discovery</channel>
<channel site="sky.co.nz" site_id="8" lang="en" xmltv_id="JONES.nz@SD">Jones!</channel>
<channel site="sky.co.nz" site_id="17" lang="en" xmltv_id="Living.nz@SD">Living Channel</channel>
<channel site="sky.co.nz" site_id="15" lang="en" xmltv_id="MTV.nz@SD">MTV</channel>
<channel site="sky.co.nz" site_id="22" lang="en" xmltv_id="MTVHits.nz@SD">MTV Music</channel>
<channel site="sky.co.nz" site_id="101" lang="en" xmltv_id="Nickelodeon.au@SD">Nick</channel>
<channel site="sky.co.nz" site_id="104" lang="en" xmltv_id="NickJr.au@SD">nick jr.</channel>
<channel site="sky.co.nz" site_id="100" lang="en" xmltv_id="NickMusic.au@SD">Nick Music</channel>
<channel site="sky.co.nz" site_id="86" lang="en" xmltv_id="ParliamentTV.nz@SD">Parliament TV</channel>
<channel site="sky.co.nz" site_id="39" lang="en" xmltv_id="Rialto.nz@SD">Rialto</channel>
<channel site="sky.co.nz" site_id="24" lang="en" xmltv_id="Rush.nz@SD">Rush</channel>
<channel site="sky.co.nz" site_id="203" lang="en" xmltv_id="SBNTV.au@SD">SBN</channel>
<channel site="sky.co.nz" site_id="201" lang="en" xmltv_id="ShineTV.nz@SD">Shine TV</channel>
<channel site="sky.co.nz" site_id="5" lang="en" xmltv_id="Sky5.nz@SD">Sky 5</channel>
<channel site="sky.co.nz" site_id="65" lang="en" xmltv_id="SkyArena.nz@SD">SKY Arena</channel>
<channel site="sky.co.nz" site_id="20" lang="en" xmltv_id="SkyArts.nz@SD">Arts Channel</channel>
<channel site="sky.co.nz" site_id="40" lang="en" xmltv_id="SkyBoxOffice040.nz@SD">SKY Box Office</channel>
<channel site="sky.co.nz" site_id="41" lang="en" xmltv_id="SkyBoxOffice041.nz@SD">SKY Box Office 041</channel>
<channel site="sky.co.nz" site_id="42" lang="en" xmltv_id="SkyBoxOffice042.nz@SD">SKY Box Office 042</channel>
<channel site="sky.co.nz" site_id="43" lang="en" xmltv_id="SkyBoxOffice043.nz@SD">SKY Box Office 043</channel>
<channel site="sky.co.nz" site_id="50" lang="en" xmltv_id="SkySportSelect.nz@SD">SKY Sport Select</channel>
<channel site="sky.co.nz" site_id="32" lang="en" xmltv_id="SkyMoviesAction.nz@SD">Action Movies</channel>
<channel site="sky.co.nz" site_id="34" lang="en" xmltv_id="SkyMoviesClassics.nz@SD">Classic Movies</channel>
<channel site="sky.co.nz" site_id="31" lang="en" xmltv_id="SkyMoviesComedy.nz@SD">Comedy Movies</channel>
<channel site="sky.co.nz" site_id="36" lang="en" xmltv_id="SkyMoviesFamily.nz@SD">Family Movies</channel>
<channel site="sky.co.nz" site_id="33" lang="en" xmltv_id="SkyMoviesGreats.nz@SD">Great Movies</channel>
<channel site="sky.co.nz" site_id="30" lang="en" xmltv_id="SkyMoviesPremiere.nz@SD">Premiere Movies</channel>
<channel site="sky.co.nz" site_id="85" lang="en" xmltv_id="SkyNewsNewZealand.nz@SD">SKY NEWS</channel>
<channel site="sky.co.nz" site_id="514" lang="en" xmltv_id="SkyOpen.nz@Plus1">Sky Open +1</channel>
<channel site="sky.co.nz" site_id="4" lang="en" xmltv_id="SkyOpen.nz@SD">Sky Open</channel>
<channel site="sky.co.nz" site_id="51" lang="en" xmltv_id="SkySport1.nz@SD">SKY Sport 1</channel>
<channel site="sky.co.nz" site_id="52" lang="en" xmltv_id="SkySport2.nz@SD">SKY Sport 2</channel>
<channel site="sky.co.nz" site_id="53" lang="en" xmltv_id="SkySport3.nz@SD">SKY Sport 3</channel>
@@ -46,69 +71,24 @@
<channel site="sky.co.nz" site_id="57" lang="en" xmltv_id="SkySport7.nz@SD">SKY Sport 7</channel>
<channel site="sky.co.nz" site_id="58" lang="en" xmltv_id="SkySport8.nz@SD">SKY Sport 8</channel>
<channel site="sky.co.nz" site_id="59" lang="en" xmltv_id="SkySport9.nz@SD">SKY Sport 9</channel>
<channel site="sky.co.nz" site_id="60" lang="en" xmltv_id="ESPN.au@SD">ESPN</channel>
<channel site="sky.co.nz" site_id="61" lang="en" xmltv_id="ESPN2.au@SD">ESPN2</channel>
<channel site="sky.co.nz" site_id="50" lang="en" xmltv_id="SkySportSelect.nz@SD">SKY Sport Select</channel>
<channel site="sky.co.nz" site_id="10" lang="en" xmltv_id="SoHo.nz@SD">HBO</channel>
<channel site="sky.co.nz" site_id="152" lang="en" xmltv_id="StarGold.in@SD">Star Gold</channel>
<channel site="sky.co.nz" site_id="150" lang="en" xmltv_id="StarPlus.in@SD">Star Plus Hindi</channel>
<channel site="sky.co.nz" site_id="62" lang="en" xmltv_id="TABTrackside1.nz@SD">TAB Trackside 1</channel>
<channel site="sky.co.nz" site_id="63" lang="en" xmltv_id="TABTrackside2.nz@SD">TAB Trackside 2</channel>
<channel site="sky.co.nz" site_id="65" lang="en" xmltv_id="SkyArena.nz@SD">SKY Arena</channel>
<channel site="sky.co.nz" site_id="70" lang="en" xmltv_id="DiscoveryChannel.nz@SD">Discovery Channel</channel>
<channel site="sky.co.nz" site_id="71" lang="en" xmltv_id="CrimePlusInvestigation.au@SD">Crime + Investigation</channel>
<channel site="sky.co.nz" site_id="72" lang="en" xmltv_id="NationalGeographic.au@SD">National Geographic</channel>
<channel site="sky.co.nz" site_id="73" lang="en" xmltv_id="History.au@SD">History</channel>
<channel site="sky.co.nz" site_id="74" lang="en" xmltv_id="BBCEarth.uk@NewZealand">BBC Earth</channel>
<channel site="sky.co.nz" site_id="75" lang="en" xmltv_id="DiscoveryTurbo.au@NewZealand">Discovery Turbo</channel>
<channel site="sky.co.nz" site_id="76" lang="en" xmltv_id="AnimalPlanet.au@SD">Animal Planet</channel>
<channel site="sky.co.nz" site_id="81" lang="en" xmltv_id="CountryTV.nz@SD">Country TV</channel>
<channel site="sky.co.nz" site_id="82" lang="en" xmltv_id="TeReo.nz@SD">Te Reo</channel>
<channel site="sky.co.nz" site_id="83" lang="en" xmltv_id="FaceTV.nz@SD">Face TV</channel>
<channel site="sky.co.nz" site_id="85" lang="en" xmltv_id="SkyNewsNewZealand.nz@SD">SKY NEWS</channel>
<channel site="sky.co.nz" site_id="86" lang="en" xmltv_id="ParliamentTV.nz@SD">Parliament TV</channel>
<channel site="sky.co.nz" site_id="87" lang="en" xmltv_id="CNNInternational.us@AsiaPacific">CNN International</channel>
<channel site="sky.co.nz" site_id="88" lang="en" xmltv_id="FoxNewsChannel.us@SD">Fox News</channel>
<channel site="sky.co.nz" site_id="89" lang="en" xmltv_id="BBCNews.uk@AsiaPacific">BBC World News</channel>
<channel site="sky.co.nz" site_id="90" lang="en" xmltv_id="AlJazeera.qa@English">Al Jazeera</channel>
<channel site="sky.co.nz" site_id="91" lang="en" xmltv_id="CNBCAustralia.au@SD">CNBC</channel>
<channel site="sky.co.nz" site_id="100" lang="en" xmltv_id="NickMusic.au@SD">Nick Music</channel>
<channel site="sky.co.nz" site_id="101" lang="en" xmltv_id="Nickelodeon.au@SD">Nick</channel>
<channel site="sky.co.nz" site_id="102" lang="en" xmltv_id="CartoonNetwork.au@Australia">Cartoon Network</channel>
<channel site="sky.co.nz" site_id="103" lang="en" xmltv_id="CBeebies.au@SD">CBeebies</channel>
<channel site="sky.co.nz" site_id="104" lang="en" xmltv_id="NickJr.au@SD">nick jr.</channel>
<channel site="sky.co.nz" site_id="150" lang="en" xmltv_id="StarPlus.in@SD">Star Plus Hindi</channel>
<channel site="sky.co.nz" site_id="151" lang="en" xmltv_id="ColorsAsiaPacific.in@SD">Colors</channel>
<channel site="sky.co.nz" site_id="152" lang="en" xmltv_id="StarGold.in@SD">Star Gold</channel>
<channel site="sky.co.nz" site_id="160" lang="en" xmltv_id="TheFilipinoChannelAsia.us@SD">The Filipino Channel</channel>
<channel site="sky.co.nz" site_id="201" lang="en" xmltv_id="ShineTV.nz@SD">Shine TV</channel>
<channel site="sky.co.nz" site_id="202" lang="en" xmltv_id="DaystarTV.us@SD">Daystar TV Network</channel>
<channel site="sky.co.nz" site_id="203" lang="en" xmltv_id="SBNTV.au@SD">SBN</channel>
<channel site="sky.co.nz" site_id="204" lang="en" xmltv_id="HopeChannelNewZealand.nz@SD">Hope Channel</channel>
<channel site="sky.co.nz" site_id="206" lang="en" xmltv_id="Firstlight.nz@SD">Firstlight</channel>
<channel site="sky.co.nz" site_id="208" lang="en" xmltv_id="JONEStoo.nz@SD">JONES! too</channel>
<channel site="sky.co.nz" site_id="503" lang="en" xmltv_id="Three.nz@Plus1">ThreePlus1</channel>
<channel site="sky.co.nz" site_id="3" lang="en" xmltv_id="Three.nz@SD">Three</channel>
<channel site="sky.co.nz" site_id="16" lang="en" xmltv_id="TLC.nz@SD">TLC</channel>
<channel site="sky.co.nz" site_id="501" lang="en" xmltv_id="TVNZ1.nz@Plus1">One Plus 1</channel>
<channel site="sky.co.nz" site_id="1" lang="en" xmltv_id="TVNZ1.nz@SD">One</channel>
<channel site="sky.co.nz" site_id="502" lang="en" xmltv_id="TVNZ2.nz@Plus1">TV2 + 1</channel>
<channel site="sky.co.nz" site_id="2" lang="en" xmltv_id="TVNZ2.nz@SD">TV2</channel>
<channel site="sky.co.nz" site_id="504" lang="en" xmltv_id="TVNZDUKE.nz@Plus1">DukePlus1</channel>
<channel site="sky.co.nz" site_id="23" lang="en" xmltv_id="TVNZDUKE.nz@SD">DUKE</channel>
<channel site="sky.co.nz" site_id="210" lang="en" xmltv_id="UniversalTV.nz@SD">UniversalTV</channel>
<channel site="sky.co.nz" site_id="309" lang="en" xmltv_id="CGTNDocumentary.cn@SD">CGTN Documentary</channel>
<channel site="sky.co.nz" site_id="310" lang="en" xmltv_id="CGTN.cn@SD">CGTN</channel>
<channel site="sky.co.nz" site_id="501" lang="en" xmltv_id="TVNZ1.nz@Plus1">One +1</channel>
<channel site="sky.co.nz" site_id="502" lang="en" xmltv_id="TVNZ2.nz@Plus1">TV2 +1</channel>
<channel site="sky.co.nz" site_id="503" lang="en" xmltv_id="Three.nz@Plus1">Three +1</channel>
<channel site="sky.co.nz" site_id="504" lang="en" xmltv_id="TVNZDUKE.nz@Plus1">DUKE +1</channel>
<channel site="sky.co.nz" site_id="505" lang="en" xmltv_id="eden.nz@Plus1">eden +1</channel>
<channel site="sky.co.nz" site_id="512" lang="en" xmltv_id="Bravo.nz@Plus1">BRAVO +1</channel>
<channel site="sky.co.nz" site_id="514" lang="en" xmltv_id="SkyOpen.nz@Plus1">Prime +1</channel>
<channel site="sky.co.nz" site_id="600" lang="en" xmltv_id="">SKY Sport Popup 1</channel>
<channel site="sky.co.nz" site_id="601" lang="en" xmltv_id="">SKY Sport Popup 2</channel>
<channel site="sky.co.nz" site_id="605" lang="en" xmltv_id="">Rod Laver Arena</channel>
<channel site="sky.co.nz" site_id="606" lang="en" xmltv_id="">Margaret Court Arena</channel>
<channel site="sky.co.nz" site_id="607" lang="en" xmltv_id="">John Cain Arena</channel>
<channel site="sky.co.nz" site_id="608" lang="en" xmltv_id="">Kia Arena</channel>
<channel site="sky.co.nz" site_id="609" lang="en" xmltv_id="">1573 Arena</channel>
<channel site="sky.co.nz" site_id="610" lang="en" xmltv_id="">Court 3</channel>
<channel site="sky.co.nz" site_id="611" lang="en" xmltv_id="">Court 5</channel>
<channel site="sky.co.nz" site_id="612" lang="en" xmltv_id="">Court 6</channel>
<channel site="sky.co.nz" site_id="613" lang="en" xmltv_id="">Court 7</channel>
<channel site="sky.co.nz" site_id="614" lang="en" xmltv_id="">Court 8</channel>
<channel site="sky.co.nz" site_id="615" lang="en" xmltv_id="">Court 12</channel>
<channel site="sky.co.nz" site_id="616" lang="en" xmltv_id="">Court 13</channel>
<channel site="sky.co.nz" site_id="617" lang="en" xmltv_id="">Court 14</channel>
<channel site="sky.co.nz" site_id="618" lang="en" xmltv_id="">Court 15</channel>
<channel site="sky.co.nz" site_id="619" lang="en" xmltv_id="">Court 16</channel>
<channel site="sky.co.nz" site_id="620" lang="en" xmltv_id="">Court 17</channel>
<channel site="sky.co.nz" site_id="6" lang="en" xmltv_id="Vibe.nz@SD">Vibe</channel>
<channel site="sky.co.nz" site_id="19" lang="en" xmltv_id="WhakaataMaori.nz@SD">Maori Television</channel>
</channels>

View File

@@ -1,22 +1,76 @@
const axios = require('axios')
const dayjs = require('dayjs')
const utc = require('dayjs/plugin/utc')
const tz = require('dayjs/plugin/timezone')
const timezone = 'Pacific/Auckland'
dayjs.extend(utc)
dayjs.extend(tz)
module.exports = {
site: 'sky.co.nz',
days: 2,
url({ date, channel }) {
return `https://web-epg.sky.co.nz/prod/epgs/v1?channelNumber=${
channel.site_id
}&start=${date.valueOf()}&end=${date.add(1, 'day').valueOf()}&limit=20000`
url: 'https://api.skyone.co.nz/exp/graph',
request: {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
data({ date } = {}) {
return ({
query: `{
experience(appId: TV_GUIDE_WEB) {
channelGroup(id: "4b7LA20J4iHaThwky9iVqn") {
id
title
channels {
... on LinearChannel {
id
title
number
tileImage {
uri
}
slotsForDay(date: "${dayjs.tz(date || dayjs(), timezone).format('YYYY-MM-DD')}") {
slots {
id
startMs
endMs
live
nzBsaRatingString
programme {
... on Episode {
id
title
synopsis
}
... on Movie {
id
title
}
... on PayPerViewEventProgram {
id
title
}
}
}
}
}
}
}
}
}`
})
}
},
parser({ content }) {
parser({ content, channel }) {
let programs = []
const items = parseItems(content)
const items = parseItems(content, channel)
items.forEach(item => {
programs.push({
title: item.title,
description: item.synopsis,
category: item.genres,
rating: parseRating(item),
start: dayjs(parseInt(item.start)),
stop: dayjs(parseInt(item.end))
@@ -31,19 +85,41 @@ module.exports = {
.then(r => r.data)
.catch(console.log)
return data.channels.map(item => {
return data.map(item => {
return {
lang: 'en',
site_id: parseInt(item.number).toString(),
name: item.name
name: item.sort
}
})
}
}
function parseItems(content) {
const data = JSON.parse(content)
return data && data.events && Array.isArray(data.events) ? data.events : []
function parseItems(content, channel) {
if (!channel?.site_id) return []
let data
try {
data = JSON.parse(content)
} catch {
return []
}
const channels = data?.data?.experience?.channelGroup?.channels
if (!Array.isArray(channels)) return []
const channelData = channels.find(i => i.number === parseInt(channel.site_id))
if (!channelData?.slotsForDay?.slots) return []
return channelData.slotsForDay.slots.map(slot => ({
title: slot.programme.title || null,
synopsis: slot.programme.synopsis || null,
rating: slot.nzBsaRatingString || null,
start: slot.startMs,
end: slot.endMs
}))
}
function parseRating(item) {

View File

@@ -1,60 +1,74 @@
const { parser, url } = require('./sky.co.nz.config.js')
const { parser, url, request } = require('./sky.co.nz.config.js')
const fs = require('fs')
const path = require('path')
const dayjs = require('dayjs')
const utc = require('dayjs/plugin/utc')
const tz = require('dayjs/plugin/timezone')
dayjs.extend(utc)
dayjs.extend(tz)
const date = dayjs.utc('2023-01-21', 'YYYY-MM-DD').startOf('d')
const channel = {
site_id: '36',
xmltv_id: 'SkyMoviesFamily.nz'
site_id: '1',
xmltv_id: 'TVNZ 1'
}
it('can generate valid url', () => {
expect(url({ date, channel })).toBe(
'https://web-epg.sky.co.nz/prod/epgs/v1?channelNumber=36&start=1674259200000&end=1674345600000&limit=20000'
)
expect(url).toBe('https://api.skyone.co.nz/exp/graph')
})
it('can generate valid request method', () => {
expect(request.method).toBe('POST')
})
it('can parse response', () => {
const content = fs.readFileSync(path.resolve(__dirname, '__data__/content.json'))
const result = parser({ content }).map(p => {
const result = parser({ content, channel }).map(p => {
p.start = p.start.toJSON()
p.stop = p.stop.toJSON()
return p
})
expect(result[0]).toMatchObject({
title: 'Sing 2',
title: 'Hard Quiz',
description:
"Animated: Buster Moon and his friends must persuade the world's most reclusive rock star to help launch their most dazzling extravaganza yet. Voices Of: Matthew McConaughey, Reese Witherspoon (2021)",
category: ['Animated'],
"What do King Henry VII, Shaquille O'Neal, dinosaurs and The Adventures of Priscilla, Queen of the Desert have in common? They're all expert topics on tonight's #HardQuiz!",
rating: { system: 'OFLC', value: 'PG' },
start: '2023-01-20T23:41:00.000Z',
stop: '2023-01-21T01:28:00.000Z'
start: '2025-12-12T10:40:00.000Z',
stop: '2025-12-12T11:15:00.000Z'
})
expect(result[5]).toMatchObject({
title: 'Harry Potter and the Goblet of Fire',
expect(result[33]).toMatchObject({
title: 'Obituary',
description:
'Adventure: Harry is selected to represent Hogwarts at a legendary and dangerous wizardry competition between three schools of magic. Stars: Daniel Radcliffe, Rupert Grint (2005)',
category: ['Action/Adventure'],
rating: { system: 'OFLC', value: 'M-V' },
start: '2023-01-21T07:42:00.000Z',
stop: '2023-01-21T10:13:00.000Z'
'Season Finale: When Ward reveals what really happened the night Maria Riedle was killed, Elvira sets about framing Hughie for the crime. S1 E6',
rating: { system: 'OFLC', value: '16' },
start: '2025-12-13T10:55:00.000Z',
stop: '2025-12-13T11:50:00.000Z'
})
})
// Not easy to mock this case, as it's the same repeated message (for all channels ?)
// with the time space in the message. Only what doesn't change is provided, but will still pass the test out.
it('can handle empty guide', () => {
const result = parser(
{
content: `{
"code": "DATE_FORMAT_ERROR",
"description": "DateFormat error",
"message": "Unparseable date: x"
}`
},
const result = parser({
content: `{
"locations": [
{
"line": 14,
"column": 11
}
],
"path": [
"experience",
"channelGroup",
"channels",
0,
"slotsForDay"
],
"extensions": {
"classification": "DataFetchingException"
}
}`,
channel
)
})
expect(result).toMatchObject([])
})

File diff suppressed because it is too large Load Diff