From 6dbe6e131c840de1386fdc9992f04493c60967cc Mon Sep 17 00:00:00 2001 From: freearhey <7253922+freearhey@users.noreply.github.com> Date: Tue, 21 Nov 2023 11:40:40 +0300 Subject: [PATCH] Rename magentatv.de to web.magentatv.de --- sites/magentatv.de/magentatv.de.channels.xml | 261 ------------------ .../web.magentatv.de.channels.xml | 261 ++++++++++++++++++ .../web.magentatv.de.config.js} | 127 ++++----- .../web.magentatv.de.test.js} | 26 +- 4 files changed, 338 insertions(+), 337 deletions(-) delete mode 100644 sites/magentatv.de/magentatv.de.channels.xml create mode 100644 sites/web.magentatv.de/web.magentatv.de.channels.xml rename sites/{magentatv.de/magentatv.de.config.js => web.magentatv.de/web.magentatv.de.config.js} (54%) rename sites/{magentatv.de/magentatv.de.test.js => web.magentatv.de/web.magentatv.de.test.js} (74%) diff --git a/sites/magentatv.de/magentatv.de.channels.xml b/sites/magentatv.de/magentatv.de.channels.xml deleted file mode 100644 index 53a1479c..00000000 --- a/sites/magentatv.de/magentatv.de.channels.xml +++ /dev/null @@ -1,261 +0,0 @@ - - - 1-2-3.tv - 13TH STREET - SAT.1 Bayern - SAT.1 RhlPf Hessen - SAT.1 HH SH - SAT.1 NDS Bremen - 3sat - ALEX Berlin - allgäu.tv - altenburg.tv - Animal Planet - ANIXE HD Serie - ANIXE+ - ARD-alpha - ARTE - - auto motor und sport - Baby TV - Baden TV - Baden TV Süd - BBC World - Beate-Uhse.TV (Sky) - beIN iZ - beIN Movies Turk - Bergblick - Bibel TV - BILD - Blue Hustler - BonGusto - Boomerang - BR Fernsehen Nord - BR Fernsehen Süd - Cartoon Network - CEM TV - CHANNEL21 - Classica (Sky) - CNN International - Comedy Central - Nick/Comedy Central+1 - Crime+Investigation - #dabeiTV - Das Erste - DELUXE MUSIC - Deutsches Musik Fernsehen - Discovery Channel - Disney Channel - DMAX - DW - - ems TV - eSPORTS1 - Euro D - Euronews Deutsch - Euronews Italiano - Euronews Russki - Eurosport 1 - Eurosport 2 - Eurostar TV - Extreme Sports - Fashion TV - FC BAYERN.TV LIVE - France 24 francais - Franken Fernsehen - Friesischer Rundfunk - GEO Television - Habertürk TV - Hamburg 1 - HAUPTSTADT.TV - Heimatkanal - HGTV - The HISTORY Channel - hr-fernsehen - HSE - iTVN - Jukebox - Junior (Sky) - Juwelo - Kabel Eins - Kabel Eins CLASSICS - Kabel Eins Doku - Kanal 7 - KiKA - KinoweltTV - K-TV - LAUSITZWELLE - L-TV - Lust pur - MagentaSport - Marco Polo TV - MDF.1 Fernsehen - MDR-Fernsehen Sachsen - MDR-Fernsehen Sachsen-Anhalt - MDR-Fernsehen Thüringen - More Than Sports TV - MOTORVISION.TV - MTV - münchen.tv - N24 Doku - Kinomir - National Geographic - National Geographic Wild - NDR Fernsehen Hamburg - NDR Fernsehen Mecklenburg-Vorpommern - NDR Fernsehen Niedersachsen - NDR Fernsehen Schleswig-Holstein - Nick Jr. - Nicktoons (Sky) - NIEDERBAYERN TV - DEG - NIEDERBAYERN TV - LA - NIEDERBAYERN TV - PA - NITRO - nrwision - n-tv - Oberpfalz TV - OF-TV - OK4 - OK54 Trier - OK-TV Ludwigshafen - OK:TV Mainz - OK Weinstraße - ONE - OstWest - Penthouse Passion - phoenix - Playboy Europe - ProSieben - ProSieben FUN - ProSieben MAXX - QVC - Radio Bremen TV - Rai 1 - Rai 2 - Rai 3 - rbb fernsehen Berlin - rbb fernsehen Brandenburg - Red Bull TV - Rennsteig.TV - RFH Regionalfernsehen Harz - RFO - Rhein-Main TV - RNF - Romance TV - RTL Crime - RTL - RTL Hessen - RTL Living - RTL HH SH - RTL HB NDS - RTL Passion - RTLup - RTL NRW - RTLZWEI - RTR Planeta - Chemnitz Fernsehen - Dresden Fernsehen - Leipzig Fernsehen - salve.tv - SAT.1 - SAT.1 emotions - SAT.1 GOLD - SAT.1 NRW - ServusTV - Shop LC - Show Max - Show Turk - sixx - SkyAtlantic - Sky Cinema Action - Sky Cinema Best of - Sky Cinema Classics - Sky Cinema Family - Sky Cinema Fun - Sky Cinema Mittelerde - Sky Cinema Premieren - Sky Cinema Premieren +24 - Sky Cinema Thriller - Sky Comedy - Sky Crime - Sky Documentaries - SkyKrimi - Sky Nature - Sky One - Sky Sport 10 - Sky Sport 11 - Sky Sport 1 - Sky Sport 2 - Sky Sport 3 - Sky Sport 4 - Sky Sport 5 - Sky Sport 6 - Sky Sport 7 - Sky Sport 8 - Sky Sport 9 - Sky Sport Bundesliga 1 - Sky Sport Bundesliga 10 - Sky Sport Bundesliga 2 - Sky Sport Bundesliga 3 - Sky Sport Bundesliga 4 - Sky Sport Bundesliga 5 - Sky Sport Bundesliga 6 - Sky Sport Bundesliga 7 - Sky Sport Bundesliga 8 - Sky Sport Bundesliga 9 - Sky Sport F1 - Sky Sport News - sonnenklar.TV - SONY AXN - SONY CHANNEL - Spiegel Geschichte - Spiegel TV Wissen - SPORT1 - SPORT1+ - SPORTDIGITAL FUSSBALL - SR Fernsehen - Studio 47 - Super RTL - SWR Fernsehen BW - SWR Fernsehen RP - SYFY - tagesschau24 - TELE 5 - TeleBom/TeleDom - TLC - TOGGO plus - TV8 Int - TVA Ostbayern - tv.berlin - tv.ingolstadt - TV Mainfranken - TV Mittelrhein - TV Oberfranken - TV Polonia - TV Westsachsen - ÜLKE TV - Universal TV - VOX - VOXup - Warner TV Comedy - Warner TV Film - Warner TV Serie - WDR Fernsehen Aachen - WDR Fernsehen Bielefeld - WDR Fernsehen Bonn - WDR Fernsehen Dortmund - WDR Fernsehen Duisburg - WDR Fernsehen Düsseldorf - WDR Fernsehen Essen - WDR Fernsehen Köln - WDR Fernsehen Münster - WDR Fernsehen Siegen - WDR Fernsehen Wuppertal - WELT - Welt der Wunder - wetter.com TV - WWTV - ZDF - ZDFinfo - ZDFneo - diff --git a/sites/web.magentatv.de/web.magentatv.de.channels.xml b/sites/web.magentatv.de/web.magentatv.de.channels.xml new file mode 100644 index 00000000..956c3fc3 --- /dev/null +++ b/sites/web.magentatv.de/web.magentatv.de.channels.xml @@ -0,0 +1,261 @@ + + + 1-2-3.tv + 13TH STREET + SAT.1 Bayern + SAT.1 RhlPf Hessen + SAT.1 HH SH + SAT.1 NDS Bremen + 3sat + ALEX Berlin + allgäu.tv + altenburg.tv + Animal Planet + ANIXE HD Serie + ANIXE+ + ARD-alpha + ARTE + + auto motor und sport + Baby TV + Baden TV + Baden TV Süd + BBC World + Beate-Uhse.TV (Sky) + beIN iZ + beIN Movies Turk + Bergblick + Bibel TV + BILD + Blue Hustler + BonGusto + Boomerang + BR Fernsehen Nord + BR Fernsehen Süd + Cartoon Network + CEM TV + CHANNEL21 + Classica (Sky) + CNN International + Comedy Central + Nick/Comedy Central+1 + Crime+Investigation + #dabeiTV + Das Erste + DELUXE MUSIC + Deutsches Musik Fernsehen + Discovery Channel + Disney Channel + DMAX + DW + + ems TV + eSPORTS1 + Euro D + Euronews Deutsch + Euronews Italiano + Euronews Russki + Eurosport 1 + Eurosport 2 + Eurostar TV + Extreme Sports + Fashion TV + FC BAYERN.TV LIVE + France 24 francais + Franken Fernsehen + Friesischer Rundfunk + GEO Television + Habertürk TV + Hamburg 1 + HAUPTSTADT.TV + Heimatkanal + HGTV + The HISTORY Channel + hr-fernsehen + HSE + iTVN + Jukebox + Junior (Sky) + Juwelo + Kabel Eins + Kabel Eins CLASSICS + Kabel Eins Doku + Kanal 7 + KiKA + KinoweltTV + K-TV + LAUSITZWELLE + L-TV + Lust pur + MagentaSport + Marco Polo TV + MDF.1 Fernsehen + MDR-Fernsehen Sachsen + MDR-Fernsehen Sachsen-Anhalt + MDR-Fernsehen Thüringen + More Than Sports TV + MOTORVISION.TV + MTV + münchen.tv + N24 Doku + Kinomir + National Geographic + National Geographic Wild + NDR Fernsehen Hamburg + NDR Fernsehen Mecklenburg-Vorpommern + NDR Fernsehen Niedersachsen + NDR Fernsehen Schleswig-Holstein + Nick Jr. + Nicktoons (Sky) + NIEDERBAYERN TV - DEG + NIEDERBAYERN TV - LA + NIEDERBAYERN TV - PA + NITRO + nrwision + n-tv + Oberpfalz TV + OF-TV + OK4 + OK54 Trier + OK-TV Ludwigshafen + OK:TV Mainz + OK Weinstraße + ONE + OstWest + Penthouse Passion + phoenix + Playboy Europe + ProSieben + ProSieben FUN + ProSieben MAXX + QVC + Radio Bremen TV + Rai 1 + Rai 2 + Rai 3 + rbb fernsehen Berlin + rbb fernsehen Brandenburg + Red Bull TV + Rennsteig.TV + RFH Regionalfernsehen Harz + RFO + Rhein-Main TV + RNF + Romance TV + RTL Crime + RTL + RTL Hessen + RTL Living + RTL HH SH + RTL HB NDS + RTL Passion + RTLup + RTL NRW + RTLZWEI + RTR Planeta + Chemnitz Fernsehen + Dresden Fernsehen + Leipzig Fernsehen + salve.tv + SAT.1 + SAT.1 emotions + SAT.1 GOLD + SAT.1 NRW + ServusTV + Shop LC + Show Max + Show Turk + sixx + SkyAtlantic + Sky Cinema Action + Sky Cinema Best of + Sky Cinema Classics + Sky Cinema Family + Sky Cinema Fun + Sky Cinema Mittelerde + Sky Cinema Premieren + Sky Cinema Premieren +24 + Sky Cinema Thriller + Sky Comedy + Sky Crime + Sky Documentaries + SkyKrimi + Sky Nature + Sky One + Sky Sport 10 + Sky Sport 11 + Sky Sport 1 + Sky Sport 2 + Sky Sport 3 + Sky Sport 4 + Sky Sport 5 + Sky Sport 6 + Sky Sport 7 + Sky Sport 8 + Sky Sport 9 + Sky Sport Bundesliga 1 + Sky Sport Bundesliga 10 + Sky Sport Bundesliga 2 + Sky Sport Bundesliga 3 + Sky Sport Bundesliga 4 + Sky Sport Bundesliga 5 + Sky Sport Bundesliga 6 + Sky Sport Bundesliga 7 + Sky Sport Bundesliga 8 + Sky Sport Bundesliga 9 + Sky Sport F1 + Sky Sport News + sonnenklar.TV + SONY AXN + SONY CHANNEL + Spiegel Geschichte + Spiegel TV Wissen + SPORT1 + SPORT1+ + SPORTDIGITAL FUSSBALL + SR Fernsehen + Studio 47 + Super RTL + SWR Fernsehen BW + SWR Fernsehen RP + SYFY + tagesschau24 + TELE 5 + TeleBom/TeleDom + TLC + TOGGO plus + TV8 Int + TVA Ostbayern + tv.berlin + tv.ingolstadt + TV Mainfranken + TV Mittelrhein + TV Oberfranken + TV Polonia + TV Westsachsen + ÜLKE TV + Universal TV + VOX + VOXup + Warner TV Comedy + Warner TV Film + Warner TV Serie + WDR Fernsehen Aachen + WDR Fernsehen Bielefeld + WDR Fernsehen Bonn + WDR Fernsehen Dortmund + WDR Fernsehen Duisburg + WDR Fernsehen Düsseldorf + WDR Fernsehen Essen + WDR Fernsehen Köln + WDR Fernsehen Münster + WDR Fernsehen Siegen + WDR Fernsehen Wuppertal + WELT + Welt der Wunder + wetter.com TV + WWTV + ZDF + ZDFinfo + ZDFneo + diff --git a/sites/magentatv.de/magentatv.de.config.js b/sites/web.magentatv.de/web.magentatv.de.config.js similarity index 54% rename from sites/magentatv.de/magentatv.de.config.js rename to sites/web.magentatv.de/web.magentatv.de.config.js index f448a65f..f8b7eb84 100644 --- a/sites/magentatv.de/magentatv.de.config.js +++ b/sites/web.magentatv.de/web.magentatv.de.config.js @@ -2,27 +2,26 @@ const axios = require('axios') const dayjs = require('dayjs') const utc = require('dayjs/plugin/utc') const customParseFormat = require('dayjs/plugin/customParseFormat') -const fetch = require('node-fetch'); +const fetch = require('node-fetch') - -let X_CSRFTOKEN; -let COOKIE; -const cookiesToExtract = ['JSESSIONID', 'CSESSIONID', 'CSRFSESSION']; -const extractedCookies = {}; +let X_CSRFTOKEN +let COOKIE +const cookiesToExtract = ['JSESSIONID', 'CSESSIONID', 'CSRFSESSION'] +const extractedCookies = {} dayjs.extend(utc) dayjs.extend(customParseFormat) module.exports = { - site: 'magentatv.de', + site: 'web.magentatv.de', days: 2, url: 'https://api.prod.sngtv.magentatv.de/EPG/JSON/PlayBillList', request: { method: 'POST', - headers: function () { - return setHeaders(); + headers: function () { + return setHeaders() }, - + data({ channel, date }) { return { count: -1, @@ -98,7 +97,6 @@ module.exports = { } } - function parseCategory(item) { return item.genres ? item.genres @@ -129,63 +127,66 @@ function parseItems(content) { return data.playbilllist } -// Function to try to fetch COOKIE and X_CSRFTOKEN +// Function to try to fetch COOKIE and X_CSRFTOKEN function fetchCookieAndToken() { - return fetch("https://api.prod.sngtv.magentatv.de/EPG/JSON/Authenticate?SID=firstup&T=Windows_chrome_118", { - "headers": { - "accept": "application/json, text/javascript, */*; q=0.01", - "content-type": "application/x-www-form-urlencoded; charset=UTF-8", - "sec-fetch-dest": "empty", - "sec-fetch-mode": "cors", - "sec-fetch-site": "same-origin", - "x-requested-with": "XMLHttpRequest", - "Referer": "https://api.prod.sngtv.magentatv.de/EPG/", - "Referrer-Policy": "strict-origin-when-cross-origin" - }, - "body": "{\"terminalid\":\"00:00:00:00:00:00\",\"mac\":\"00:00:00:00:00:00\",\"terminaltype\":\"WEBTV\",\"utcEnable\":1,\"timezone\":\"Etc/GMT0\",\"userType\":3,\"terminalvendor\":\"Unknown\"}", - "method": "POST" }) - .then(response => { - // Check if the response status is OK (2xx) - if (!response.ok) { - throw new Error('HTTP request failed'); + return fetch( + 'https://api.prod.sngtv.magentatv.de/EPG/JSON/Authenticate?SID=firstup&T=Windows_chrome_118', + { + headers: { + accept: 'application/json, text/javascript, */*; q=0.01', + 'content-type': 'application/x-www-form-urlencoded; charset=UTF-8', + 'sec-fetch-dest': 'empty', + 'sec-fetch-mode': 'cors', + 'sec-fetch-site': 'same-origin', + 'x-requested-with': 'XMLHttpRequest', + Referer: 'https://api.prod.sngtv.magentatv.de/EPG/', + 'Referrer-Policy': 'strict-origin-when-cross-origin' + }, + body: '{"terminalid":"00:00:00:00:00:00","mac":"00:00:00:00:00:00","terminaltype":"WEBTV","utcEnable":1,"timezone":"Etc/GMT0","userType":3,"terminalvendor":"Unknown"}', + method: 'POST' } - - // Extract the set-cookie header - const setCookieHeader = response.headers.raw()['set-cookie']; - - // Extract the cookies specified in cookiesToExtract - cookiesToExtract.forEach(cookieName => { - const regex = new RegExp(`${cookieName}=(.+?)(;|$)`); - const match = setCookieHeader.find(header => regex.test(header)); - - if (match) { - const cookieValue = regex.exec(match)[1]; - extractedCookies[cookieName] = cookieValue; + ) + .then(response => { + // Check if the response status is OK (2xx) + if (!response.ok) { + throw new Error('HTTP request failed') } - }); - return response.json(); - }) - .then(data => { - if (data.csrfToken) { - X_CSRFTOKEN = data.csrfToken - COOKIE = `JSESSIONID=${extractedCookies.JSESSIONID}; CSESSIONID=${extractedCookies.CSESSIONID}; CSRFSESSION=${extractedCookies.CSRFSESSION}; JSESSIONID=${extractedCookies.JSESSIONID};` - } else { - console.log('csrfToken not found in the response.'); - } - }) - .catch(error => { - console.error(error); - }); + // Extract the set-cookie header + const setCookieHeader = response.headers.raw()['set-cookie'] + + // Extract the cookies specified in cookiesToExtract + cookiesToExtract.forEach(cookieName => { + const regex = new RegExp(`${cookieName}=(.+?)(;|$)`) + const match = setCookieHeader.find(header => regex.test(header)) + + if (match) { + const cookieValue = regex.exec(match)[1] + extractedCookies[cookieName] = cookieValue + } + }) + + return response.json() + }) + .then(data => { + if (data.csrfToken) { + X_CSRFTOKEN = data.csrfToken + COOKIE = `JSESSIONID=${extractedCookies.JSESSIONID}; CSESSIONID=${extractedCookies.CSESSIONID}; CSRFSESSION=${extractedCookies.CSRFSESSION}; JSESSIONID=${extractedCookies.JSESSIONID};` + } else { + console.log('csrfToken not found in the response.') + } + }) + .catch(error => { + console.error(error) + }) } function setHeaders() { - return fetchCookieAndToken() - .then(() => { - return { - X_CSRFTOKEN: X_CSRFTOKEN, - 'Content-Type': 'application/json', - Cookie: COOKIE, - }; - }); + return fetchCookieAndToken().then(() => { + return { + X_CSRFTOKEN: X_CSRFTOKEN, + 'Content-Type': 'application/json', + Cookie: COOKIE + } + }) } diff --git a/sites/magentatv.de/magentatv.de.test.js b/sites/web.magentatv.de/web.magentatv.de.test.js similarity index 74% rename from sites/magentatv.de/magentatv.de.test.js rename to sites/web.magentatv.de/web.magentatv.de.test.js index 06e4d612..4a41c58f 100644 --- a/sites/magentatv.de/magentatv.de.test.js +++ b/sites/web.magentatv.de/web.magentatv.de.test.js @@ -1,7 +1,7 @@ -// npm run channels:parse -- --config=./sites/magentatv.de/magentatv.de.config.js --output=./sites/magentatv.de/magentatv.de.channels.xml -// npm run grab -- --site=magentatv.de +// npm run channels:parse -- --config=./sites/web.magentatv.de/web.magentatv.de.config.js --output=./sites/web.magentatv.de/web.magentatv.de.channels.xml +// npm run grab -- --site=web.magentatv.de -const { parser, url, request } = require('./magentatv.de.config.js') +const { parser, url, request } = require('./web.magentatv.de.config.js') const dayjs = require('dayjs') const utc = require('dayjs/plugin/utc') const customParseFormat = require('dayjs/plugin/customParseFormat') @@ -23,17 +23,17 @@ it('can generate valid request method', () => { }) it('can generate valid request headers', async () => { - const headers = await request.headers(); + const headers = await request.headers() - expect(headers).toHaveProperty('Cookie'); - expect(headers).toHaveProperty('X_CSRFTOKEN'); - - expect(headers.Cookie).toMatch(/JSESSIONID=[\dA-F]+;/i); - expect(headers.Cookie).toMatch(/CSESSIONID=[\dA-F]+;/i); - expect(headers.Cookie).toMatch(/CSRFSESSION=[\dA-F]+;/i); - expect(headers.Cookie).toMatch(/JSESSIONID=[\dA-F]+;/i); - expect(headers.X_CSRFTOKEN).toMatch(/[\dA-F]/i); -}); + expect(headers).toHaveProperty('Cookie') + expect(headers).toHaveProperty('X_CSRFTOKEN') + + expect(headers.Cookie).toMatch(/JSESSIONID=[\dA-F]+;/i) + expect(headers.Cookie).toMatch(/CSESSIONID=[\dA-F]+;/i) + expect(headers.Cookie).toMatch(/CSRFSESSION=[\dA-F]+;/i) + expect(headers.Cookie).toMatch(/JSESSIONID=[\dA-F]+;/i) + expect(headers.X_CSRFTOKEN).toMatch(/[\dA-F]/i) +}) it('can generate valid request data', () => { expect(request.data({ channel, date })).toMatchObject({