Initial Commit
This commit is contained in:
1
sites/ziggogo.tv/__data__/content_0000.json
Normal file
1
sites/ziggogo.tv/__data__/content_0000.json
Normal file
File diff suppressed because one or more lines are too long
1
sites/ziggogo.tv/__data__/content_0600.json
Normal file
1
sites/ziggogo.tv/__data__/content_0600.json
Normal file
File diff suppressed because one or more lines are too long
1
sites/ziggogo.tv/__data__/content_1200.json
Normal file
1
sites/ziggogo.tv/__data__/content_1200.json
Normal file
File diff suppressed because one or more lines are too long
1
sites/ziggogo.tv/__data__/content_1800.json
Normal file
1
sites/ziggogo.tv/__data__/content_1800.json
Normal file
File diff suppressed because one or more lines are too long
1
sites/ziggogo.tv/__data__/program.json
Normal file
1
sites/ziggogo.tv/__data__/program.json
Normal 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}
|
||||
147
sites/ziggogo.tv/ziggogo.tv.channels.xml
Normal file
147
sites/ziggogo.tv/ziggogo.tv.channels.xml
Normal 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 & 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 & 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>
|
||||
133
sites/ziggogo.tv/ziggogo.tv.config.js
Normal file
133
sites/ziggogo.tv/ziggogo.tv.config.js
Normal 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
|
||||
}
|
||||
98
sites/ziggogo.tv/ziggogo.tv.test.js
Normal file
98
sites/ziggogo.tv/ziggogo.tv.test.js
Normal 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([])
|
||||
})
|
||||
Reference in New Issue
Block a user