Initial Commit

This commit is contained in:
2023-09-10 21:48:48 +02:00
commit 227cca7d31
791 changed files with 165200 additions and 0 deletions

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
{"imageVersion":"a1ad5w","eventId":"crid:~~2F~~2Fgn.tv~~2F817615~~2FSH010806510000~~2F144222201,imi:ea187e3432c4a98b5ea45bcc5525c7a93c77b47b","channelId":"NL_000001_019401","title":"NOS Journaal","startTime":1666914000,"endTime":1666915620,"mergedId":"817615|nl","seriesId":"crid:~~2F~~2Fgn.tv~~2F123456789~~2FSH010806510000","parentSeriesId":"crid:~~2F~~2Fgn.tv~~2F817615~~2FSH010806510000","seasonNumber":6510000,"episodeNumber":144222201,"shortDescription":"Met het laatste nieuws, gebeurtenissen van nationaal en internationaal belang en de weersverwachting voor de avond en komende dagen.","longDescription":"Met het laatste nieuws, gebeurtenissen van nationaal en internationaal belang en de weersverwachting voor de avond en komende dagen.","actors":["Malou Petter","Mark Visser","Rob Trip","Jeroen Overbeek","Simone Weimans","Annechien Steenhuizen","Jeroen Tjepkema","Saïda Maggé","Winfried Baijens"],"audioLanguages":[{"lang":"nl"}],"captionLanguages":[{"lang":"nl"}],"countryOfOrigin":"NL","genres":["Nieuws"],"seriesPremiereAirings":true}

View File

@@ -0,0 +1,147 @@
<?xml version="1.0" encoding="UTF-8"?>
<site site="ziggogo.tv">
<channels>
<channel lang="nl" xmltv_id="100NLTV.nl" site_id="NL_000133_019271">100% NL TV</channel>
<channel lang="nl" xmltv_id="192TV.nl" site_id="NL_000134_019296">192 TV</channel>
<channel lang="nl" xmltv_id="24Kitchen.nl" site_id="NL_000024_019701">24 Kitchen</channel>
<channel lang="en" xmltv_id="2MInternational.ma" site_id="NL_000051_019047">2M Monde</channel>
<channel lang="de" xmltv_id="ARTEFrance.fr" site_id="NL_000046_020053">ARTE France</channel>
<channel lang="nl" xmltv_id="AT5.nl" site_id="NL_000149_019210">AT5</channel>
<channel lang="nl" xmltv_id="ATVAvrupa.tr" site_id="NL_000163_019272">ATV Avrupa</channel>
<channel lang="en" xmltv_id="AlJazeeraEnglish.qa" site_id="NL_000118_019350">Al Jazeera English</channel>
<channel lang="nl" xmltv_id="AnimalPlanetNetherlands.nl" site_id="NL_000078_020002">Animal Planet Europe</channel>
<channel lang="en" xmltv_id="BBCEntertainment.uk" site_id="NL_000044_019491">BBC Entertainment Europe</channel>
<channel lang="nl" xmltv_id="BBCFirstBenelux.uk" site_id="NL_000022_019328">BBC First Nederland</channel>
<channel lang="en" xmltv_id="BBCOneEngland.uk" site_id="NL_000040_020022">BBC One</channel>
<channel lang="en" xmltv_id="BBCTwoEngland.uk" site_id="NL_000041_019369">BBC Two</channel>
<channel lang="en" xmltv_id="BBCWorldNewsEurope.uk" site_id="NL_000116_019005">BBC World News Europe</channel>
<channel lang="nl" xmltv_id="BabyTV.uk" site_id="NL_000091_019490">Baby TV Europe</channel>
<channel lang="nl" xmltv_id="BoomerangCEE.us" site_id="NL_000090_019492">Boomerang Central &amp; Eastern Europe</channel>
<!-- <channel lang="nl" xmltv_id="CBSRealityEMEA.uk" site_id="NL_000066_019291">CBS Reality Europe</channel> -->
<channel lang="en" xmltv_id="CGTN.cn" site_id="NL_000120_020046">CGTN</channel>
<channel lang="en" xmltv_id="CNBCEurope.uk" site_id="NL_000119_019481">CNBC Europe</channel>
<channel lang="en" xmltv_id="CNNInternationalEurope.us" site_id="NL_000115_019447">CNN International Europe</channel>
<channel lang="nl" xmltv_id="Canvas.be" site_id="NL_000032_019226">Canvas</channel>
<channel lang="nl" xmltv_id="CartoonNetworkNetherlands.nl" site_id="NL_000088_019251">Cartoon Network Nederland</channel>
<channel lang="nl" xmltv_id="ComedyCentralExtraNetherlands.nl" site_id="NL_000059_019252">Comedy Central Extra Netherlands</channel>
<channel lang="nl" xmltv_id="ComedyCentralNetherlands.nl" site_id="NL_000015_019166">Comedy Central Nederland</channel>
<channel lang="nl" xmltv_id="CrimePlusInvestigationUK.uk" site_id="NL_000057_019493">Crime + Investigation UK</channel>
<channel lang="nl" xmltv_id="DiscoveryChannelNetherlands.nl" site_id="NL_000017_019222">Discovery Channel Nederland</channel>
<channel lang="nl" xmltv_id="DiscoveryScience.us" site_id="NL_000075_019246">Discovery Science</channel>
<channel lang="nl" xmltv_id="DisneyChannelNetherlands.nl" site_id="NL_000027_019330">Disney Channel Nederland</channel>
<channel lang="nl" xmltv_id="Dusk.nl" site_id="NL_000174_019311">Dusk</channel>
<channel lang="nl" xmltv_id="EEurope.us" site_id="NL_000061_019331">E! Europe</channel>
<channel lang="nl" xmltv_id="ESPN2Netherlands.nl" site_id="NL_000108_019561">ESPN 2 Nederland</channel>
<channel lang="nl" xmltv_id="ESPN3Netherlands.nl" site_id="NL_000109_019464">ESPN 3 Nederland</channel>
<channel lang="nl" xmltv_id="ESPNNetherlands.nl" site_id="NL_000107_019441">ESPN Nederland</channel>
<channel lang="nl" xmltv_id="ESPN4Netherlands.nl" site_id="NL_000110_019562">ESPN 4 Netherlands</channel>
<channel lang="nl" xmltv_id="Een.be" site_id="NL_000031_019362">Één</channel>
<channel lang="tr" xmltv_id="EuroD.tr" site_id="NL_000157_019270">Euro D</channel>
<channel lang="tr" xmltv_id="EuroStar.tr" site_id="NL_000158_019266">EuroStar</channel>
<channel lang="en" xmltv_id="EuronewsEnglish.fr" site_id="NL_000117_019351">EuroNews English</channel>
<channel lang="nl" xmltv_id="Eurosport1.fr" site_id="NL_000020_019432">Eurosport 1</channel>
<channel lang="nl" xmltv_id="Eurosport2.fr" site_id="NL_000103_019581">Eurosport 2</channel>
<channel lang="nl" xmltv_id="EvilAngelTV.us" site_id="NL_000172_019302">Evil Angel TV</channel>
<channel lang="nl" xmltv_id="ExtremeSportsChannelEurope.nl" site_id="NL_000104_019292">Extreme Sports Channel</channel>
<channel lang="nl" xmltv_id="Family7.nl" site_id="NL_000081_020051">Family7</channel>
<channel lang="en" xmltv_id="FashionTVEurope.fr" site_id="NL_000067_020024">FashionTV Europe</channel>
<channel lang="nl" xmltv_id="Film1Action.nl" site_id="NL_000053_019653">Film 1 Action</channel>
<channel lang="nl" xmltv_id="Film1Drama.nl" site_id="NL_000055_019645">Film 1 Drama</channel>
<channel lang="nl" xmltv_id="Film1Family.nl" site_id="NL_000054_019654">Film 1 Family</channel>
<channel lang="nl" xmltv_id="Film1Premiere.nl" site_id="NL_000052_019655">Film 1 Premiere</channel>
<channel lang="nl" xmltv_id="FoxNetherlands.nl" site_id="NL_000011_019563">Fox NL</channel>
<channel lang="tr" xmltv_id="Haberturk.tr" site_id="NL_000159_019273">Habertürk</channel>
<channel lang="nl" xmltv_id="HistoryNetherlands.nl" site_id="NL_000028_019705">History Benelux</channel>
<channel lang="nl" xmltv_id="HorseCountryTV.uk" site_id="NL_000069_020071">Horse &amp; Country TV</channel>
<channel lang="nl" xmltv_id="InvestigationDiscoveryEurope.us" site_id="NL_000058_019381">Investigation Discovery Europe</channel>
<channel lang="nl" xmltv_id="Ketnet.be" site_id="NL_000033_019025">Ketnet</channel>
<channel lang="nl" xmltv_id="L1TV.nl" site_id="NL_000148_019144">L1 TV</channel>
<channel lang="nl" xmltv_id="LoveNature.ca" site_id="NL_000191_019261">Love Nature</channel>
<channel lang="en" xmltv_id="MTV80s.uk" site_id="NL_000128_019254">MTV 80s</channel>
<channel lang="en" xmltv_id="MTV90s.uk" site_id="NL_000123_019304">MTV 90s</channel>
<channel lang="nl" xmltv_id="MTVHitsEurope.uk" site_id="NL_000126_019486">MTV Hits Europe</channel>
<channel lang="nl" xmltv_id="MTVLive.uk" site_id="NL_000135_020029">MTV Live HD</channel>
<channel lang="nl" xmltv_id="MTVNetherlands.nl" site_id="NL_000023_019363">MTV NL</channel>
<channel lang="it" xmltv_id="MediasetItalia.it" site_id="NL_000048_020052">Mediaset Italia</channel>
<channel lang="nl" xmltv_id="MeidenvanHollandHard.nl" site_id="NL_000175_019312">Meiden van Holland Hard</channel>
<channel lang="nl" xmltv_id="Mezzo.fr" site_id="NL_000130_019274">Mezzo</channel>
<channel lang="en" xmltv_id="MyZenTV.fr" site_id="NL_000068_020055">MyZen TV</channel>
<channel lang="de" xmltv_id="NDRFernsehenHamburg.de" site_id="NL_000037_019186">NDR Fernsehen Hamburg</channel>
<channel lang="nl" xmltv_id="NH.nl" site_id="NL_000142_019211">NH Nieuws</channel>
<channel lang="nl" xmltv_id="NPO1.nl" site_id="NL_000001_019401">NPO 1</channel>
<channel lang="nl" xmltv_id="NPO1extra.nl" site_id="NL_000063_019307">NPO 1 Extra</channel>
<channel lang="nl" xmltv_id="NPO2.nl" site_id="NL_000002_019402">NPO 2</channel>
<channel lang="nl" xmltv_id="NPO2extra.nl" site_id="NL_000080_019484">NPO 2 Extra</channel>
<channel lang="nl" xmltv_id="NPO3.nl" site_id="NL_000003_019405">NPO 3</channel>
<channel lang="nl" xmltv_id="NPOPolitiek.nl" site_id="NL_000114_019151">NPO Politiek</channel>
<channel lang="nl" xmltv_id="NationalGeographicNetherlands.nl" site_id="NL_000018_019221">National Geographic Nederland</channel>
<channel lang="nl" xmltv_id="NationalGeographicWildNetherlands.nl" site_id="NL_000077_019706">National Geographic Wild Europe</channel>
<channel lang="nl" xmltv_id="NET5.nl" site_id="NL_000009_019024">Net 5</channel>
<channel lang="nl" xmltv_id="NickJrNetherlands.nl" site_id="NL_000087_019303">Nick Jr</channel>
<channel lang="nl" xmltv_id="NickMusicNetherlands.nl" site_id="NL_000085_019494">NickMusic</channel>
<channel lang="nl" xmltv_id="NicktoonsNetherlands.nl" site_id="NL_000084_019301">NickToons</channel>
<channel lang="nl" xmltv_id="NickelodeonNetherlands.nl" site_id="NL_000029_019046">Nickelodeon</channel>
<channel lang="nl" xmltv_id="ONS.nl" site_id="NL_000030_019152">ONS</channel>
<channel lang="nl" xmltv_id="OmroepBrabant.nl" site_id="NL_000147_019593">Omroep Brabant TV</channel>
<channel lang="nl" xmltv_id="OmroepFlevoland.nl" site_id="NL_000141_019209">Omroep Flevoland TV</channel>
<channel lang="nl" xmltv_id="OmroepZeeland.nl" site_id="NL_000146_019213">Omroep Zeeland TV</channel>
<channel lang="nl" xmltv_id="OmropFryslan.nl" site_id="NL_000137_019214">Omrop Fryslân TV</channel>
<channel lang="nl" xmltv_id="OUTtv.nl" site_id="NL_000064_019275">Out TV</channel>
<channel lang="nl" xmltv_id="PassieXXX.nl" site_id="NL_000173_019305">Passie XXX</channel>
<channel lang="nl" xmltv_id="PebbleTV.nl" site_id="NL_000086_020067">Pebble TV</channel>
<channel lang="en" xmltv_id="PenthouseGold.us" site_id="NL_000171_019313">Penthouse Gold</channel>
<channel lang="de" xmltv_id="RTLGermany.de" site_id="NL_000038_019063">RTL</channel>
<channel lang="nl" xmltv_id="RTL4.nl" site_id="NL_000004_019461">RTL 4</channel>
<channel lang="nl" xmltv_id="RTL5.nl" site_id="NL_000005_019462">RTL 5</channel>
<channel lang="nl" xmltv_id="RTL7.nl" site_id="NL_000007_019181">RTL 7</channel>
<channel lang="nl" xmltv_id="RTL8.nl" site_id="NL_000010_019422">RTL 8</channel>
<channel lang="nl" xmltv_id="RTLCrimeNetherlands.nl" site_id="NL_000056_019483">RTL Crime Nederland</channel>
<channel lang="nl" xmltv_id="RTLLounge.nl" site_id="NL_000072_019298">RTL Lounge</channel>
<channel lang="nl" xmltv_id="RTLTelekids.nl" site_id="NL_000093_019299">RTL Telekids</channel>
<channel lang="nl" xmltv_id="RTLZ.nl" site_id="NL_000012_019191">RTL Z</channel>
<channel lang="nl" xmltv_id="RTVUtrecht.nl" site_id="NL_000143_019207">RTV Utrecht</channel>
<channel lang="nl" xmltv_id="SBS6.nl" site_id="NL_000006_019130">SBS 6</channel>
<channel lang="nl" xmltv_id="SBS9.nl" site_id="NL_000019_019671">SBS 9</channel>
<channel lang="en" xmltv_id="SonyEntertainmentTelevisionAsia.uk" site_id="NL_000155_020073">SET Asia</channel>
<channel lang="de" xmltv_id="SAT1.de" site_id="NL_000039_019153">Sat. 1 Deutschland</channel>
<channel lang="en" xmltv_id="ShortsTV.uk" site_id="NL_000060_019297">Shorts TV</channel>
<channel lang="tr" xmltv_id="ShowTurk.tr" site_id="NL_000156_020072">Show Turk</channel>
<channel lang="nl" xmltv_id="Slam.nl" site_id="NL_000125_019294">Slam!</channel>
<channel lang="nl" xmltv_id="SpikeNetherlands.nl" site_id="NL_000016_019388">Spike Nederland</channel>
<channel lang="nl" xmltv_id="StingrayClassica.ca" site_id="NL_000129_020044">Stingray Classica</channel>
<channel lang="nl" xmltv_id="StingrayDJAZZ.ca" site_id="NL_000131_019248">Stingray Djazz</channel>
<channel lang="nl" xmltv_id="StingrayLiteTV.ca" site_id="NL_000127_019295">Stingray LiteTV</channel>
<channel lang="nl" xmltv_id="TLCNetherlands.nl" site_id="NL_000021_019566">TLC Nederland</channel>
<channel lang="tr" xmltv_id="TRTCocuk.tr" site_id="NL_000162_019250">TRT Çocuk</channel>
<channel lang="tr" xmltv_id="TRTMuzik.tr" site_id="NL_000164_020070">TRT Müzik</channel>
<channel lang="tr" xmltv_id="TRTTurk.tr" site_id="NL_000050_019353">TRT Türk</channel>
<channel lang="nl" xmltv_id="TV538.nl" site_id="NL_000122_019495">TV 538</channel>
<channel lang="nl" xmltv_id="TV5MondeEurope.fr" site_id="NL_000045_019354">TV5Monde Europe</channel>
<channel lang="tr" xmltv_id="TV8International.tr" site_id="NL_000160_019277">TV 8 International</channel>
<channel lang="nl" xmltv_id="RTVDrenthe.nl" site_id="NL_000138_019591">TV Drenthe</channel>
<channel lang="es" xmltv_id="TVEInternacionalEuropeAsia.es" site_id="NL_000047_019428">TVE Internacional Europa</channel>
<channel lang="nl" xmltv_id="TVGelderland.nl" site_id="NL_000140_019594">TV Gelderland</channel>
<channel lang="nl" xmltv_id="TVNoord.nl" site_id="NL_000136_019583">TV Noord</channel>
<channel lang="nl" xmltv_id="TVOost.be" site_id="NL_000139_019592">TV Oost</channel>
<channel lang="nl" xmltv_id="TVOrange.nl" site_id="NL_000132_019278">TV Oranje</channel>
<channel lang="nl" xmltv_id="TVRijnmond.nl" site_id="NL_000145_019208">TV Rijnmond</channel>
<channel lang="nl" xmltv_id="TVWest.nl" site_id="NL_000144_019212">TV West</channel>
<channel lang="nl" xmltv_id="TommyTeleshopping.nl" site_id="NL_000193_019342">Tommy Teleshopping</channel>
<channel lang="en" xmltv_id="UtsavGold.in" site_id="NL_000151_020074">Utsav Gold</channel>
<channel lang="en" xmltv_id="UtsavPlus.uk" site_id="NL_000150_020075">Utsav Plus</channel>
<channel lang="nl" xmltv_id="Veronica.nl" site_id="NL_000008_019442">Veronica</channel>
<channel lang="en" xmltv_id="XMO.nl" site_id="NL_000176_019308">X-MO</channel>
<channel lang="nl" xmltv_id="XITE.nl" site_id="NL_000025_019708">Xite</channel>
<channel lang="de" xmltv_id="ZDF.de" site_id="NL_000035_020028">ZDF</channel>
<channel lang="en" xmltv_id="ZeeCinema.in" site_id="NL_000153_020076">Zee Cinema</channel>
<channel lang="en" xmltv_id="ZeeTVUK.uk" site_id="NL_000152_020077">Zee TV UK</channel>
<channel lang="nl" xmltv_id="ZiggoSport.nl" site_id="NL_000014_019661">Ziggo Sport</channel>
<channel lang="nl" xmltv_id="ZiggoSportDocu.nl" site_id="NL_000098_019255">Ziggo Sport Docu</channel>
<channel lang="nl" xmltv_id="ZiggoSportGolf.nl" site_id="NL_000096_019382">Ziggo Sport Golf</channel>
<channel lang="nl" xmltv_id="ZiggoSportRacing.nl" site_id="NL_000097_019370">Ziggo Sport Racing</channel>
<channel lang="nl" xmltv_id="ZiggoSportSelect.nl" site_id="NL_000094_019321">Ziggo Sport Select</channel>
<channel lang="nl" xmltv_id="ZiggoSportTennis.nl" site_id="NL_000099_019256">Ziggo Sport Tennis</channel>
<channel lang="nl" xmltv_id="ZiggoSportVoetbal.nl" site_id="NL_000095_019371">Ziggo Sport Voetbal</channel>
<channel lang="en" xmltv_id="ZingUK.uk" site_id="NL_000154_020078">Zing UK</channel>
</channels>
</site>

View File

@@ -0,0 +1,133 @@
const axios = require('axios')
const dayjs = require('dayjs')
const API_ENDPOINT = `https://static.spark.ziggogo.tv/eng/web/epg-service-lite`
module.exports = {
site: 'ziggogo.tv',
days: 2,
request: {
cache: {
ttl: 60 * 60 * 1000 // 1 hour
}
},
url: function ({ date, channel }) {
return `${API_ENDPOINT}/nl/${channel.lang}/events/segments/${date.format('YYYYMMDDHHmmss')}`
},
async parser({ content, channel, date }) {
let programs = []
let items = parseItems(content, channel)
if (!items.length) return programs
const promises = [
axios.get(
`${API_ENDPOINT}/nl/${channel.lang}/events/segments/${date
.add(6, 'h')
.format('YYYYMMDDHHmmss')}`,
{
responseType: 'arraybuffer'
}
),
axios.get(
`${API_ENDPOINT}/nl/${channel.lang}/events/segments/${date
.add(12, 'h')
.format('YYYYMMDDHHmmss')}`,
{
responseType: 'arraybuffer'
}
),
axios.get(
`${API_ENDPOINT}/nl/${channel.lang}/events/segments/${date
.add(18, 'h')
.format('YYYYMMDDHHmmss')}`,
{
responseType: 'arraybuffer'
}
)
]
await Promise.allSettled(promises)
.then(results => {
results.forEach(r => {
if (r.status === 'fulfilled') {
const parsed = parseItems(r.value.data, channel)
items = items.concat(parsed)
}
})
})
.catch(console.error)
for (let item of items) {
const detail = await loadProgramDetails(item, channel)
programs.push({
title: item.title,
description: detail.longDescription,
category: detail.genres,
actors: detail.actors,
season: parseSeason(detail),
episode: parseEpisode(detail),
start: parseStart(item),
stop: parseStop(item)
})
}
return programs
},
async channels() {
const data = await axios
.get(
`https://prod.spark.ziggogo.tv/eng/web/linear-service/v2/channels?cityId=65535&language=en&productClass=Orion-DASH`
)
.then(r => r.data)
.catch(console.log)
return data.channels.map(item => {
return {
lang: 'be',
site_id: item.id,
name: item.name
}
})
}
}
async function loadProgramDetails(item, channel) {
if (!item.id) return {}
const url = `https://prod.spark.ziggogo.tv/eng/web/linear-service/v2/replayEvent/${item.id}?returnLinearContent=true&language=${channel.lang}`
const data = await axios
.get(url)
.then(r => r.data)
.catch(console.log)
return data || {}
}
function parseStart(item) {
return dayjs.unix(item.startTime)
}
function parseStop(item) {
return dayjs.unix(item.endTime)
}
function parseItems(content, channel) {
if (!content) return []
const data = JSON.parse(content)
if (!data || !Array.isArray(data.entries)) return []
const channelData = data.entries.find(e => e.channelId === channel.site_id)
if (!channelData) return []
return Array.isArray(channelData.events) ? channelData.events : []
}
function parseSeason(detail) {
if (!detail.seasonNumber) return null
if (String(detail.seasonNumber).length > 2) return null
return detail.seasonNumber
}
function parseEpisode(detail) {
if (!detail.episodeNumber) return null
if (String(detail.episodeNumber).length > 3) return null
return detail.episodeNumber
}

View File

@@ -0,0 +1,98 @@
// npm run channels:parse -- --config=./sites/ziggogo.tv/ziggogo.tv.config.js --output=./sites/ziggogo.tv/ziggogo.tv.channels.xml
// npx epg-grabber --config=sites/ziggogo.tv/ziggogo.tv.config.js --channels=sites/ziggogo.tv/ziggogo.tv.channels.xml --output=guide.xml --days=2
const { parser, url } = require('./ziggogo.tv.config.js')
const fs = require('fs')
const path = require('path')
const axios = require('axios')
const dayjs = require('dayjs')
const utc = require('dayjs/plugin/utc')
const customParseFormat = require('dayjs/plugin/customParseFormat')
dayjs.extend(customParseFormat)
dayjs.extend(utc)
jest.mock('axios')
const date = dayjs.utc('2022-10-28', 'YYYY-MM-DD').startOf('d')
const channel = {
site_id: 'NL_000001_019401',
xmltv_id: 'NPO1.nl',
lang: 'nl'
}
it('can generate valid url', () => {
expect(url({ date, channel })).toBe(
'https://static.spark.ziggogo.tv/eng/web/epg-service-lite/nl/nl/events/segments/20221028000000'
)
})
it('can parse response', async () => {
const content = fs.readFileSync(path.resolve(__dirname, '__data__/content_0000.json'))
axios.get.mockImplementation(url => {
if (
url ===
'https://static.spark.ziggogo.tv/eng/web/epg-service-lite/nl/nl/events/segments/20221028060000'
) {
return Promise.resolve({
data: fs.readFileSync(path.resolve(__dirname, '__data__/content_0600.json'))
})
} else if (
url ===
'https://static.spark.ziggogo.tv/eng/web/epg-service-lite/nl/nl/events/segments/20221028120000'
) {
return Promise.resolve({
data: fs.readFileSync(path.resolve(__dirname, '__data__/content_1200.json'))
})
} else if (
url ===
'https://static.spark.ziggogo.tv/eng/web/epg-service-lite/nl/nl/events/segments/20221028180000'
) {
return Promise.resolve({
data: fs.readFileSync(path.resolve(__dirname, '__data__/content_1800.json'))
})
} else if (
url ===
'https://prod.spark.ziggogo.tv/eng/web/linear-service/v2/replayEvent/crid:~~2F~~2Fgn.tv~~2F817615~~2FSH010806510000~~2F144222201,imi:ea187e3432c4a98b5ea45bcc5525c7a93c77b47b?returnLinearContent=true&language=nl'
) {
return Promise.resolve({
data: JSON.parse(fs.readFileSync(path.resolve(__dirname, '__data__/program.json')))
})
} else {
return Promise.resolve({ data: '' })
}
})
let results = await parser({ content, channel, date })
results = results.map(p => {
p.start = p.start.toJSON()
p.stop = p.stop.toJSON()
return p
})
expect(results[0]).toMatchObject({
start: '2022-10-27T23:40:00.000Z',
stop: '2022-10-28T00:07:00.000Z',
title: 'NOS Journaal',
description:
'Met het laatste nieuws, gebeurtenissen van nationaal en internationaal belang en de weersverwachting voor de avond en komende dagen.',
category: ['Nieuws'],
actors: [
'Malou Petter',
'Mark Visser',
'Rob Trip',
'Jeroen Overbeek',
'Simone Weimans',
'Annechien Steenhuizen',
'Jeroen Tjepkema',
'Saïda Maggé',
'Winfried Baijens'
]
})
})
it('can handle empty guide', async () => {
let results = await parser({ content: ``, channel, date })
expect(results).toMatchObject([])
})