Skip to content

Commit

Permalink
Merge pull request #2564 from michaelfeinbier/fix-web.magentatv.de
Browse files Browse the repository at this point in the history
#2555 Fix Site web.magentatv.de
  • Loading branch information
BellezaEmporium authored Jan 3, 2025
2 parents c9bfb3d + a738c3b commit f07514b
Showing 1 changed file with 39 additions and 39 deletions.
78 changes: 39 additions & 39 deletions sites/web.magentatv.de/web.magentatv.de.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,11 @@ 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 { upperCase } = require('lodash')

let X_CSRFTOKEN
let COOKIE
const cookiesToExtract = ['JSESSIONID', 'CSESSIONID', 'CSRFSESSION']
const extractedCookies = {}

dayjs.extend(utc)
dayjs.extend(customParseFormat)
Expand Down Expand Up @@ -165,11 +163,15 @@ function parseItems(content) {
return data.playbilllist
}

// 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',
{
async function fetchCookieAndToken() {
// Only fetch the cookies and csrfToken if they are not already set
if (X_CSRFTOKEN && COOKIE) {
return
}

try {
const response = await axios.request({
url: 'https://api.prod.sngtv.magentatv.de/EPG/JSON/Authenticate',
headers: {
accept: 'application/json, text/javascript, */*; q=0.01',
'content-type': 'application/x-www-form-urlencoded; charset=UTF-8',
Expand All @@ -180,43 +182,41 @@ function fetchCookieAndToken() {
Referer: 'https://web.magentatv.de/',
'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')
}

// Extract the set-cookie header
const setCookieHeader = response.headers.raw()['set-cookie']
params: {
SID: 'firstup',
T: 'Windows_chrome_118'
},
method: 'POST',
data: '{"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"}',
})

// 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
}
})
// Extract the cookies specified in cookiesToExtract
const setCookieHeader = response.headers['set-cookie'] || []
let extractedCookies = []
cookiesToExtract.forEach(cookieName => {
const regex = new RegExp(`${cookieName}=(.+?)(;|$)`)
const match = setCookieHeader.find(header => regex.test(header))

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.')
if (match) {
const cookieString = regex.exec(match)[0]
extractedCookies.push(cookieString)
}
})
.catch(error => {
console.error(error)
})


// check if we recieved a csrfToken only then store the values
if (!response.data.csrfToken) {
console.log('csrfToken not found in the response.')
return
}

X_CSRFTOKEN = response.data.csrfToken
COOKIE = extractedCookies.join(' ')

} catch(error) {
console.error(error)
}
}

function setHeaders() {
Expand Down

0 comments on commit f07514b

Please sign in to comment.