Compare commits
2 Commits
862de2f9d2
...
03bbb224ad
| Author | SHA1 | Date | |
|---|---|---|---|
| 03bbb224ad | |||
| 119ef675df |
@ -182,6 +182,7 @@ class AniworldLoader(Loader):
|
|||||||
'quiet': True,
|
'quiet': True,
|
||||||
'no_warnings': True,
|
'no_warnings': True,
|
||||||
'progress_with_newline': False,
|
'progress_with_newline': False,
|
||||||
|
'nocheckcertificate': True,
|
||||||
}
|
}
|
||||||
|
|
||||||
if header:
|
if header:
|
||||||
|
|||||||
@ -9,6 +9,10 @@ from bs4 import BeautifulSoup
|
|||||||
from fake_useragent import UserAgent
|
from fake_useragent import UserAgent
|
||||||
from src.Loaders.provider.Provider import Provider
|
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<hls>[^']+)'")
|
||||||
class VOE(Provider):
|
class VOE(Provider):
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
@ -48,18 +52,26 @@ class VOE(Provider):
|
|||||||
response = self.session.get(redirect_url, headers={'User-Agent': self.RANDOM_USER_AGENT})
|
response = self.session.get(redirect_url, headers={'User-Agent': self.RANDOM_USER_AGENT})
|
||||||
html = response.content
|
html = response.content
|
||||||
|
|
||||||
|
|
||||||
|
# Method 1: Extract from script tag
|
||||||
extracted = self.extract_voe_from_script(html)
|
extracted = self.extract_voe_from_script(html)
|
||||||
if extracted:
|
if extracted:
|
||||||
return extracted, self.Header
|
return extracted, self.Header
|
||||||
|
|
||||||
b64match = re.search(r"var a168c='([^']+)'", html)
|
# Method 2: Extract from base64 encoded variable
|
||||||
if b64match:
|
htmlText = html.decode('utf-8')
|
||||||
decoded = base64.b64decode(b64match.group(1)).decode()[::-1]
|
b64_match = B64_PATTERN.search(htmlText)
|
||||||
return json.loads(decoded)["source"], self.Header
|
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<hls>[^']+)'", html)
|
|
||||||
if hls:
|
|
||||||
return base64.b64decode(hls.group("hls")).decode(), self.Header
|
|
||||||
def shift_letters(self, input_str):
|
def shift_letters(self, input_str):
|
||||||
result = ''
|
result = ''
|
||||||
for c in input_str:
|
for c in input_str:
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user