mirror of
https://github.com/iptv-org/epg.git
synced 2025-05-10 00:50:09 -04:00
commit
3c9360f15b
3 changed files with 394 additions and 0 deletions
108
sites/ziggogo.tv/ziggogo.tv.config.js
Normal file
108
sites/ziggogo.tv/ziggogo.tv.config.js
Normal file
|
@ -0,0 +1,108 @@
|
|||
const axios = require('axios')
|
||||
const dayjs = require('dayjs')
|
||||
|
||||
const API_ENDPOINT = `https://obo-prod.oesp.ziggogo.tv/oesp/v4/NL/nld/web`
|
||||
|
||||
module.exports = {
|
||||
site: 'ziggogo.tv',
|
||||
url: function ({ date }) {
|
||||
return `${API_ENDPOINT}/programschedules/${date.format('YYYYMMDD')}/1`
|
||||
},
|
||||
async parser({ content, channel, date }) {
|
||||
let programs = []
|
||||
let items = parseItems(content, channel)
|
||||
if (!items.length) return programs
|
||||
const d = date.format('YYYYMMDD')
|
||||
const promises = [
|
||||
axios.get(`${API_ENDPOINT}/programschedules/${d}/2`),
|
||||
axios.get(`${API_ENDPOINT}/programschedules/${d}/3`),
|
||||
axios.get(`${API_ENDPOINT}/programschedules/${d}/4`)
|
||||
]
|
||||
await Promise.allSettled(promises)
|
||||
.then(results => {
|
||||
results.forEach(r => {
|
||||
if (r.status === 'fulfilled') {
|
||||
items = items.concat(parseItems(r.value.data, channel))
|
||||
}
|
||||
})
|
||||
})
|
||||
.catch(console.error)
|
||||
// items.forEach(item => {
|
||||
for (let item of items) {
|
||||
const detail = await loadProgramDetails(item)
|
||||
programs.push({
|
||||
title: item.t,
|
||||
description: parseDescription(detail),
|
||||
category: parseCategory(detail),
|
||||
season: parseSeason(detail),
|
||||
episode: parseEpisode(detail),
|
||||
start: parseStart(item),
|
||||
stop: parseStop(item)
|
||||
})
|
||||
}
|
||||
//)
|
||||
|
||||
return programs
|
||||
},
|
||||
async channels() {
|
||||
const data = await axios
|
||||
.get(`${API_ENDPOINT}/channels`)
|
||||
.then(r => r.data)
|
||||
.catch(console.log)
|
||||
|
||||
return data.channels.map(item => {
|
||||
return {
|
||||
lang: 'be',
|
||||
site_id: item.id.replace('lgi-nl-prod-master:65535-', ''),
|
||||
name: item.title
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
async function loadProgramDetails(item) {
|
||||
if (!item.i) return {}
|
||||
const url = `${API_ENDPOINT}/listings/${item.i}`
|
||||
const data = await axios
|
||||
.get(url)
|
||||
.then(r => r.data)
|
||||
.catch(console.log)
|
||||
return data || {}
|
||||
}
|
||||
|
||||
function parseStart(item) {
|
||||
return dayjs(item.s)
|
||||
}
|
||||
|
||||
function parseStop(item) {
|
||||
return dayjs(item.e)
|
||||
}
|
||||
|
||||
function parseItems(content, channel) {
|
||||
const data = typeof content === 'string' ? JSON.parse(content) : content
|
||||
if (!data || !Array.isArray(data.entries)) return []
|
||||
const entity = data.entries.find(e => e.o === `lgi-nl-prod-master:${channel.site_id}`)
|
||||
|
||||
return entity ? entity.l : []
|
||||
}
|
||||
|
||||
function parseDescription(detail){
|
||||
return detail.program.longDescription || null
|
||||
}
|
||||
|
||||
function parseCategory(detail) {
|
||||
let categories = []
|
||||
detail.program.categories.forEach(category => {
|
||||
categories.push(category.title)
|
||||
});
|
||||
return categories
|
||||
}
|
||||
|
||||
function parseSeason(detail) {
|
||||
return detail.program.seriesNumber || null
|
||||
}
|
||||
|
||||
function parseEpisode(detail) {
|
||||
return detail.program.seriesEpisodeNumber || null
|
||||
}
|
||||
|
139
sites/ziggogo.tv/ziggogo.tv.test.js
Normal file
139
sites/ziggogo.tv/ziggogo.tv.test.js
Normal file
|
@ -0,0 +1,139 @@
|
|||
// npm run channels:parse -- --config=./sites/ziggogo.tv/ziggogo.tv.config.js --output=./sites/ziggogo.tv/ziggogo.tv_nl.channels.xml
|
||||
// npx epg-grabber --config=sites/ziggogo.tv/ziggogo.tv.config.js --channels=sites/ziggogo.tv/ziggogo.tv_nl.channels.xml --output=guide.xml --days=2
|
||||
|
||||
const { parser, url } = require('./ziggogo.tv.config.js')
|
||||
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-03-18', 'YYYY-MM-DD').startOf('d')
|
||||
const channel = {
|
||||
site_id: 'NL_000001_019401',
|
||||
xmltv_id: 'NPO1.nl'
|
||||
}
|
||||
|
||||
it('can generate valid url', () => {
|
||||
expect(url({ date })).toBe(
|
||||
'https://obo-prod.oesp.ziggogo.tv/oesp/v4/NL/nld/web/programschedules/20220318/1'
|
||||
)
|
||||
})
|
||||
|
||||
it('can parse response', done => {
|
||||
const content = `{"entryCount":372,"totalResults":372,"updated":1647612646768,"expires":1647613819245,"title":"EPG","periods":4,"periodStartTime":1647558000000,"periodEndTime":1647579600000,"entries":[{"o":"lgi-nl-prod-master:NL_000001_019401","l":[{"i":"crid:~~2F~~2Fgn.tv~~2F19262235~~2FSH037248380000~~2F114418219,imi:9622001b4e91bba1bbee1720c88e67e3d58d6426","t":"NOS Journaal Laat","s":1647557820000,"e":1647559020000,"c":"lgi-nl-prod-master:genre-22","a":false,"r":true,"rm":true,"rs":0,"re":604800,"rst":"cloud","ra":false,"ad":[],"sl":[]}]}]}`
|
||||
|
||||
axios.get.mockImplementation(url => {
|
||||
if (url === 'https://obo-prod.oesp.ziggogo.tv/oesp/v4/NL/nld/web/programschedules/20220318/2') {
|
||||
return Promise.resolve({
|
||||
data: JSON.parse(
|
||||
`{"entryCount":372,"totalResults":372,"updated":1647612660456,"expires":1647613812828,"title":"EPG","periods":4,"periodStartTime":1647579600000,"periodEndTime":1647601200000,"entries":[{"o":"lgi-nl-prod-master:NL_000001_019401","l":[{"i":"crid:~~2F~~2Fgn.tv~~2F21625105~~2FEP010806490167,imi:7473c7359429eba4f52bb878bb61c502a7215680","t":"Nederland in Beweging","s":1647579060000,"e":1647580020000,"c":"lgi-nl-prod-master:genre-229","a":false,"r":true,"rm":true,"rs":0,"re":604800,"rst":"cloud","ra":false,"ad":[],"sl":[]}]}]}`
|
||||
)
|
||||
})
|
||||
} else if (url === 'https://obo-prod.oesp.ziggogo.tv/oesp/v4/NL/nld/web/programschedules/20220318/3') {
|
||||
return Promise.resolve({
|
||||
data: JSON.parse(
|
||||
`{"entryCount":372,"totalResults":372,"updated":1647613247098,"expires":1647614130201,"title":"EPG","periods":4,"periodStartTime":1647601200000,"periodEndTime":1647622800000,"entries":[{"o":"lgi-nl-prod-master:NL_000001_019401","l":[{"i":"crid:~~2F~~2Fgn.tv~~2F21691432~~2FEP021727630938,imi:cff2a1f907652211a67a58701892b254d44132ff","t":"Tijd voor Max","s":1647598440000,"e":1647601200000,"c":"lgi-nl-prod-master:genre-28","a":false,"r":true,"rm":true,"rs":0,"re":604800,"rst":"cloud","ra":false,"ad":[],"sl":[]}]}]}`
|
||||
)
|
||||
})
|
||||
} else if (url === 'https://obo-prod.oesp.ziggogo.tv/oesp/v4/NL/nld/web/programschedules/20220318/4') {
|
||||
return Promise.resolve({
|
||||
data: JSON.parse(
|
||||
`{"entryCount":372,"totalResults":372,"updated":1647613247098,"expires":1647614121897,"title":"EPG","periods":4,"periodStartTime":1647622800000,"periodEndTime":1647644400000,"entries":[{"o":"lgi-nl-prod-master:NL_000001_019401","l":[{"i":"crid:~~2F~~2Fgn.tv~~2F11722435~~2FEP021725040006,imi:2e7a718710666af9b56e98191e557ca30b4c2d25","t":"Politieke Partijen","s":1647622680000,"e":1647622800000,"c":"lgi-nl-prod-master:genre-153","a":false,"r":true,"rm":true,"rs":0,"re":604800,"rst":"cloud","ra":false,"ad":[],"sl":[]}]}]}`
|
||||
)
|
||||
})
|
||||
} else if (url === 'https://obo-prod.oesp.ziggogo.tv/oesp/v4/NL/nld/web/listings/crid:~~2F~~2Fgn.tv~~2F19262235~~2FSH037248380000~~2F114418219,imi:9622001b4e91bba1bbee1720c88e67e3d58d6426') {
|
||||
return Promise.resolve({
|
||||
data: JSON.parse(
|
||||
`{"id":"crid:~~2F~~2Fgn.tv~~2F19262235~~2FSH037248380000~~2F114418219,imi:9622001b4e91bba1bbee1720c88e67e3d58d6426","subtitleLanguages":["nl"],"startTime":1647557820000,"endTime":1647559020000,"actualStartTime":1647557820000,"actualEndTime":1647559020000,"expirationDate":1648162620000,"stationId":"lgi-nl-prod-master:NL_000001_019401","imi":"imi:9622001b4e91bba1bbee1720c88e67e3d58d6426","scCridImi":"crid:~~2F~~2Fgn.tv~~2F19262235~~2FSH037248380000~~2F114418219,imi:9622001b4e91bba1bbee1720c88e67e3d58d6426","mediaGroupId":"crid:~~2F~~2Fgn.tv~~2F19262235~~2FSH037248380000","program":{"id":"crid:~~2F~~2Fgn.tv~~2F19262235~~2FSH037248380000~~2F114418219","title":"NOS Journaal Laat","description":"Met het laatste nieuws, de sport van de dag en de actuele weersverwachting.","longDescription":"Met het laatste nieuws, de sport van de dag en de actuele weersverwachting.","medium":"TV","categories":[{"id":"lgi-nl-prod-master:genre-22","title":"Nieuws","scheme":"urn:libertyglobal:metadata:cs:ContentCS:2014_1"}],"isAdult":false,"cast":["Malou Petter","Mark Visser","Rob Trip","Jeroen Overbeek","Simone Weimans","Annechien Steenhuizen","Jeroen Tjepkema","Saïda Maggé","Winfried Baijens"],"directors":[],"images":[{"assetType":"HighResPortrait","assetTypes":["HighResPortrait"],"url":"https://staticqbr-nl-prod.prod.cdn.dmdsdp.com/image-service/ImagesEPG/EventImages/p19262235_b_v8_ac.jpg"},{"assetType":"TitleTreatment","assetTypes":["TitleTreatment"],"url":"https://staticqbr-nl-prod.prod.cdn.dmdsdp.com/image-service/ImagesEPG/EventImages/p19262235_ttl_h95_aa.png"}],"parentId":"crid:~~2F~~2Fgn.tv~~2F123456789~~2FSH037248380000","rootId":"crid:~~2F~~2Fgn.tv~~2F19262235~~2FSH037248380000","parentalRatingDescription":[],"resolutions":[],"mediaGroupId":"crid:~~2F~~2Fgn.tv~~2F19262235~~2FSH037248380000","shortDescription":"Met het laatste nieuws, de sport van de dag en de actuele weersverwachting.","mediaType":"Episode","seriesEpisodeNumber":"114418219","seriesNumber":"48380000","videos":[],"videoStreams":[],"entitlements":["VIP","_OPEN_"],"currentProductIds":[],"currentTvodProductIds":[]},"parentId":"crid:~~2F~~2Fgn.tv~~2F123456789~~2FSH037248380000","rootId":"crid:~~2F~~2Fgn.tv~~2F19262235~~2FSH037248380000","replayTvAvailable":true,"audioTracks":[{"lang":"nl","audioPurpose":"main"}],"ratings":[],"offersLatestExpirationDate":1647559020000,"replayTvStartOffset":0,"replayTvEndOffset":604800,"replayEnabledOnMobileClients":true,"replaySource":"cloud","isGoReplayableViaExternalApp":false}`
|
||||
)
|
||||
})
|
||||
} else if (url === 'https://obo-prod.oesp.ziggogo.tv/oesp/v4/NL/nld/web/listings/crid:~~2F~~2Fgn.tv~~2F21625105~~2FEP010806490167,imi:7473c7359429eba4f52bb878bb61c502a7215680') {
|
||||
return Promise.resolve({
|
||||
data: JSON.parse(
|
||||
`{"id":"crid:~~2F~~2Fgn.tv~~2F21625105~~2FEP010806490167,imi:7473c7359429eba4f52bb878bb61c502a7215680","subtitleLanguages":["nl"],"startTime":1647579060000,"endTime":1647580020000,"actualStartTime":1647579060000,"actualEndTime":1647580020000,"expirationDate":1648183860000,"stationId":"lgi-nl-prod-master:NL_000001_019401","imi":"imi:7473c7359429eba4f52bb878bb61c502a7215680","scCridImi":"crid:~~2F~~2Fgn.tv~~2F21625105~~2FEP010806490167,imi:7473c7359429eba4f52bb878bb61c502a7215680","mediaGroupId":"crid:~~2F~~2Fbds.tv~~2F37394960","program":{"id":"crid:~~2F~~2Fgn.tv~~2F21625105~~2FEP010806490167","title":"Nederland in Beweging","description":"Programma voor volwassenen waarin lichaamsbeweging centraal staat. De presentatoren begeleiden enkele gasten bij de oefeningen en zo tegelijkertijd ook de kijker, die geholpen wordt in diens gezondheid te investeren.","longDescription":"Programma voor volwassenen waarin lichaamsbeweging centraal staat. De presentatoren begeleiden enkele gasten bij de oefeningen en zo tegelijkertijd ook de kijker, die geholpen wordt in diens gezondheid te investeren.","medium":"TV","categories":[{"id":"lgi-nl-prod-master:genre-229","title":"Exercise","scheme":"urn:libertyglobal:metadata:cs:ContentCS:2014_1"}],"isAdult":false,"cast":["Olga Commandeur","Duco Bauwens"],"directors":[],"images":[{"assetType":"HighResPortrait","assetTypes":["HighResPortrait"],"url":"https://staticqbr-nl-prod.prod.cdn.dmdsdp.com/image-service/ImagesEPG/EventImages/p21271071_b_v12_aa.jpg"},{"assetType":"TitleTreatment","assetTypes":["TitleTreatment"],"url":"https://staticqbr-nl-prod.prod.cdn.dmdsdp.com/image-service/ImagesEPG/EventImages/p821488_ttd_h95_ac.png"}],"parentId":"crid:~~2F~~2Fgn.tv~~2F21271071~~2FSH010806490000","rootId":"crid:~~2F~~2Fbds.tv~~2F37394960","parentalRatingDescription":[],"resolutions":[],"mediaGroupId":"crid:~~2F~~2Fbds.tv~~2F37394960","shortDescription":"Programma voor volwassenen waarin lichaamsbeweging centraal staat. De presentatoren begeleiden enkele gasten bij de oefeningen en zo tegelijkertijd ook de kijker, die geholpen wordt in diens gezondheid te investeren.","mediaType":"Episode","year":"2022","seriesEpisodeNumber":"54","seriesNumber":"22","videos":[],"videoStreams":[],"entitlements":["VIP","_OPEN_"],"currentProductIds":[],"currentTvodProductIds":[]},"parentId":"crid:~~2F~~2Fgn.tv~~2F21271071~~2FSH010806490000","rootId":"crid:~~2F~~2Fbds.tv~~2F37394960","replayTvAvailable":true,"audioTracks":[{"lang":"nl","audioPurpose":"main"}],"ratings":[],"offersLatestExpirationDate":1648612260000,"replayTvStartOffset":0,"replayTvEndOffset":604800,"replayEnabledOnMobileClients":true,"replaySource":"cloud","isGoReplayableViaExternalApp":false,"mergedId":"21625105|nl"}`
|
||||
)
|
||||
})
|
||||
} else if (url === 'https://obo-prod.oesp.ziggogo.tv/oesp/v4/NL/nld/web/listings/crid:~~2F~~2Fgn.tv~~2F21691432~~2FEP021727630938,imi:cff2a1f907652211a67a58701892b254d44132ff') {
|
||||
return Promise.resolve({
|
||||
data: JSON.parse(
|
||||
`{"id":"crid:~~2F~~2Fgn.tv~~2F21691432~~2FEP021727630938,imi:cff2a1f907652211a67a58701892b254d44132ff","subtitleLanguages":["nl"],"startTime":1647598440000,"endTime":1647601200000,"actualStartTime":1647598440000,"actualEndTime":1647601200000,"expirationDate":1648203240000,"stationId":"lgi-nl-prod-master:NL_000001_019401","imi":"imi:cff2a1f907652211a67a58701892b254d44132ff","scCridImi":"crid:~~2F~~2Fgn.tv~~2F21691432~~2FEP021727630938,imi:cff2a1f907652211a67a58701892b254d44132ff","mediaGroupId":"crid:~~2F~~2Fbds.tv~~2F37395234","program":{"id":"crid:~~2F~~2Fgn.tv~~2F21691432~~2FEP021727630938","title":"Tijd voor Max","description":"Speciale uitzending volledig in het teken van Stichting MAX Maakt Mogelijk. Jan Slagter is net terug uit Moldavië en heeft gezien hoe Stichting MAX Maakt Mogelijk de gevluchte Oekraïners kan helpen.","longDescription":"Speciale uitzending volledig in het teken van Stichting MAX Maakt Mogelijk. Jan Slagter is net terug uit Moldavië en heeft gezien hoe Stichting MAX Maakt Mogelijk de gevluchte Oekraïners kan helpen.","medium":"TV","categories":[{"id":"lgi-nl-prod-master:genre-28","title":"Talkshow","scheme":"urn:libertyglobal:metadata:cs:ContentCS:2014_1"}],"isAdult":false,"cast":["Sybrand Niessen","Martine van Os"],"directors":[],"images":[{"assetType":"HighResPortrait","assetTypes":["HighResPortrait"],"url":"https://staticqbr-nl-prod.prod.cdn.dmdsdp.com/image-service/ImagesEPG/EventImages/p21276620_b_v12_aa.jpg"},{"assetType":"TitleTreatment","assetTypes":["TitleTreatment"],"url":"https://staticqbr-nl-prod.prod.cdn.dmdsdp.com/image-service/ImagesEPG/EventImages/p959050_ttn_h95_ab.png"}],"parentId":"crid:~~2F~~2Fgn.tv~~2F21276620~~2FSH021727630000","rootId":"crid:~~2F~~2Fbds.tv~~2F37395234","parentalRatingDescription":[],"resolutions":[],"mediaGroupId":"crid:~~2F~~2Fbds.tv~~2F37395234","shortDescription":"Speciale uitzending volledig in het teken van Stichting MAX Maakt Mogelijk. Jan Slagter is net terug uit Moldavië en heeft gezien hoe Stichting MAX Maakt Mogelijk de gevluchte Oekraïners kan helpen.","mediaType":"Episode","year":"2022","seriesEpisodeNumber":"54","seriesNumber":"22","videos":[],"videoStreams":[],"entitlements":["VIP","_OPEN_"],"currentProductIds":[],"currentTvodProductIds":[]},"parentId":"crid:~~2F~~2Fgn.tv~~2F21276620~~2FSH021727630000","rootId":"crid:~~2F~~2Fbds.tv~~2F37395234","replayTvAvailable":true,"audioTracks":[{"lang":"nl","audioPurpose":"main"}],"ratings":[],"offersLatestExpirationDate":1647671100000,"replayTvStartOffset":0,"replayTvEndOffset":604800,"replayEnabledOnMobileClients":true,"replaySource":"cloud","isGoReplayableViaExternalApp":false,"mergedId":"21691432|nl"}`
|
||||
)
|
||||
})
|
||||
} else if (url === 'https://obo-prod.oesp.ziggogo.tv/oesp/v4/NL/nld/web/listings/crid:~~2F~~2Fgn.tv~~2F11722435~~2FEP021725040006,imi:2e7a718710666af9b56e98191e557ca30b4c2d25') {
|
||||
return Promise.resolve({
|
||||
data: JSON.parse(
|
||||
`{"id":"crid:~~2F~~2Fgn.tv~~2F11722435~~2FEP021725040006,imi:2e7a718710666af9b56e98191e557ca30b4c2d25","subtitleLanguages":["nl"],"startTime":1647622680000,"endTime":1647622800000,"actualStartTime":1647622680000,"actualEndTime":1647622800000,"expirationDate":1648227480000,"stationId":"lgi-nl-prod-master:NL_000001_019401","imi":"imi:2e7a718710666af9b56e98191e557ca30b4c2d25","scCridImi":"crid:~~2F~~2Fgn.tv~~2F11722435~~2FEP021725040006,imi:2e7a718710666af9b56e98191e557ca30b4c2d25","mediaGroupId":"crid:~~2F~~2Fgn.tv~~2F11721625~~2FSH021725040000","program":{"id":"crid:~~2F~~2Fgn.tv~~2F11722435~~2FEP021725040006","title":"Politieke Partijen","description":"Programma dat inzicht biedt in de verschillende Nederlandse politieke partijen.","longDescription":"Programma dat inzicht biedt in de verschillende Nederlandse politieke partijen.","medium":"TV","categories":[{"id":"lgi-nl-prod-master:genre-153","title":"Politiek","scheme":"urn:libertyglobal:metadata:cs:ContentCS:2014_1"}],"isAdult":false,"cast":[],"directors":[],"images":[{"assetType":"HighResLandscapeProductionStill","assetTypes":["HighResLandscapeProductionStill"],"url":"https://staticqbr-nl-prod.prod.cdn.dmdsdp.com/image-service/ImagesEPG/EventImages/p11722435_e_h10_aa.jpg"},{"assetType":"HighResPortrait","assetTypes":["HighResPortrait"],"url":"https://staticqbr-nl-prod.prod.cdn.dmdsdp.com/image-service/ImagesEPG/EventImages/p11721625_b_v12_ad.jpg"}],"parentId":"crid:~~2F~~2Fgn.tv~~2F123456789~~2FSH021725040000","rootId":"crid:~~2F~~2Fgn.tv~~2F11721625~~2FSH021725040000","parentalRatingDescription":[],"resolutions":[],"mediaGroupId":"crid:~~2F~~2Fgn.tv~~2F11721625~~2FSH021725040000","shortDescription":"Programma dat inzicht biedt in de verschillende Nederlandse politieke partijen.","mediaType":"Episode","seriesEpisodeNumber":"2015042006","seriesNumber":"25040000","videos":[],"videoStreams":[],"entitlements":["VIP","_OPEN_"],"currentProductIds":[],"currentTvodProductIds":[],"secondaryTitle":"PVV"},"parentId":"crid:~~2F~~2Fgn.tv~~2F123456789~~2FSH021725040000","rootId":"crid:~~2F~~2Fgn.tv~~2F11721625~~2FSH021725040000","replayTvAvailable":true,"audioTracks":[{"lang":"nl","audioPurpose":"main"}],"ratings":[],"offersLatestExpirationDate":1647622800000,"replayTvStartOffset":0,"replayTvEndOffset":604800,"replayEnabledOnMobileClients":true,"replaySource":"cloud","isGoReplayableViaExternalApp":false,"mergedId":"11722435|nl"}`
|
||||
)
|
||||
})
|
||||
} else {
|
||||
return Promise.resolve({ data: '' })
|
||||
}
|
||||
})
|
||||
|
||||
parser({ content, channel, date })
|
||||
.then(result => {
|
||||
result = result.map(p => {
|
||||
p.start = p.start.toJSON()
|
||||
p.stop = p.stop.toJSON()
|
||||
return p
|
||||
})
|
||||
|
||||
expect(result).toMatchObject([
|
||||
{
|
||||
start: '2022-03-17T22:57:00.000Z',
|
||||
stop: '2022-03-17T23:17:00.000Z',
|
||||
title: 'NOS Journaal Laat',
|
||||
description: 'Met het laatste nieuws, de sport van de dag en de actuele weersverwachting.',
|
||||
category: ['Nieuws'],
|
||||
season: '48380000',
|
||||
episode: '114418219'
|
||||
},
|
||||
{
|
||||
start: '2022-03-18T04:51:00.000Z',
|
||||
stop: '2022-03-18T05:07:00.000Z',
|
||||
title: 'Nederland in Beweging',
|
||||
description: 'Programma voor volwassenen waarin lichaamsbeweging centraal staat. De presentatoren begeleiden enkele gasten bij de oefeningen en zo tegelijkertijd ook de kijker, die geholpen wordt in diens gezondheid te investeren.',
|
||||
category: ['Exercise'],
|
||||
season: '22',
|
||||
episode: '54'
|
||||
},
|
||||
{
|
||||
start: '2022-03-18T10:14:00.000Z',
|
||||
stop: '2022-03-18T11:00:00.000Z',
|
||||
title: 'Tijd voor Max',
|
||||
description: 'Speciale uitzending volledig in het teken van Stichting MAX Maakt Mogelijk. Jan Slagter is net terug uit Moldavië en heeft gezien hoe Stichting MAX Maakt Mogelijk de gevluchte Oekraïners kan helpen.',
|
||||
category: ['Talkshow'],
|
||||
season: '22',
|
||||
episode: '54'
|
||||
},
|
||||
{
|
||||
start: '2022-03-18T16:58:00.000Z',
|
||||
stop: '2022-03-18T17:00:00.000Z',
|
||||
title: 'Politieke Partijen',
|
||||
description: 'Programma dat inzicht biedt in de verschillende Nederlandse politieke partijen.',
|
||||
category: ['Politiek'],
|
||||
season: '25040000',
|
||||
episode: '2015042006'
|
||||
}
|
||||
])
|
||||
done()
|
||||
})
|
||||
.catch(done)
|
||||
})
|
||||
|
||||
it('can handle empty guide', done => {
|
||||
parser({
|
||||
content: `[{"type":"PATH_PARAM","code":"period","reason":"INVALID"}]`,
|
||||
channel,
|
||||
date
|
||||
})
|
||||
.then(result => {
|
||||
expect(result).toMatchObject([])
|
||||
done()
|
||||
})
|
||||
.catch(done)
|
||||
})
|
147
sites/ziggogo.tv/ziggogo.tv_nl.channels.xml
Normal file
147
sites/ziggogo.tv/ziggogo.tv_nl.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="24KitchenNederland.us" site_id="NL_000024_019701">24 Kitchen Nederland</channel>
|
||||
<channel lang="nl" xmltv_id="2MMonde.ma" site_id="NL_000051_019047">2M Monde</channel>
|
||||
<channel lang="nl" xmltv_id="ARTEDeutsch.fr" site_id="NL_000046_020053">ARTE Deutsch</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="nl" xmltv_id="AlJazeeraEnglish.qa" site_id="NL_000118_019350">Al Jazeera English</channel>
|
||||
<channel lang="nl" xmltv_id="AnimalPlanetEurope.us" site_id="NL_000078_020002">Animal Planet Europe</channel>
|
||||
<channel lang="nl" xmltv_id="BBCEntertainmentEurope.uk" site_id="NL_000044_019491">BBC Entertainment Europe</channel>
|
||||
<channel lang="nl" xmltv_id="BBCFirstNederland.uk" site_id="NL_000022_019328">BBC First Nederland</channel>
|
||||
<channel lang="nl" xmltv_id="BBCOne.uk" site_id="NL_000040_020022">BBC One</channel>
|
||||
<channel lang="nl" xmltv_id="BBCTwo.uk" site_id="NL_000041_019369">BBC Two</channel>
|
||||
<channel lang="nl" xmltv_id="BBCWorldNewsEurope.uk" site_id="NL_000116_019005">BBC World News Europe</channel>
|
||||
<channel lang="nl" xmltv_id="BabyTVEurope.uk" site_id="NL_000091_019490">Baby TV Europe</channel>
|
||||
<channel lang="nl" xmltv_id="BoomerangCentralEasternEurope.us" site_id="NL_000090_019492">Boomerang Central & Eastern Europe</channel>
|
||||
<channel lang="nl" xmltv_id="CBSRealityEurope.us" site_id="NL_000066_019291">CBS Reality Europe</channel>
|
||||
<channel lang="nl" xmltv_id="CGTN.cn" site_id="NL_000120_020046">CGTN</channel>
|
||||
<channel lang="nl" xmltv_id="CNBCEurope.us" site_id="NL_000119_019481">CNBC Europe</channel>
|
||||
<channel lang="nl" 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="CartoonNetworkNederland.us" site_id="NL_000088_019251">Cartoon Network Nederland</channel>
|
||||
<channel lang="nl" xmltv_id="ComedyCentralExtraUK.us" site_id="NL_000059_019252">Comedy Central Extra UK</channel>
|
||||
<channel lang="nl" xmltv_id="ComedyCentralNederland.us" site_id="NL_000015_019166">Comedy Central Nederland</channel>
|
||||
<channel lang="nl" xmltv_id="CrimePlusInvestigationUK.us" site_id="NL_000057_019493">Crime + Investigation UK</channel>
|
||||
<channel lang="nl" xmltv_id="DiscoveryChannelNederland.us" 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="DisneyChannelNederland.us" 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="ESPN2Nederland.us" site_id="NL_000108_019561">ESPN 2 Nederland</channel>
|
||||
<channel lang="nl" xmltv_id="ESPN3Nederland.us" site_id="NL_000109_019464">ESPN 3 Nederland</channel>
|
||||
<channel lang="nl" xmltv_id="ESPN4Nederland.us" site_id="NL_000110_019562">ESPN 4 Nederland</channel>
|
||||
<channel lang="nl" xmltv_id="ESPNNederland.us" site_id="NL_000107_019441">ESPN Nederland</channel>
|
||||
<channel lang="nl" xmltv_id="Een.be" site_id="NL_000031_019362">Één</channel>
|
||||
<channel lang="nl" xmltv_id="EuroD.tr" site_id="NL_000157_019270">Euro D</channel>
|
||||
<channel lang="nl" xmltv_id="EuroStar.tr" site_id="NL_000158_019266">EuroStar</channel>
|
||||
<channel lang="nl" 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="ExtremeSportsChannel.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="nl" 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="FoxNL.us" site_id="NL_000011_019563">Fox NL</channel>
|
||||
<channel lang="nl" xmltv_id="Haberturk.tr" site_id="NL_000159_019273">Habertürk</channel>
|
||||
<channel lang="nl" xmltv_id="HistoryBenelux.us" 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="nl" xmltv_id="MTV80s.us" site_id="NL_000128_019254">MTV 80s</channel>
|
||||
<channel lang="nl" xmltv_id="MTV90s.us" site_id="NL_000123_019304">MTV 90s</channel>
|
||||
<channel lang="nl" xmltv_id="MTVHitsEurope.us" site_id="NL_000126_019486">MTV Hits Europe</channel>
|
||||
<channel lang="nl" xmltv_id="MTVLiveHD.us" site_id="NL_000135_020029">MTV Live HD</channel>
|
||||
<channel lang="nl" xmltv_id="MTVNL.us" site_id="NL_000023_019363">MTV NL</channel>
|
||||
<channel lang="nl" 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="nl" xmltv_id="MyZenTV.fr" site_id="NL_000068_020055">MyZen TV</channel>
|
||||
<channel lang="nl" xmltv_id="NDRFernsehenHamburg.de" site_id="NL_000037_019186">NDR Fernsehen Hamburg</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="NationalGeographicNederland.us" site_id="NL_000018_019221">National Geographic Nederland</channel>
|
||||
<channel lang="nl" xmltv_id="NationalGeographicWildEurope.us" 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="NickJrCentralEasternEurope.us" site_id="NL_000087_019303">Nick Jr Central & Eastern Europe</channel>
|
||||
<channel lang="nl" xmltv_id="NickMusic.us" site_id="NL_000085_019494">NickMusic</channel>
|
||||
<channel lang="nl" xmltv_id="NickToonsUK.us" site_id="NL_000084_019301">NickToons UK</channel>
|
||||
<channel lang="nl" xmltv_id="NickelodeonNederlandBelgie.us" site_id="NL_000029_019046">Nickelodeon Nederland & België</channel>
|
||||
<channel lang="nl" xmltv_id="ONS.nl" site_id="NL_000030_019152">ONS</channel>
|
||||
<channel lang="nl" xmltv_id="OmroepBrabantTV.nl" site_id="NL_000147_019593">Omroep Brabant TV</channel>
|
||||
<channel lang="nl" xmltv_id="OmroepFlevolandTV.nl" site_id="NL_000141_019209">Omroep Flevoland TV</channel>
|
||||
<channel lang="nl" xmltv_id="OmroepZeelandTV.nl" site_id="NL_000146_019213">Omroep Zeeland TV</channel>
|
||||
<channel lang="nl" xmltv_id="OmropFryslanTV.nl" site_id="NL_000137_019214">Omrop Fryslân TV</channel>
|
||||
<channel lang="nl" xmltv_id="OutTV.ca" 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="nl" xmltv_id="PenthouseGold.us" site_id="NL_000171_019313">Penthouse Gold</channel>
|
||||
<channel lang="nl" xmltv_id="RTL.lu" 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="RTLCrimeNederland.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="nl" xmltv_id="SETAsia.in" site_id="NL_000155_020073">SET Asia</channel>
|
||||
<channel lang="nl" xmltv_id="Sat1Deutschland.de" site_id="NL_000039_019153">Sat. 1 Deutschland</channel>
|
||||
<channel lang="nl" xmltv_id="SecretCircle.nl" site_id="NL_000170_019515">Secret Circle</channel>
|
||||
<channel lang="nl" xmltv_id="ShortsTV.uk" site_id="NL_000060_019297">Shorts TV</channel>
|
||||
<channel lang="nl" 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="SpikeNederland.us" 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="TLCNederland.us" site_id="NL_000021_019566">TLC Nederland</channel>
|
||||
<channel lang="nl" xmltv_id="TRTCocuk.tr" site_id="NL_000162_019250">TRT Çocuk</channel>
|
||||
<channel lang="nl" xmltv_id="TRTMuzik.tr" site_id="NL_000164_020070">TRT Müzik</channel>
|
||||
<channel lang="nl" 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="nl" xmltv_id="TV8International.tr" site_id="NL_000160_019277">TV 8 International</channel>
|
||||
<channel lang="nl" xmltv_id="TVDrenthe.nl" site_id="NL_000138_019591">TV Drenthe</channel>
|
||||
<channel lang="nl" xmltv_id="TVEInternacionalEuropa.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="TVOranje.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="nl" xmltv_id="UtsavGold.hk" site_id="NL_000151_020074">Utsav Gold</channel>
|
||||
<channel lang="nl" xmltv_id="UtsavPlus.hk" site_id="NL_000150_020075">Utsav Plus</channel>
|
||||
<channel lang="nl" xmltv_id="Veronica.nl" site_id="NL_000008_019442">Veronica</channel>
|
||||
<channel lang="nl" 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="nl" xmltv_id="ZDF.de" site_id="NL_000035_020028">ZDF</channel>
|
||||
<channel lang="nl" xmltv_id="ZeeCinema.in" site_id="NL_000153_020076">Zee Cinema</channel>
|
||||
<channel lang="nl" xmltv_id="ZeeTVUK.in" 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="nl" xmltv_id="ZingUK.in" site_id="NL_000154_020078">Zing UK</channel>
|
||||
</channels>
|
||||
</site>
|
Loading…
Add table
Add a link
Reference in a new issue