From 3e651ae3567f3bd0b500f29db33b487f34bf4a1e Mon Sep 17 00:00:00 2001 From: freearhey <7253922+freearhey@users.noreply.github.com> Date: Tue, 14 Jan 2025 00:10:02 +0300 Subject: [PATCH 1/5] Create content.html --- .../tv-spored.siol.net/__data__/content.html | 3347 +++++++++++++++++ 1 file changed, 3347 insertions(+) create mode 100644 sites/tv-spored.siol.net/__data__/content.html diff --git a/sites/tv-spored.siol.net/__data__/content.html b/sites/tv-spored.siol.net/__data__/content.html new file mode 100644 index 00000000..19ffa817 --- /dev/null +++ b/sites/tv-spored.siol.net/__data__/content.html @@ -0,0 +1,3347 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + TV spored za Exodus TV za 15. 1. 2025 na Siol.net + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
+ +
+ +
+
+
+
+
+ TV Spored logo +
+ +
+
+ + Vreme +
+
+
+
+ +
+
+ FilmŠportDokumentarniOtroškiNadaljevanke-nanizanke +
+
+
+
+
+
+ Siol.net +
+
+ +
+ +
+ +
+ + + + +
+
+ Kolumne +
+ +
+
+
+ Spotkast +
+ +
+ +
+ + +
+ + +
+ +
+
+
+
+
+ +
+ +
+ +
+ +
Exodus TV
+ +
+ +
+
+ +
+ + + + +
+
+
+ +
+ +
+ +
+ +
+ Vpišite / Izberite kategorijo +
+ +
+ +
+
+ +
+ + +
+
+
+ +
+ +
+ +
+ +
+ Vpišite / Izberite podkategorijo +
+ +
+ +
+
+ +
+ + +
+
+
+
+
+ +
+
+ +
+
+
+
+
+
+
+
+
+
+
+
+
+
+

TV spored za Exodus TV za 15. 1. 2025

+
+
+
+
+
+
+ Exodus TV +
+ Exodus TV +
+
+
+
0.45
+
+
+ Večernice, Molitveno bogoslužje +
+
Ostalo
+
1.00
+
+
+ Novice iz Svete dežele +
+
Informativni
+
1.30
+
+
+ Novice iz Vatikana +
+
Informativni
+
1.50
+
+
+ Svetnik dneva +
+
Informativni
+
2.00
+
+
+ Učitelji Cerkve (E2) +
+
Ostalo
+
2.30
+
+
+ Na robu znanega: Ob izidu knjige, Menih v vrtincu sirske vojne +
+
Ostalo
+
3.00
+
+
+ Sveta Marija Goretti +
+
Dokumentarni
+
3.25
+
+
+ Novice Radia Vatikan +
+
Ostalo
+
3.45
+
+
+ Iz tega razloga +
+
Film
+
5.30
+
+
+ Rožni venec, častitljivi del +
+
Ostalo
+
6.00
+
+
+ Sveta maša +
+
Ostalo
+
6.45
+
+
+ Hvalnice, Molitveno bogoslužje +
+
Ostalo
+
7.00
+
+
+ Novice iz Svete dežele +
+
Informativni
+
7.30
+
+
+ Novice iz Vatikana +
+
Informativni
+
7.50
+
+
+ Svetnik dneva +
+
Informativni
+
8.00
+
+
+ Za skupno dobro: Rešitev ali usodna prevara, splav, evtanazija +
+
Ostalo
+
9.00
+
+
+ Avdienca in kateheza papeža Frančiška +
+
Ostalo
+
10.00
+
+
+ Elena Privalova: orgelski koncert v Koprski stolnici +
+
Kultura-umetnost
+
11.00
+
+
+ Zaupam v Tebe (E2) +
+
Film
+
11.30
+
+
+ Rožni venec, častitljivi del +
+
Ostalo
+
12.00
+
+
+ Sveta maša, v živo iz studijske kapele +
+
Ostalo
+
12.45
+
+
+ Dnevna molitvena ura, Molitveno bogoslužje +
+
Ostalo
+
13.00
+
+
+ Poročilo iz Vatikana +
+
Informativni
+
13.30
+
+
+ Novice iz Vatikana +
+
Informativni
+
13.50
+
+
+ Svetnik dneva +
+
Informativni
+
14.00
+
+
+ Učitelji Cerkve (E2) +
+
Ostalo
+
14.30
+
+
+ Na robu znanega: Ob izidu knjige, Menih v vrtincu sirske vojne +
+
Ostalo
+
15.00
+
+
+ Sveta Marija Goretti +
+
Dokumentarni
+
15.25
+
+
+ Novice Radia Vatikan +
+
Ostalo
+
15.45
+
+
+ Iz tega razloga +
+
Film
+
17.30
+
+
+ Rožni venec, častitljivi del +
+
Ostalo
+
18.00
+
+
+ Sveta maša +
+
Ostalo
+
18.45
+
+
+ Večernice, Molitveno bogoslužje +
+
Ostalo
+
19.00
+
+
+ Poročilo iz Vatikana +
+
Informativni
+
19.30
+
+
+ Novice iz Vatikana +
+
Informativni
+
19.50
+
+
+ Svetnik dneva +
+
Informativni
+
20.00
+
+
+ PriVidi: Kreacija ali evolucija? +
+
Informativni
+
21.00
+
+
+ Avdienca in kateheza papeža Frančiška +
+
Ostalo
+
22.00
+
+
+ Novice Radia Vatikan +
+
Ostalo
+
22.20
+
+
+ Draga 2024 (E2) +
+
Ostalo
+
23.30
+
+
+ Rožni venec, častitljivi del +
+
Ostalo
+
0.00
+
+
+ Sveta maša +
+
Ostalo
+
+
+
+
+ +
+ +
+
+ Aktualno +
+ +
+ +
+
+ NAI darilaNAI darila +

Izdelki po akcijskih cenah.

Točke zvestobeTočke zvestobe +

Preveri ugodnosti.

E-trgovinaE-trgovina +

NAI darila po akcijskih cenah.

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

+ © TSmedia, medijske vsebine in storitve, d. o. o.
Vse pravice pridržane 1997-2024. +

+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From 8656e3fe6af2e3bcf43079030cdd313d1f81481e Mon Sep 17 00:00:00 2001 From: freearhey <7253922+freearhey@users.noreply.github.com> Date: Tue, 14 Jan 2025 00:10:18 +0300 Subject: [PATCH 2/5] Create tv-spored.siol.net.test.js --- .../tv-spored.siol.net.test.js | 56 +++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 sites/tv-spored.siol.net/tv-spored.siol.net.test.js diff --git a/sites/tv-spored.siol.net/tv-spored.siol.net.test.js b/sites/tv-spored.siol.net/tv-spored.siol.net.test.js new file mode 100644 index 00000000..846efbcf --- /dev/null +++ b/sites/tv-spored.siol.net/tv-spored.siol.net.test.js @@ -0,0 +1,56 @@ +const { parser, url, request } = require('./tv-spored.siol.net.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('2025-01-15', 'YYYY-MM-DD').startOf('d') +const channel = { + site_id: 'exodustv', + xmltv_id: 'ExodusTV.si' +} + +it('can generate valid url', () => { + expect(url({ channel, date })).toBe('https://tv-spored.siol.net/kanal/exodustv/datum/20250115') +}) + +it('can generate request headers', () => { + expect(request.headers).toMatchObject({ + Accept: 'text/html' + }) +}) + +it('can parse response', () => { + const content = fs.readFileSync(path.resolve(__dirname, '__data__/content.html')) + const results = parser({ content, date }) + + expect(results.length).toBe(41) + expect(results[0]).toMatchObject({ + start: '2025-01-15T00:00:00.000Z', + stop: '2025-01-15T00:30:00.000Z', + title: 'Novice iz Svete dežele', + category: 'informativni', + season: null, + episode: null + }) + + expect(results[40]).toMatchObject({ + start: '2025-01-15T23:00:00.000Z', + stop: '2025-01-15T23:45:00.000Z', + title: 'Sveta maša', + category: 'ostalo', + season: null, + episode: null + }) +}) + +it('can handle empty guide', () => { + const result = parser({ + date, + content: '' + }) + expect(result).toMatchObject([]) +}) From ea59a806f5dd13973dde18bb5ac9d59653ee2136 Mon Sep 17 00:00:00 2001 From: freearhey <7253922+freearhey@users.noreply.github.com> Date: Tue, 14 Jan 2025 00:10:34 +0300 Subject: [PATCH 3/5] Create tv-spored.siol.net.config.js --- .../tv-spored.siol.net.config.js | 81 +++++++++++++++++++ 1 file changed, 81 insertions(+) create mode 100644 sites/tv-spored.siol.net/tv-spored.siol.net.config.js diff --git a/sites/tv-spored.siol.net/tv-spored.siol.net.config.js b/sites/tv-spored.siol.net/tv-spored.siol.net.config.js new file mode 100644 index 00000000..45b8031f --- /dev/null +++ b/sites/tv-spored.siol.net/tv-spored.siol.net.config.js @@ -0,0 +1,81 @@ +const axios = require('axios') +const cheerio = require('cheerio') + +module.exports = { + site: 'tv-spored.siol.net', + days: 2, + url({ channel, date }) { + return `https://tv-spored.siol.net/kanal/${channel.site_id}/datum/${date.format('YYYYMMDD')}` + }, + request: { + headers: { + Accept: 'text/html' + } + }, + parser({ content, date }) { + const items = parseItems(content, date) + + return items.map(item => ({ + title: item.title, + category: item.category, + season: item.season, + episode: item.episode, + start: item.startDateTime, + stop: item.stopDateTime + })) + }, + async channels() { + const content = await axios + .get('https://tv-spored.siol.net/', { + headers: { + Accept: 'text/html' + } + }) + .then(r => r.data) + .catch(console.log) + + const $ = cheerio.load(content) + const script = $('script:contains(tvChannelsAsJson)').text() + const func = new Function(`const self = { __next_f: [] };${script};return self.__next_f`) + const __next_f = func() + if (!__next_f[0] || !__next_f[0][1]) return [] + const [, dataString] = __next_f[0][1].split(/:(.*)/s) + const data = JSON.parse(dataString) + const tvChannelsAsJson = findByKey(data, 'tvChannelsAsJson') + + return tvChannelsAsJson.map(item => ({ + name: item.name, + site_id: item.externalId.toLowerCase(), + lang: 'sl' + })) + } +} + +function parseItems(content, date) { + try { + const $ = cheerio.load(content) + const script = $('script:contains(channelsAsJson)').text() + const func = new Function(`const self = { __next_f: [] };${script};return self.__next_f`) + const __next_f = func() + if (!__next_f[0] || !__next_f[0][1]) return [] + const [, dataString] = __next_f[0][1].split(/:(.*)/s) + const data = JSON.parse(dataString) + const channelsAsJson = findByKey(data, 'channelsAsJson') + + if (!channelsAsJson[0] || !Array.isArray(channelsAsJson[0].events)) return [] + + return channelsAsJson[0].events.filter(p => date.isSame(p.startDateTime, 'day')) + } catch { + return [] + } +} + +function findByKey(arr, key) { + if (!Array.isArray(arr)) return + return arr.reduce((a, item) => { + if (a) return a + if (item && item[key]) return item[key] + if (item && item.children) return findByKey(item.children, key) + if (Array.isArray(item)) return findByKey(item, key) + }, null) +} From 1d289d25427ce37cee545f3867884135f05ef611 Mon Sep 17 00:00:00 2001 From: freearhey <7253922+freearhey@users.noreply.github.com> Date: Tue, 14 Jan 2025 00:10:58 +0300 Subject: [PATCH 4/5] Create tv-spored.siol.net.channels.xml --- .../tv-spored.siol.net.channels.xml | 315 ++++++++++++++++++ 1 file changed, 315 insertions(+) create mode 100644 sites/tv-spored.siol.net/tv-spored.siol.net.channels.xml diff --git a/sites/tv-spored.siol.net/tv-spored.siol.net.channels.xml b/sites/tv-spored.siol.net/tv-spored.siol.net.channels.xml new file mode 100644 index 00000000..0c06d638 --- /dev/null +++ b/sites/tv-spored.siol.net/tv-spored.siol.net.channels.xml @@ -0,0 +1,315 @@ + + + 3sat + Televizija 24 + TV Vijesti + 360 TuneBox + Adria + Kanal A + Alfa TV + Al Jazeera Balkans + Alsat Macedonia + Elta 2 + Angels HD + Animal Planet HD + ePosavje TV + ARD + Arena Fight + Arena Sport 1 Premium + Arena Sport 1 + Arena Sport 2 + Arena Sport 3 + Arena Sport 4 + Arena TV + Arte + ATM TV Kranjska Gora HD + B92 + Baby TV + Balkan Erotic + Balkan trip + BBC Earth + BBC First HD + BBC News + BHT1 + BIR + BK TV + Bloomberg Adria + BN TV 2 + BooB HD + Cartoonito + Brio + Capable Hole HD + Veseljak Golica + Cartoon + Cinemax + Cinemax 2 + CineStar TV Action & Thriller + Cinestar Fantasy + CineStar TV Premiere 1 + CineStar TV Premiere 2 + Cinestar TV 1 + Cinestar TV 2 + CMC + CNN + Curiosity Channel + Da Vinci Learning + Devils Home HD + Discovery ID Xtra + Discovery Channel HD + Discovery TLC + Disney Channel + Disney Junior + Dizi + DM SAT + DocuBox + Dog TV + Dom Kino + 24Kitchen + Dorcel TV HD + Dorcel XXX HD + DOX TV + Dr. Fit + TV Duga Novi sad + Duna World + Dusk TV + E! + ELTA HD + ELTA TV + 1+1 International + Epic Drama + Erox + Eroxxx + ETV HD + Eurosport 1 + Eurosport 2 + EWTN + Exodus TV + Viasat Explore + Extreme TV + Extrem + Fashion TV + FashionBox + Fashion HD + Fast and FunBox + FightBox + FilmBox Arthouse + FilmBox Extra + FilmBox Premium + FilmBox Stars + Folk Plus + Folx + STAR Channel + STAR Crime + STAR Life + STAR Movies + Fox News + Foxy Dolls HD + France 24 + Pinko club + FTV + FunBox + TV Galeja HD + Gametoon + Gea TV + Glam HD + Gold TV + H2 + Diva + Happy TV + Happy Puppy + Happy Reality 1 + Happy Reality 2 + Hayat + HBO + HBO 2 + HBO 3 + Hema + HGTV + Viasat History + History Channel + Hot Pleasure + Hot XXL + HRT 1 + HRT 2 + HRT 3 + Hustler TV + Hustler TV HD + ICTbusiness TV + Kanal 10 / Idea TV + Top TV + TV RI + Jabuka (OTV) + TV Jadran + JimJam + Jugoton + Kabel 1 + NTV IC Kakanj + Karousel + KCN 1 + KCN 2 (music) + KIC TV + Kitchen TV + Klasik + TV Koper Capodistria + KOROŠKA TV + LH TV HD + Ljubljana TV HD + Mediaset Italia + Megafon TV HD + Mezzo + Mezzo Live HD + AMC + Minimax + MIXXX HD + MTV 1 + MTV 2 + MTV 3 + Motorvision+ + MTV 90s + Club MTV + MTV Hits + MTV HD + Museum HD + Muzika Pervogo + Narodna TV + NAŠA TV + National Geographic + National Geographic Wild + NET TV + Nick Jr. + Nickelodeon + NickToons + Nova 24 TV + Nova 24 TV 2 + n-tv + OBN + One Adria + ORF 1 + ORF 2 + Oron TV + OTV Valentino + BEST TV + Passion XXX HD + Pickbox TV + Pink Plus + Pink Extra + Pink Film + Pink Folk + Pink Folk 2 + Pink Koncert + Pink Music + Pink'n'Roll + Pink Reality + Pink Serije + Pink Show + TV3 + PINK SI + Pink Zabava + Planet 2 + Planet Earth + Planet Eva + Planet + Playboy TV + Kino + OTO + POP TV + Private TV + Pro7 + TV Prva Files + TV Prva Kick + TV Prva Life + TV Prva Max + TV Prva Plus + PRVA Srbska TV + PRVA TV + TV Prva World + Ptujska TV + RAI 1 + RAI 2 + RAI 3 + R Kanal+ + Reality Kings TV + MNE + RTCG 2 + RTK + RTL + RTL II + RTL Hrvaška + RTL 2 Hrvaška + RTL Kockica + RTL Living + RTRS + RT Srbija HD + RTS 1 + RTS 2 + RTS Maribor + TV Sarajevo + SAT 1 + Redlight HD + Savinjska TV + SciFi + Vivid Red HD + CentoXCento + Sexation + SIP TV + TV Sitel + Sky News + TV SLO 1 + TV SLO 2 + TV SLO 3 + SLON TV extra + Sonce TV + KCN 3 (svet+) + Brazzers TV Europe + Šport TV 1 + Šport TV 2 + Šport TV 3 + Super One HD + Super RTL + Telecafe + Tele Maribor + Trace Urban + Trace Sport + Travel Channel + Travelxp 4K + Travelxp HD + Tring 7 + Tring Max + Tring Shqip + Tring Tring + Tring Vizion+ + Tržič TV + O Kanal + TV5MONDE + Tv8 + TV 1000 + Arena eSport + TV As + TV Beltinci + TV Celje + TVE + TV Zlati zvoki + TV Miklavž HD + TV nakupi HD + Tv Ormož HD + AKTUAL TV + TV Radgona + TV Vascom + Vaš kanal + MTV 00s + MTV 80s + Viasat Nature + Vikom + Vitel + Vivid Touch + VOX + Vremya + VTV + Woman + XXXTAZY HD + Nautical Channel + Z1 Televizija + ZDF + Zdrava Televizija + Zdrava TV + From 0f8e2ee41f817f27c56625c6e0c1091c78000349 Mon Sep 17 00:00:00 2001 From: freearhey <7253922+freearhey@users.noreply.github.com> Date: Tue, 14 Jan 2025 00:11:14 +0300 Subject: [PATCH 5/5] Create readme.md --- sites/tv-spored.siol.net/readme.md | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 sites/tv-spored.siol.net/readme.md diff --git a/sites/tv-spored.siol.net/readme.md b/sites/tv-spored.siol.net/readme.md new file mode 100644 index 00000000..12e2371c --- /dev/null +++ b/sites/tv-spored.siol.net/readme.md @@ -0,0 +1,21 @@ +# tv-spored.siol.net + +https://tv-spored.siol.net/ + +### Download the guide + +```sh +npm run grab --- --site=tv-spored.siol.net +``` + +### Update channel list + +```sh +npm run channels:parse --- --config=./sites/tv-spored.siol.net/tv-spored.siol.net.config.js --output=./sites/tv-spored.siol.net/tv-spored.siol.net.channels.xml +``` + +### Test + +```sh +npm test --- tv-spored.siol.net +```