mirror of
https://github.com/iptv-org/epg.git
synced 2025-05-10 09:00:07 -04:00
commit
b8e63c98ec
3 changed files with 63 additions and 25 deletions
|
@ -8,17 +8,19 @@ module.exports = {
|
||||||
.add(1, 'd')
|
.add(1, 'd')
|
||||||
.unix()}&includeDetails=true&channels=${channel.site_id}`
|
.unix()}&includeDetails=true&channels=${channel.site_id}`
|
||||||
},
|
},
|
||||||
parser: function ({ content, channel }) {
|
async parser({ content, channel }) {
|
||||||
let programs = []
|
let programs = []
|
||||||
const items = parseItems(content, channel)
|
const items = parseItems(content, channel)
|
||||||
items.forEach(item => {
|
for (let item of items) {
|
||||||
|
const details = await loadProgramDetails(item)
|
||||||
programs.push({
|
programs.push({
|
||||||
title: item.title,
|
title: item.title,
|
||||||
icon: item.images.thumbnail.url,
|
icon: item.images.thumbnail.url,
|
||||||
|
description: details.description,
|
||||||
start: parseStart(item).toJSON(),
|
start: parseStart(item).toJSON(),
|
||||||
stop: parseStop(item).toJSON()
|
stop: parseStop(item).toJSON()
|
||||||
})
|
})
|
||||||
})
|
}
|
||||||
|
|
||||||
return programs
|
return programs
|
||||||
},
|
},
|
||||||
|
@ -40,6 +42,17 @@ module.exports = {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async function loadProgramDetails(item) {
|
||||||
|
if (!item.ID) return {}
|
||||||
|
const url = `https://clientapi.tv.delta.nl/guide/4/details/${item.ID}?X-Response-Version=4.5`
|
||||||
|
const data = await axios
|
||||||
|
.get(url)
|
||||||
|
.then(r => r.data)
|
||||||
|
.catch(console.log)
|
||||||
|
|
||||||
|
return data || {}
|
||||||
|
}
|
||||||
|
|
||||||
function parseStart(item) {
|
function parseStart(item) {
|
||||||
return dayjs.unix(item.start)
|
return dayjs.unix(item.start)
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,13 +1,16 @@
|
||||||
// node ./scripts/channels.js --config=./sites/delta.nl/delta.nl.config.js --output=./sites/delta.nl/delta.nl_nl.channels.xml
|
// npm run channels:parse --config=./sites/delta.nl/delta.nl.config.js --output=./sites/delta.nl/delta.nl_nl.channels.xml
|
||||||
// npx epg-grabber --config=sites/delta.nl/delta.nl.config.js --channels=sites/delta.nl/delta.nl_nl.channels.xml --output=.gh-pages/guides/nl/delta.nl.epg.xml --days=2
|
// npx epg-grabber --config=sites/delta.nl/delta.nl.config.js --channels=sites/delta.nl/delta.nl_nl.channels.xml --output=guide.xml --days=2
|
||||||
|
|
||||||
const { parser, url, request } = require('./delta.nl.config.js')
|
const { parser, url, request } = require('./delta.nl.config.js')
|
||||||
|
const axios = require('axios')
|
||||||
const dayjs = require('dayjs')
|
const dayjs = require('dayjs')
|
||||||
const utc = require('dayjs/plugin/utc')
|
const utc = require('dayjs/plugin/utc')
|
||||||
const customParseFormat = require('dayjs/plugin/customParseFormat')
|
const customParseFormat = require('dayjs/plugin/customParseFormat')
|
||||||
dayjs.extend(customParseFormat)
|
dayjs.extend(customParseFormat)
|
||||||
dayjs.extend(utc)
|
dayjs.extend(utc)
|
||||||
|
|
||||||
|
jest.mock('axios')
|
||||||
|
|
||||||
const date = dayjs.utc('2021-11-12', 'YYYY-MM-DD').startOf('d')
|
const date = dayjs.utc('2021-11-12', 'YYYY-MM-DD').startOf('d')
|
||||||
const channel = {
|
const channel = {
|
||||||
site_id: '1',
|
site_id: '1',
|
||||||
|
@ -20,25 +23,47 @@ it('can generate valid url', () => {
|
||||||
)
|
)
|
||||||
})
|
})
|
||||||
|
|
||||||
it('can parse response', () => {
|
it('can parse response', done => {
|
||||||
const content = `{"1":[{"ID":"P~945cb98e-3d19-11ec-8456-953363d7a344","seriesID":"S~d37c4626-b691-11ea-ba69-255835135f02","channelID":"1","start":1636674960,"end":1636676520,"catchupAvailableUntil":1637279760,"title":"NOS Journaal","images":{"thumbnail":{"url":"https://cdn.gvidi.tv/img/booxmedia/e19c/static/NOS%20Journaal5.jpg"}},"additionalInformation":{"metadataID":"M~944f3c6e-3d19-11ec-9faf-2735f2e98d2a","externalMetadataID":"E~TV01-2026117420668"},"parentalGuidance":{"kijkwijzer":["AL"]},"restrictions":{"startoverDisabled":false,"catchupDisabled":false,"recordingDisabled":false},"isFiller":false}]}`
|
axios.get.mockImplementation(() =>
|
||||||
const result = parser({ date, channel, content })
|
Promise.resolve({
|
||||||
|
data: JSON.parse(
|
||||||
|
`{"ID":"P~945cb98e-3d19-11ec-8456-953363d7a344","seriesID":"S~d37c4626-b691-11ea-ba69-255835135f02","channelID":"1","start":1636674960,"end":1636676520,"catchupAvailableUntil":1637279760,"title":"Eigen Huis & Tuin: Lekker Leven","description":"Nederlands lifestyleprogramma uit 2022 (ook in HD) met dagelijkse inspiratie voor een lekker leven in en om het huis.\\nPresentatrice Froukje de Both, kok Hugo Kennis en een team van experts, onder wie tuinman Tom Groot, geven praktische tips op het gebied van wonen, lifestyle, tuinieren en koken. Daarmee kun je zelf direct aan de slag om je leven leuker én gezonder te maken. Afl. 15 van seizoen 4.","images":{"thumbnail":{"url":"https://cdn.gvidi.tv/img/booxmedia/b291/561946.jpg"}},"additionalInformation":{"metadataID":"M~c512c206-95e5-11ec-87d8-494f70130311","externalMetadataID":"E~RTL4-89d99356_6599_4b65_a7a0_a93f39019645"},"parentalGuidance":{"kijkwijzer":["AL"]},"restrictions":{"startoverDisabled":false,"catchupDisabled":false,"recordingDisabled":false},"isFiller":false}`
|
||||||
|
)
|
||||||
|
})
|
||||||
|
)
|
||||||
|
|
||||||
|
const content = `{"1":[{"ID":"P~945cb98e-3d19-11ec-8456-953363d7a344","seriesID":"S~d37c4626-b691-11ea-ba69-255835135f02","channelID":"1","start":1636674960,"end":1636676520,"catchupAvailableUntil":1637279760,"title":"NOS Journaal","images":{"thumbnail":{"url":"https://cdn.gvidi.tv/img/booxmedia/e19c/static/NOS%20Journaal5.jpg"}},"additionalInformation":{"metadataID":"M~944f3c6e-3d19-11ec-9faf-2735f2e98d2a","externalMetadataID":"E~TV01-2026117420668"},"parentalGuidance":{"kijkwijzer":["AL"]},"restrictions":{"startoverDisabled":false,"catchupDisabled":false,"recordingDisabled":false},"isFiller":false}]}`
|
||||||
|
|
||||||
|
parser({ date, channel, content })
|
||||||
|
.then(result => {
|
||||||
expect(result).toMatchObject([
|
expect(result).toMatchObject([
|
||||||
{
|
{
|
||||||
start: '2021-11-11T23:56:00.000Z',
|
start: '2021-11-11T23:56:00.000Z',
|
||||||
stop: '2021-11-12T00:22:00.000Z',
|
stop: '2021-11-12T00:22:00.000Z',
|
||||||
title: 'NOS Journaal',
|
title: 'NOS Journaal',
|
||||||
|
description:
|
||||||
|
'Nederlands lifestyleprogramma uit 2022 (ook in HD) met dagelijkse inspiratie voor een lekker leven in en om het huis.\nPresentatrice Froukje de Both, kok Hugo Kennis en een team van experts, onder wie tuinman Tom Groot, geven praktische tips op het gebied van wonen, lifestyle, tuinieren en koken. Daarmee kun je zelf direct aan de slag om je leven leuker én gezonder te maken. Afl. 15 van seizoen 4.',
|
||||||
icon: 'https://cdn.gvidi.tv/img/booxmedia/e19c/static/NOS%20Journaal5.jpg'
|
icon: 'https://cdn.gvidi.tv/img/booxmedia/e19c/static/NOS%20Journaal5.jpg'
|
||||||
}
|
}
|
||||||
])
|
])
|
||||||
|
done()
|
||||||
|
})
|
||||||
|
.catch(error => {
|
||||||
|
done(error)
|
||||||
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
it('can handle empty guide', () => {
|
it('can handle empty guide', done => {
|
||||||
const result = parser({
|
parser({
|
||||||
date,
|
date,
|
||||||
channel,
|
channel,
|
||||||
content: `{"code":500,"message":"Error retrieving guide"}`
|
content: `{"code":500,"message":"Error retrieving guide"}`
|
||||||
})
|
})
|
||||||
|
.then(result => {
|
||||||
expect(result).toMatchObject([])
|
expect(result).toMatchObject([])
|
||||||
|
done()
|
||||||
|
})
|
||||||
|
.catch(error => {
|
||||||
|
done(error)
|
||||||
|
})
|
||||||
})
|
})
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<site site="delta.nl">
|
<site site="delta.nl">
|
||||||
<channels>
|
<channels>
|
||||||
<channel lang="nl" xmltv_id="3sat.de" site_id="3016">3sat</channel>
|
|
||||||
<channel lang="nl" xmltv_id="24KitchenNederland.us" site_id="19">24 Kitchen Nederland</channel>
|
|
||||||
<channel lang="nl" xmltv_id="100NLTV.nl" site_id="34">100% NL TV</channel>
|
<channel lang="nl" xmltv_id="100NLTV.nl" site_id="34">100% NL TV</channel>
|
||||||
<channel lang="nl" xmltv_id="192TV.nl" site_id="98">192 TV</channel>
|
<channel lang="nl" xmltv_id="192TV.nl" site_id="98">192 TV</channel>
|
||||||
|
<channel lang="nl" xmltv_id="24KitchenNederland.us" site_id="19">24 Kitchen Nederland</channel>
|
||||||
|
<channel lang="nl" xmltv_id="3sat.de" site_id="3016">3sat</channel>
|
||||||
<channel lang="nl" xmltv_id="AAVISIE.nl" site_id="10000">AAVISIE</channel>
|
<channel lang="nl" xmltv_id="AAVISIE.nl" site_id="10000">AAVISIE</channel>
|
||||||
<channel lang="nl" xmltv_id="AlbrandswaardTV.nl" site_id="3052">Albrandswaard TV</channel>
|
<channel lang="nl" xmltv_id="AlbrandswaardTV.nl" site_id="3052">Albrandswaard TV</channel>
|
||||||
<channel lang="nl" xmltv_id="AlJazeeraEnglish.qa" site_id="3076">Aljazeera English</channel>
|
<channel lang="nl" xmltv_id="AlJazeeraEnglish.qa" site_id="3076">Aljazeera English</channel>
|
||||||
|
@ -69,8 +69,8 @@
|
||||||
<channel lang="nl" xmltv_id="FilmBoxNederland.us" site_id="10017">FilmBox Nederland</channel>
|
<channel lang="nl" xmltv_id="FilmBoxNederland.us" site_id="10017">FilmBox Nederland</channel>
|
||||||
<channel lang="nl" xmltv_id="FoxNL.us" site_id="12">Fox NL</channel>
|
<channel lang="nl" xmltv_id="FoxNL.us" site_id="12">Fox NL</channel>
|
||||||
<channel lang="nl" xmltv_id="France2.fr" site_id="50">France 2</channel>
|
<channel lang="nl" xmltv_id="France2.fr" site_id="50">France 2</channel>
|
||||||
<channel lang="nl" xmltv_id="France3.fr" site_id="3120">France 3</channel>
|
|
||||||
<channel lang="nl" xmltv_id="France24Francais.fr" site_id="3021">France 24 Français</channel>
|
<channel lang="nl" xmltv_id="France24Francais.fr" site_id="3021">France 24 Français</channel>
|
||||||
|
<channel lang="nl" xmltv_id="France3.fr" site_id="3120">France 3</channel>
|
||||||
<channel lang="nl" xmltv_id="GemeenteWestlandTV.nl" site_id="3145">Gemeente Westland TV</channel>
|
<channel lang="nl" xmltv_id="GemeenteWestlandTV.nl" site_id="3145">Gemeente Westland TV</channel>
|
||||||
<channel lang="nl" xmltv_id="GL8.nl" site_id="3056">GL8</channel>
|
<channel lang="nl" xmltv_id="GL8.nl" site_id="3056">GL8</channel>
|
||||||
<channel lang="nl" xmltv_id="GOTV.nl" site_id="71">GO-TV</channel>
|
<channel lang="nl" xmltv_id="GOTV.nl" site_id="71">GO-TV</channel>
|
||||||
|
@ -82,7 +82,7 @@
|
||||||
<channel lang="nl" xmltv_id="HustlerTVEurope.us" site_id="3044">Hustler TV Europe</channel>
|
<channel lang="nl" xmltv_id="HustlerTVEurope.us" site_id="3044">Hustler TV Europe</channel>
|
||||||
<channel lang="nl" xmltv_id="IdeaalTV.nl" site_id="3174">Ideaal TV</channel>
|
<channel lang="nl" xmltv_id="IdeaalTV.nl" site_id="3174">Ideaal TV</channel>
|
||||||
<channel lang="nl" xmltv_id="IjsselmondTV.nl" site_id="3161">Ijsselmond TV</channel>
|
<channel lang="nl" xmltv_id="IjsselmondTV.nl" site_id="3161">Ijsselmond TV</channel>
|
||||||
<channel lang="nl" xmltv_id="InsightHD.nl" site_id="3149">Insight HD</channel>
|
<channel lang="nl" xmltv_id="InsightTV.nl" site_id="3149">Insight TV</channel>
|
||||||
<channel lang="nl" xmltv_id="InvestigationDiscoveryEurope.us" site_id="16">Investigation Discovery Europe</channel>
|
<channel lang="nl" xmltv_id="InvestigationDiscoveryEurope.us" site_id="16">Investigation Discovery Europe</channel>
|
||||||
<channel lang="nl" xmltv_id="JenZ.nl" site_id="17">JenZ</channel>
|
<channel lang="nl" xmltv_id="JenZ.nl" site_id="17">JenZ</channel>
|
||||||
<channel lang="nl" xmltv_id="KabelEinsDeutschland.de" site_id="3018">Kabel Eins Deutschland</channel>
|
<channel lang="nl" xmltv_id="KabelEinsDeutschland.de" site_id="3018">Kabel Eins Deutschland</channel>
|
||||||
|
@ -166,6 +166,7 @@
|
||||||
<channel lang="nl" xmltv_id="RTVArnhemTV.nl" site_id="3183">RTV Arnhem TV</channel>
|
<channel lang="nl" xmltv_id="RTVArnhemTV.nl" site_id="3183">RTV Arnhem TV</channel>
|
||||||
<channel lang="nl" xmltv_id="RTVFocusTV.nl" site_id="3186">RTV Focus TV</channel>
|
<channel lang="nl" xmltv_id="RTVFocusTV.nl" site_id="3186">RTV Focus TV</channel>
|
||||||
<channel lang="nl" xmltv_id="RTVHorizon.nl" site_id="10012">RTV Horizon</channel>
|
<channel lang="nl" xmltv_id="RTVHorizon.nl" site_id="10012">RTV Horizon</channel>
|
||||||
|
<channel lang="nl" xmltv_id="RTVOost.nl" site_id="3097">RTV Oost</channel>
|
||||||
<channel lang="nl" xmltv_id="RTVPurmerend.nl" site_id="10018">RTV Purmerend</channel>
|
<channel lang="nl" xmltv_id="RTVPurmerend.nl" site_id="10018">RTV Purmerend</channel>
|
||||||
<channel lang="nl" xmltv_id="RTVRijnstreekTV.nl" site_id="3181">RTV Rijnstreek TV</channel>
|
<channel lang="nl" xmltv_id="RTVRijnstreekTV.nl" site_id="3181">RTV Rijnstreek TV</channel>
|
||||||
<channel lang="nl" xmltv_id="RTVScheldemond.nl" site_id="68">RTV Scheldemond</channel>
|
<channel lang="nl" xmltv_id="RTVScheldemond.nl" site_id="68">RTV Scheldemond</channel>
|
||||||
|
@ -199,8 +200,8 @@
|
||||||
<channel lang="nl" xmltv_id="TraceSportStars.fr" site_id="3047">Trace Sport Stars</channel>
|
<channel lang="nl" xmltv_id="TraceSportStars.fr" site_id="3047">Trace Sport Stars</channel>
|
||||||
<channel lang="nl" xmltv_id="TraceUrban.fr" site_id="3048">Trace Urban</channel>
|
<channel lang="nl" xmltv_id="TraceUrban.fr" site_id="3048">Trace Urban</channel>
|
||||||
<channel lang="nl" xmltv_id="TRTTurk.tr" site_id="3023">TRT Türk</channel>
|
<channel lang="nl" xmltv_id="TRTTurk.tr" site_id="3023">TRT Türk</channel>
|
||||||
<channel lang="nl" xmltv_id="TV5MondeEurope.fr" site_id="57">TV5Monde Europe</channel>
|
|
||||||
<channel lang="nl" xmltv_id="TV538.nl" site_id="63">TV 538</channel>
|
<channel lang="nl" xmltv_id="TV538.nl" site_id="63">TV 538</channel>
|
||||||
|
<channel lang="nl" xmltv_id="TV5MondeEurope.fr" site_id="57">TV5Monde Europe</channel>
|
||||||
<channel lang="nl" xmltv_id="TVBerghem.nl" site_id="3081">TV Berghem</channel>
|
<channel lang="nl" xmltv_id="TVBerghem.nl" site_id="3081">TV Berghem</channel>
|
||||||
<channel lang="nl" xmltv_id="TVDrenthe.nl" site_id="3099">TV Drenthe</channel>
|
<channel lang="nl" xmltv_id="TVDrenthe.nl" site_id="3099">TV Drenthe</channel>
|
||||||
<channel lang="nl" xmltv_id="TVEInternacionalEuropa.es" site_id="3022">TVE Internacional Europa</channel>
|
<channel lang="nl" xmltv_id="TVEInternacionalEuropa.es" site_id="3022">TVE Internacional Europa</channel>
|
||||||
|
@ -208,7 +209,6 @@
|
||||||
<channel lang="nl" xmltv_id="TVKrimpenerwaard.nl" site_id="3079">TV Krimpenerwaard</channel>
|
<channel lang="nl" xmltv_id="TVKrimpenerwaard.nl" site_id="3079">TV Krimpenerwaard</channel>
|
||||||
<channel lang="nl" xmltv_id="TVNoord.nl" site_id="3098">TV Noord</channel>
|
<channel lang="nl" xmltv_id="TVNoord.nl" site_id="3098">TV Noord</channel>
|
||||||
<channel lang="nl" xmltv_id="TVNunspeet.nl" site_id="3085">TV Nunspeet</channel>
|
<channel lang="nl" xmltv_id="TVNunspeet.nl" site_id="3085">TV Nunspeet</channel>
|
||||||
<channel lang="nl" xmltv_id="TVOost.nl" site_id="3097">TV Oost</channel>
|
|
||||||
<channel lang="nl" xmltv_id="TVOranje.nl" site_id="99">TV Oranje</channel>
|
<channel lang="nl" xmltv_id="TVOranje.nl" site_id="99">TV Oranje</channel>
|
||||||
<channel lang="nl" xmltv_id="TVRijnmond.nl" site_id="72">TV Rijnmond</channel>
|
<channel lang="nl" xmltv_id="TVRijnmond.nl" site_id="72">TV Rijnmond</channel>
|
||||||
<channel lang="nl" xmltv_id="TVStichtseVecht.nl" site_id="3071">TV Stichtse Vecht</channel>
|
<channel lang="nl" xmltv_id="TVStichtseVecht.nl" site_id="3071">TV Stichtse Vecht</channel>
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue