From 5d7879c924d24a0492e82f0d4ae0cd73d3839d62 Mon Sep 17 00:00:00 2001 From: Aleksandr Statciuk Date: Thu, 17 Nov 2022 08:58:08 +0300 Subject: [PATCH 1/6] Create content.html --- sites/tvgids.nl/__data__/content.html | 2924 +++++++++++++++++++++++++ 1 file changed, 2924 insertions(+) create mode 100644 sites/tvgids.nl/__data__/content.html diff --git a/sites/tvgids.nl/__data__/content.html b/sites/tvgids.nl/__data__/content.html new file mode 100644 index 00000000..aa48152b --- /dev/null +++ b/sites/tvgids.nl/__data__/content.html @@ -0,0 +1,2924 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + De TV gids van morgen voor Eurosport 1 - TVgids.nl + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ +
+
+
+ +
+
+
+ +
+
+
+
+
+ logo NPO 1 +
+
+ logo NPO 2 +
+
+ logo NPO 3 +
+
+ logo RTL 4 +
+
+ logo RTL 5 +
+
+ logo SBS 6 +
+
+ logo RTL 7 +
+
+ logo Veronica/Disney XD +
+
+ logo NET 5 +
+
+ logo RTL 8 +
+
+ logo SBS 9 +
+
+ logo BBC First +
+
+ logo Paramount Network +
+
+ logo Comedy Central +
+
+ logo Discovery +
+
+ logo National Geographic +
+
+ logo Crime + Investigation +
+
+ logo Ons +
+
+ logo 24Kitchen +
+
+ logo Filmbox.nl +
+
+ logo Ziggo Sport +
+
+ logo ESPN +
+
+ logo Eurosport 1 +
+
+ logo BVN +
+
+ logo Discovery Science +
+
+ logo Investigation Discovery +
+
+ logo Eén +
+
+ logo Canvas +
+
+ logo Fox +
+
+ logo MTV +
+
+ logo XITE +
+
+ logo TV 538 +
+
+ logo TLC +
+
+ logo Nickelodeon +
+
+ logo Animal Planet +
+
+ logo RTL Z +
+
+ logo OUTtv +
+
+ logo Play4 +
+
+ logo BBC 1 +
+
+ logo BBC 2 +
+
+ logo BBC 4 +
+
+ logo BBC World +
+
+ logo BBC Entertainment +
+
+ logo CNN +
+
+ logo CNBC +
+
+ logo ARD +
+
+ logo ZDF +
+
+ logo NDR Fernsehen +
+
+ logo WDR Fernsehen +
+
+ logo 3Sat +
+
+ logo Sat 1 +
+
+ logo RTL +
+
+ logo PRO 7 +
+
+ logo ARTE +
+
+ logo TV5MONDE +
+
+ logo RTBF La 1 +
+
+ logo RTBF La 2 +
+
+ logo Rai Uno +
+
+ logo TV E +
+
+ logo TRT World +
+
+ logo Film 1 Premiere +
+
+ logo Film1 Family +
+
+ logo Film1 Action +
+
+ logo Film1 Drama +
+
+ logo Cartoon Network +
+
+ logo Ziggo Sport Select +
+
+ logo Ziggo Sport Tennis +
+
+ logo Ziggo Sport Racing +
+
+ logo Ziggo Sport Voetbal +
+
+ logo Ziggo Sport Golf +
+
+ logo Ziggo Sport Docu +
+
+ logo ESPN 2 +
+
+ logo ESPN 3 +
+
+ logo ESPN 4 +
+
+ logo Eurosport 2 +
+
+ logo AT5 +
+
+ logo NH +
+
+ logo RTV Utrecht +
+
+ logo RTV West +
+
+ logo RTV Rijnmond +
+
+ logo TV Noord +
+
+ logo Omrop Fryslân +
+
+ logo RTV Drenthe +
+
+ logo RTV Oost +
+
+ logo Omroep Gelderland +
+
+ logo Omroep Flevoland +
+
+ logo Omroep Brabant +
+
+ logo L1 TV +
+
+ logo Omroep Zeeland +
+
+ logo NPO 1 extra +
+
+ logo NPO 2 extra +
+
+ logo NPO Politiek +
+
+ logo Veronica +
+
+ logo Disney XD +
+
+ logo RTL Telekids +
+
+ logo VRT Ketnet +
+
+ logo Nick Jr. +
+
+ logo Disney Channel +
+
+ logo Pebble TV +
+
+ logo Boomerang +
+
+ logo RTL Lounge +
+
+ logo Rtl crime +
+
+ logo HISTORY +
+
+ logo Nat Geo Wild +
+
+ logo Love Nature +
+
+ logo Extreme Sports Channel +
+
+ logo Euronews +
+
+ logo Al Jazeera Engels +
+
+ logo Stingray Classica +
+
+ logo Mezzo +
+
+ logo Oranje TV +
+
+ logo Comedy Central Extra +
+
+ logo INPLUS +
+
+ logo E! Entertainment +
+
+ logo ShortsTV +
+
+ logo CBS Reality +
+
+ logo Beleef KPN +
+
+
+
+ +
+
+ +
+
+ +
+
+ + + + +

+
+
+
+
+ + + +
+
+
+ +
+
+
+ +
+ +
+
+ + +
+
+ +
+
+
+ +
+
+ +
+
+ +

Eurosport 1

+
+
+ +
+ +
+
+ + + + +
+
+
+ +
+ +
+
+
+ +
+ + + + +
+
+
+ +
+ + + + +
+
+
+ +
+
+
+
+ +
+
+
+
+ +
+ + + +
+
+
+ +
+
+
+
+ +
+
+
+
+ +
+ + +
+ +
+
+
+ +

Primetime

+ +
+
+
+
+
+
+
+

Alles over de TV gids

+
+

De tv gids van TVgids.nl is al bijna twintig jaar dé plek om te zien wat er de komende tijd allemaal op televisie is. Bekijk het zenderoverzicht van de complete tv gids via de zenderbalk bovenin of wissel van dag om te zien wat er nog op televisie komt of al is geweest.

+

Wil je liever alleen zien wat er vanavond op televisie is? Gebruik dan onze Primetime pagina. Hier tonen we de programma’s die op tv zijn vanaf 19:00 uur.

+

Ben je meer geïnteresseerd in wat er nu en straks op televisie is? Daar helpen we je natuurlijk ook graag mee. Via onze overzichtelijke Nu & Straks pagina laten we je zien wat er op dit moment op jouw favoriete tv zenders te zien is en wat er direct daarna zal beginnen.

+

Wil je meer controle over de tv gids? Pas hem dan aan naar jouw eigen voorkeuren door een gratis account aan te maken. Hier kun je zelf instellen welke zenders je wil zien en in welke volgorde. Daarnaast kun je meldingen aanzetten, zodat je de start van een favoriet televisie programma nooit meer hoeft te missen!

+
+
+
+
+
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file From bc05e8ddb32fdfff2cc465d1e41adb251d9d8729 Mon Sep 17 00:00:00 2001 From: Aleksandr Statciuk Date: Thu, 17 Nov 2022 08:58:12 +0300 Subject: [PATCH 2/6] Create tvgids.nl.test.js --- sites/tvgids.nl/tvgids.nl.test.js | 59 +++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 sites/tvgids.nl/tvgids.nl.test.js diff --git a/sites/tvgids.nl/tvgids.nl.test.js b/sites/tvgids.nl/tvgids.nl.test.js new file mode 100644 index 00000000..37920227 --- /dev/null +++ b/sites/tvgids.nl/tvgids.nl.test.js @@ -0,0 +1,59 @@ +// npm run channels:parse -- --config=./sites/tvgids.nl/tvgids.nl.config.js --output=./sites/tvgids.nl/tvgids.nl_nl.channels.xml +// npx epg-grabber --config=sites/tvgids.nl/tvgids.nl.config.js --channels=sites/tvgids.nl/tvgids.nl_nl.channels.xml --output=guide.xml --days=2 + +const { parser, url } = require('./tvgids.nl.config.js') +const fs = require('fs') +const path = require('path') +const dayjs = require('dayjs') +const utc = require('dayjs/plugin/utc') +const customParseFormat = require('dayjs/plugin/customParseFormat') +dayjs.extend(customParseFormat) +dayjs.extend(utc) + +const date = dayjs.utc('2022-11-18', 'YYYY-MM-DD').startOf('d') +const channel = { + site_id: 'eurosport1', + xmltv_id: 'Eurosport1Netherlands.nl' +} + +it('can generate valid url', () => { + expect(url({ date, channel })).toBe('https://www.tvgids.nl/gids/18-11-2022/eurosport1') +}) + +it('can generate valid url for today', () => { + const today = dayjs.utc().startOf('d') + + expect(url({ date: today, channel })).toBe('https://www.tvgids.nl/gids/eurosport1') +}) + +it('can parse response', () => { + const content = fs.readFileSync(path.resolve(__dirname, '__data__/content.html')) + const results = parser({ content, date }).map(p => { + p.start = p.start.toJSON() + p.stop = p.stop.toJSON() + return p + }) + + expect(results[0]).toMatchObject({ + start: '2022-11-17T22:30:00.000Z', + stop: '2022-11-17T23:30:00.000Z', + title: 'Autosport: 8 uur van Bahrein', + description: 'Verslag van de 8 uur van Bahrein, gereden op het Bahrain International Circuit.' + }) + + expect(results[1]).toMatchObject({ + start: '2022-11-17T23:30:00.000Z', + stop: '2022-11-18T00:30:00.000Z', + title: 'Powerlifting: Wereldkampioenschap Viborg', + description: 'Verslag van de krachtsport powerlifting.', + icon: 'https://tvgidsassets.nl/v270/upload/p/klein/powerlifting-wereldkampioenschap-viborg-418877211.jpg' + }) +}) + +it('can handle empty guide', () => { + const result = parser({ + content: ``, + date + }) + expect(result).toMatchObject([]) +}) From 87fc232dd9732c99c4415d62520131b553fcae69 Mon Sep 17 00:00:00 2001 From: Aleksandr Statciuk Date: Thu, 17 Nov 2022 08:58:17 +0300 Subject: [PATCH 3/6] Create tvgids.nl.config.js --- sites/tvgids.nl/tvgids.nl.config.js | 88 +++++++++++++++++++++++++++++ 1 file changed, 88 insertions(+) create mode 100644 sites/tvgids.nl/tvgids.nl.config.js diff --git a/sites/tvgids.nl/tvgids.nl.config.js b/sites/tvgids.nl/tvgids.nl.config.js new file mode 100644 index 00000000..91f95c9e --- /dev/null +++ b/sites/tvgids.nl/tvgids.nl.config.js @@ -0,0 +1,88 @@ +const cheerio = require('cheerio') +const axios = require('axios') +const dayjs = require('dayjs') +const utc = require('dayjs/plugin/utc') +const timezone = require('dayjs/plugin/timezone') +const isToday = require('dayjs/plugin/isToday') + +dayjs.extend(utc) +dayjs.extend(isToday) +dayjs.extend(timezone) + +module.exports = { + site: 'tvgids.nl', + url: function ({ date, channel }) { + const path = date.isToday() ? '' : `${date.format('DD-MM-YYYY')}/` + + return `https://www.tvgids.nl/gids/${path}${channel.site_id}` + }, + parser: function ({ content, date }) { + date = date.subtract(1, 'd') + let programs = [] + const items = parseItems(content) + items.forEach(item => { + const $item = cheerio.load(item) + const prev = programs[programs.length - 1] + let start = parseStart($item, date) + if (prev) { + if (start.isBefore(prev.start)) { + start = start.add(1, 'd') + date = date.add(1, 'd') + } + prev.stop = start + } + const stop = start.add(30, 'm') + programs.push({ + title: parseTitle($item), + description: parseDescription($item), + icon: parseIcon($item), + start, + stop + }) + }) + + return programs + }, + async channels() { + const data = await axios + .get(`https://www.tvgids.nl/gids/`) + .then(r => r.data) + .catch(console.log) + const $ = cheerio.load(data) + + const channels = [] + $('#channel-container > div').each((i, el) => { + channels.push({ + site_id: $(el).find('a').attr('id'), + name: $(el).find('img').attr('title'), + lang: 'nl' + }) + }) + + return channels + } +} + +function parseTitle($item) { + return $item('.program__title').text().trim() +} + +function parseDescription($item) { + return $item('.program__text').text().trim() +} + +function parseIcon($item) { + return $item('.program__thumbnail').data('src') +} + +function parseStart($item, date) { + const time = $item('.program__starttime').text().trim() + + return dayjs.tz(`${date.format('YYYY-MM-DD')} ${time}`, 'YYYY-MM-DD HH:mm', 'Europe/Amsterdam') +} + +function parseItems(content) { + const $ = cheerio.load(content) + + return $('.guide__guide .program').toArray() +} From 86d163465395857b652be79c5357453868854ca8 Mon Sep 17 00:00:00 2001 From: Aleksandr Statciuk Date: Thu, 17 Nov 2022 09:09:50 +0300 Subject: [PATCH 4/6] Create tvgids.nl_nl.channels.xml --- sites/tvgids.nl/tvgids.nl_nl.channels.xml | 122 ++++++++++++++++++++++ 1 file changed, 122 insertions(+) create mode 100644 sites/tvgids.nl/tvgids.nl_nl.channels.xml diff --git a/sites/tvgids.nl/tvgids.nl_nl.channels.xml b/sites/tvgids.nl/tvgids.nl_nl.channels.xml new file mode 100644 index 00000000..14f9523e --- /dev/null +++ b/sites/tvgids.nl/tvgids.nl_nl.channels.xml @@ -0,0 +1,122 @@ + + + + 24Kitchen + 3Sat + Al Jazeera Engels + Animal Planet + ARTE + AT5 + BBC Entertainment + BBC First + BBC World + Beleef KPN + Boomerang + BVN + Canvas + Cartoon Network + CBS Reality + CNBC + CNN + Comedy Central Extra + Comedy Central + Crime + Investigation + Discovery + Disney Channel + Disney XD + Eén + ESPN 2 + ESPN 3 + ESPN 4 + ESPN + Eurosport 1 + Eurosport 2 + Extreme Sports Channel + Film1 Action + Film1 Drama + Film1 Family + Film 1 Premiere + Filmbox.nl + Fox + HISTORY + INPLUS + Investigation Discovery + VRT Ketnet + L1 TV + RTBF La 1 + Love Nature + Mezzo + MTV + National Geographic + Nat Geo Wild + NDR Fernsehen + NET 5 + NH + Nickelodeon + Nick Jr. + NPO 1 + NPO 1 extra + NPO 2 + NPO 2 extra + NPO 3 + NPO Politiek + Omroep Brabant + Omroep Flevoland + Omroep Gelderland + Omroep Zeeland + Omrop Fryslân + Ons + OUTtv + Pebble TV + Play4 + PRO 7 + Rai Uno + RTL 4 + RTL 5 + RTL 7 + RTL 8 + Rtl crime + RTL Lounge + RTL Telekids + RTL Z + RTV Drenthe + RTV Oost + RTV Rijnmond + RTV Utrecht + SBS 6 + SBS 9 + ShortsTV + Stingray Classica + RTBF La 2 + TLC + TRT World + TV 538 + TV5MONDE + TV E + TV Noord + Oranje TV + RTV West + Veronica + Veronica/Disney XD + XITE + ZDF + Ziggo Sport + Ziggo Sport Docu + Ziggo Sport Golf + Ziggo Sport Racing + Ziggo Sport Select + Ziggo Sport Tennis + Ziggo Sport Voetbal + + + + + + + + + + + + + From ec189b59941a57c616432ad103efba01db43c961 Mon Sep 17 00:00:00 2001 From: Aleksandr Statciuk Date: Thu, 17 Nov 2022 09:09:56 +0300 Subject: [PATCH 5/6] Create tvgids.nl.yml --- .github/workflows/tvgids.nl.yml | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 .github/workflows/tvgids.nl.yml diff --git a/.github/workflows/tvgids.nl.yml b/.github/workflows/tvgids.nl.yml new file mode 100644 index 00000000..e7c1546e --- /dev/null +++ b/.github/workflows/tvgids.nl.yml @@ -0,0 +1,17 @@ +name: tvgids.nl +on: + schedule: + - cron: '0 3 * * *' + workflow_dispatch: + workflow_run: + workflows: [_trigger] + types: + - completed +jobs: + load: + uses: ./.github/workflows/_load.yml + with: + site: ${{github.workflow}} + secrets: + APP_ID: ${{ secrets.APP_ID }} + APP_PRIVATE_KEY: ${{ secrets.APP_PRIVATE_KEY }} From 1363a9350af06df3e057e3384d3d95fefc28777e Mon Sep 17 00:00:00 2001 From: Aleksandr Statciuk Date: Thu, 17 Nov 2022 09:30:56 +0300 Subject: [PATCH 6/6] Update tvgids.nl_nl.channels.xml --- sites/tvgids.nl/tvgids.nl_nl.channels.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sites/tvgids.nl/tvgids.nl_nl.channels.xml b/sites/tvgids.nl/tvgids.nl_nl.channels.xml index 14f9523e..dda29fe3 100644 --- a/sites/tvgids.nl/tvgids.nl_nl.channels.xml +++ b/sites/tvgids.nl/tvgids.nl_nl.channels.xml @@ -66,7 +66,7 @@ Omroep Zeeland Omrop Fryslân Ons - OUTtv + OUTtv Pebble TV Play4 PRO 7