From 634188f008f6e8e70b6191313e62b3724511e908 Mon Sep 17 00:00:00 2001 From: fraudiay79 <60631277+fraudiay79@users.noreply.github.com> Date: Thu, 26 Dec 2024 15:12:19 -0500 Subject: [PATCH 1/4] Create neo.io.test.js --- sites/neo.io/neo.io.test.js | 121 ++++++++++++++++++++++++++++++++++++ 1 file changed, 121 insertions(+) create mode 100644 sites/neo.io/neo.io.test.js diff --git a/sites/neo.io/neo.io.test.js b/sites/neo.io/neo.io.test.js new file mode 100644 index 00000000..3698a2fb --- /dev/null +++ b/sites/neo.io/neo.io.test.js @@ -0,0 +1,121 @@ +const { parser, url } = require('./neo.io.config.js') +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('2024-12-26', 'YYYY-MM-DD').startOf('day') +const channel = { + site_id: 'tv-slo-1', + xmltv_id: 'TVSLO1.si' +} + +it('can generate valid url', () => { + expect(url({ date, channel })).toBe('https://stargate.telekom.si/api/titan.tv.WebEpg/GetWebEpgData') +}) + +it('can parse response', () => { + const content = ` + { + "shows": [ + { + "title": "Napovedujemo", + "show_start": 1735185900, + "show_end": 1735192200, + "timestamp": "5:05 - 6:50", + "show_id": "CUP_IECOM_SLO1_10004660", + "thumbnail": "https://ngimg.siol.tv/sioltv/mtcmsprod/52/0/0/5200d01a-fe5f-487e-835a-274e77227a6b.jpg", + "is_adult": false, + "friendly_id": "napovedujemo_db48", + "pg": "", + "genres": [ + "napovednik" + ], + "year": 0, + "summary": "Vabilo k ogledu naših oddaj.", + "categories": "Ostalo", + "stb_only": false, + "is_live": false, + "original_title": "Napovedujemo" + }, + { + "title": "S0E0 - Hrabri zajčki: Prvi sneg", + "show_start": 1735192200, + "show_end": 1735192800, + "timestamp": "6:50 - 7:00", + "show_id": "CUP_IECOM_SLO1_79637910", + "thumbnail": "https://ngimg.siol.tv/sioltv/mtcmsprod/d6/4/5/d6456f4a-4f0a-4825-90c1-1749abd59688.jpg", + "is_adult": false, + "friendly_id": "hrabri_zajcki_prvi_sneg_1619", + "pg": "", + "genres": [ + "risanka" + ], + "year": 2020, + "summary": "Hrabri zajčki so prispeli v borov gozd in izkusili prvi sneg. Bob in Bu še nikoli nista videla snega. Mami kuha korenčkov kakav, Bu in Bob pa kmalu spoznata novega prijatelja, losa Danija.", + "categories": "Otroški/Mladinski", + "stb_only": false, + "is_live": false, + "original_title": "S0E0 - Brave Bunnies" + }, + { + "title": "Dobro jutro", + "show_start": 1735192800, + "show_end": 1735203900, + "timestamp": "7:00 - 10:05", + "show_id": "CUP_IECOM_SLO1_79637911", + "thumbnail": "https://ngimg.siol.tv/sioltv/mtcmsprod/e1/2/d/e12d8eb4-693a-43d3-89d4-fd96dade9f0f.jpg", + "is_adult": false, + "friendly_id": "dobro_jutro_2f10", + "pg": "", + "genres": [ + "zabavna oddaja" + ], + "year": 2024, + "summary": "Oddaja Dobro jutro poleg informativnih in zabavnih vsebin podaja koristne nasvete o najrazličnejših tematikah iz vsakdanjega življenja.", + "categories": "Razvedrilni program", + "stb_only": false, + "is_live": false, + "original_title": "Dobro jutro" + } + ] + }` + + const result = parser({ content, channel }).map(p => { + p.start = p.start + p.stop = p.stop + return p + }) + + expect(result).toMatchObject([ + { + title: "Napovedujemo", + description: "Vabilo k ogledu naših oddaj.", + start: "2024-12-26T04:05:00.000Z", + stop: "2024-12-26T05:50:00.000Z", + thumbnail: "https://ngimg.siol.tv/sioltv/mtcmsprod/52/0/0/5200d01a-fe5f-487e-835a-274e77227a6b.jpg" + }, + { + title: "S0E0 - Hrabri zajčki: Prvi sneg", + description: "Hrabri zajčki so prispeli v borov gozd in izkusili prvi sneg. Bob in Bu še nikoli nista videla snega. Mami kuha korenčkov kakav, Bu in Bob pa kmalu spoznata novega prijatelja, losa Danija.", + start: "2024-12-26T05:50:00.000Z", + stop: "2024-12-26T06:00:00.000Z", + thumbnail: "https://ngimg.siol.tv/sioltv/mtcmsprod/d6/4/5/d6456f4a-4f0a-4825-90c1-1749abd59688.jpg" + }, + { + title: "Dobro jutro", + description: "Oddaja Dobro jutro poleg informativnih in zabavnih vsebin podaja koristne nasvete o najrazličnejših tematikah iz vsakdanjega življenja.", + start: "2024-12-26T06:00:00.000Z", + stop: "2024-12-26T09:05:00.000Z", + thumbnail: "https://ngimg.siol.tv/sioltv/mtcmsprod/e1/2/d/e12d8eb4-693a-43d3-89d4-fd96dade9f0f.jpg" + } + ]) +}) + +it('can handle empty guide', () => { + const result = parser({ + content: '{"shows":[]}' + }) + expect(result).toMatchObject([]) +}) From 5b4240288d454a281e58a98b5ebba450eedf6c67 Mon Sep 17 00:00:00 2001 From: fraudiay79 <60631277+fraudiay79@users.noreply.github.com> Date: Thu, 26 Dec 2024 15:12:43 -0500 Subject: [PATCH 2/4] Create neo.io.config.js --- sites/neo.io/neo.io.config.js | 73 +++++++++++++++++++++++++++++++++++ 1 file changed, 73 insertions(+) create mode 100644 sites/neo.io/neo.io.config.js diff --git a/sites/neo.io/neo.io.config.js b/sites/neo.io/neo.io.config.js new file mode 100644 index 00000000..28d41e8d --- /dev/null +++ b/sites/neo.io/neo.io.config.js @@ -0,0 +1,73 @@ +const axios = require('axios') +const dayjs = require('dayjs') +const utc = require('dayjs/plugin/utc') +const timezone = require('dayjs/plugin/timezone') +const customParseFormat = require('dayjs/plugin/customParseFormat') + +dayjs.extend(utc) +dayjs.extend(timezone) +dayjs.extend(customParseFormat) + +module.exports = { + site: 'neo.io', + timezone: 'Europe/Ljubljana', + days: 5, + url({ date, channel }) { return 'https://stargate.telekom.si/api/titan.tv.WebEpg/GetWebEpgData' }, + request: { + method: 'POST', + headers: { + 'Host': 'stargate.telekom.si', + 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:121.0) Gecko/20100101 Firefox/121.0', + 'Accept': 'application/json, text/plain, */*', + 'Accept-Language': 'nl,en-US;q=0.7,en;q=0.3', + 'Content-Type': 'application/json', + 'X-AppLayout': '1', + 'x-language': 'sl', + 'Origin': 'https://neo.io', + 'Sec-Fetch-Dest': 'empty', + 'Sec-Fetch-Mode': 'cors', + 'Sec-Fetch-Site': 'cross-site', + 'Sec-GPC': '1', + 'Connection': 'keep-alive' + }, + data({ channel, date }) { + const todayEpoch = date.startOf('day').unix(); + const nextDayEpoch = date.add(1, 'day').startOf('day').unix(); + return JSON.stringify({ + ch_ext_id: channel.site_id, + from: todayEpoch, + to: nextDayEpoch + }) + } + }, + parser: function ({ content }) { + const programs = []; + const data = JSON.parse(content); + data.shows.forEach(show => { + const start = dayjs.unix(show.show_start).utc(); + const stop = dayjs.unix(show.show_end).utc(); + const programData = { + title: show.title, + description: show.summary || 'No description available', + start: start.toISOString(), + stop: stop.toISOString(), + thumbnail: show.thumbnail + } + programs.push(programData) + }) + return programs + }, + async channels() { + const response = await axios.post('https://stargate.telekom.si/api/titan.tv.WebEpg/ZapList', JSON.stringify({ includeRadioStations: true }), { + headers: this.request.headers + }); + + const data = response.data.data; + return data.map(item => ({ + lang: 'sq', + name: String(item.channel.title), + site_id: String(item.channel.id), + //logo: String(item.channel.logo) + })) + } +} From 22a061a384496c739890ae8afc8ec377fb7996a4 Mon Sep 17 00:00:00 2001 From: fraudiay79 <60631277+fraudiay79@users.noreply.github.com> Date: Thu, 26 Dec 2024 15:13:03 -0500 Subject: [PATCH 3/4] Create readme.md --- sites/neo.io/readme.md | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 sites/neo.io/readme.md diff --git a/sites/neo.io/readme.md b/sites/neo.io/readme.md new file mode 100644 index 00000000..e086e35d --- /dev/null +++ b/sites/neo.io/readme.md @@ -0,0 +1,15 @@ +# neo.io + +https://www.neo.io/tv-spored + +### Download the guide + +```sh +npm run grab --- --site=neo.io +``` + +### Test + +```sh +npm test --- neo.io +``` From baa6e36c43662874e494fe74ff7b006f499dfcd8 Mon Sep 17 00:00:00 2001 From: fraudiay79 <60631277+fraudiay79@users.noreply.github.com> Date: Thu, 26 Dec 2024 15:13:26 -0500 Subject: [PATCH 4/4] Create neo.io.channels.xml --- sites/neo.io/neo.io.channels.xml | 340 +++++++++++++++++++++++++++++++ 1 file changed, 340 insertions(+) create mode 100644 sites/neo.io/neo.io.channels.xml diff --git a/sites/neo.io/neo.io.channels.xml b/sites/neo.io/neo.io.channels.xml new file mode 100644 index 00000000..c7e3abc7 --- /dev/null +++ b/sites/neo.io/neo.io.channels.xml @@ -0,0 +1,340 @@ + + + 1+1 International + 3sat + 24Kitchen + Televizija 24 + TV Vijesti + 360 TuneBox + Adria + Alfa TV + Al Jazeera Balkans + Алсат-М + Elta 2 + AMC + Angels HD + Animal Planet + ePosavje TV + Arena eSport + Arena Fight + Arena Sport 1 Premium + Arena Sport 1 + Arena Sport 2 + Arena Sport 3 + Arena Sport 4 + Arena TV + Arte + ATM TV + B92 + Baby TV + Balkan Erotic + Balkan Trip + BBC Earth + BBC First + BBC News + Best TV + BHT1 + BIR TV + BK TV + Bloomberg Adria + BN TV 2 + BooB HD + BRIO + Canale 5 + 20 Mediaset + Capable Hole HD + Veseljak Golica + Cartoon Network + Cartoonito + Cartoonito + 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 + Das Erste + Da Vinci + Devils Home HD + Investigation Discovery + Discovery Channel + Disney Channel + Disney Junior + Diva + Dizi + DM Sat + DocuBox + Дом кино + Dorcel TV + Dorcel XXX + Dox TV + TV Duga Novi sad + Duna World + Duna HD + Dusk TV + E! + ELTA HD + ELTA TV + Epic Drama + EroX + EroXXX + ETV + Eurosport 1 + Eurosport 2 + EWTN + Exodus TV + Extreme Sports Channel + Extreme + Fashion TV + FashionBox + Fashion HD + Fashion TV 4K + Fast and FunBox + FightBox + FilmBox Arthouse + FilmBox Extra + FilmBox Premium + FilmBox Stars + Focus + Folk Plus + Folx + FOX News + Foxy Dolls HD + France 24 + Pinko Club + FTV + FunBox 4K + TV Galeja + Gametoon + Gasscore HD + Gea TV + Glam HD + Gold TV + Happy TV + Happy Reality 1 + Happy Reality 2 + Hayat + HBO + HBO 2 + HBO 3 + Hema + HGTV + History + History 2 + Hit TV + Hot Pleasure + Hot XXL + HRT 1 + HRT 2 + HRT 3 + Hustler TV + Hustler HD + ICTbusiness TV + Kanal 10 / Idea TV + TV RI + Italia 1 + Jabuka (OTV) + TV Jadran + JimJam + Jugoton + kabel eins + NTV IC Kakanj + Kamin + Kanal A + Карусель + KCN 1 + KCN 2 (music) + KIC TV + KINO + Kitchen TV + Klape i tambure TV + Klasik + TV Koper Capodistria + Koroška TV + Mreža TV + LH TV + Living HD + Ljubljana TV + M1 + M4 Sport + Mediaset Italia + Megafon TV + Mezzo + Mezzo Live HD + Minimax + MIxxx HD + MTV 1 + MTV 2 + MTV 3 + Moonbug + Morska obala + Motorvision+ + MTV 00s + MTV 80s + MTV 90s + Club MTV + MTV Hits + MTV + Museum + Музыка Первого + Narodna TV + Наша ТВ + National Geographic + National Geographic Wild + Nautical Channel + Net TV + Nick Jr. + Nickelodeon + NickToons + NON Stop + Nova 24 TV + Nova 24 TV 2 + n-tv + OBN + One Adria + ORF 1 + ORF 2 + Oron TV + OTO + OTV Valentino + Passion XXX + Pickbox TV + Pink Extra + Pink Film + Pink Folk + Pink Folk 2 + Pink Koncert + Pink Music + Pink Plus + Pink'n'Roll + Pink Reality + Pink Serije + Pink Show + Pink SI + Pink Zabava + Planet 2 + Planet Eva + Planet + Playboy TV + POP TV + Private TV + ProSieben + TV Prva Files + TV Prva Kick + TV Prva Life + TV Prva Max + Prva Plus + PRVA Srbska TV + Prva TV + Prva World + Ptujska TV + Purple Pills + Rai 1 + Rai 2 + Rai 3 + Rai 3 BIS + Rai Movie + Rai Sport + Rai YoYo + Rete 4 + 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 + РТС 1 + РТС 2 + RTS Maribor + TV Sarajevo + SAT.1 + Redlight HD + Savinjska TV + SciFi + Vivid Red + CentoXCento + Sexation + SIP 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 + Star Channel + Star Crime + Star Life + Star Movies + Super One HD + Super RTL + Телекафе + Tele Maribor + TLC + ТНТ Music + Top TV + Trace Urban + Trace Sport Stars + Travel Channel + Travelxp 4K + Travelxp + Tring 7 + Tring Max + Tring Shqip + Tring Tring + Tropski podvodni svet + Tržič TV + O Kanal + TV3 + TV5Monde Europe + Tv8 + TV 8 + TV 1000 + TV As + TV Beltinci + TV Celje + TVE Internacional + TV Zlati zvoki + TV Miklavž HD + TV nakupi HD + TV Ormož + Aktual TV + TV Radgona + TV Vascom + OTV Music + Vaš kanal + Veseli december + Viasat Explore + Viasat History + Viasat Nature + Viasat True Crime + Vikom + Vitel + Vivid Touch + Vizion+ + VOX + Время + VTV + XXXTazy HD + Z1 Televizija + ZDF + Zdrava Televizija + Zdrava TV +