From 119ef675df16df81cb75e62a6eaf0fd732d4cc81 Mon Sep 17 00:00:00 2001 From: Lukas Pupka-Lipinski Date: Tue, 26 Aug 2025 21:19:07 +0200 Subject: [PATCH] merge from github --- src/Loaders/provider/voe.py | 26 +++++++++++++++++++------- 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/src/Loaders/provider/voe.py b/src/Loaders/provider/voe.py index 12ff71b..6e06cc7 100644 --- a/src/Loaders/provider/voe.py +++ b/src/Loaders/provider/voe.py @@ -9,6 +9,10 @@ from bs4 import BeautifulSoup from fake_useragent import UserAgent from src.Loaders.provider.Provider import Provider +# Compile regex patterns once for better performance +REDIRECT_PATTERN = re.compile(r"https?://[^'\"<>]+") +B64_PATTERN = re.compile(r"var a168c='([^']+)'") +HLS_PATTERN = re.compile(r"'hls': '(?P[^']+)'") class VOE(Provider): def __init__(self): @@ -48,18 +52,26 @@ class VOE(Provider): response = self.session.get(redirect_url, headers={'User-Agent': self.RANDOM_USER_AGENT}) html = response.content + + # Method 1: Extract from script tag extracted = self.extract_voe_from_script(html) if extracted: return extracted, self.Header - b64match = re.search(r"var a168c='([^']+)'", html) - if b64match: - decoded = base64.b64decode(b64match.group(1)).decode()[::-1] - return json.loads(decoded)["source"], self.Header + # Method 2: Extract from base64 encoded variable + htmlText = html.decode('utf-8') + b64_match = B64_PATTERN.search(htmlText) + if b64_match: + decoded = base64.b64decode(b64_match.group(1)).decode()[::-1] + source = json.loads(decoded).get("source") + if source: + return source, self.Header + + # Method 3: Extract HLS source + hls_match = HLS_PATTERN.search(htmlText) + if hls_match: + return base64.b64decode(hls_match.group("hls")).decode(), self.Header - hls = re.search(r"'hls': '(?P[^']+)'", html) - if hls: - return base64.b64decode(hls.group("hls")).decode(), self.Header def shift_letters(self, input_str): result = '' for c in input_str: