fix(Huya): WEB_ROOM_DATA_REGEX 正则错误匹配 html 转义 (#1606)
This commit is contained in:
1 parent
57a7741302
commit
28b0bd7105
2 files changed
+24
-4
No files matched your search
@@ -1,4 +1,5 @@
|
||||
import logging
|
||||
import html
|
||||
import re
|
||||
import hashlib
|
||||
import time
|
||||
@@ -17,6 +18,7 @@ from typing import (
|
||||
|
||||
logger = logging.getLogger('biliup')
|
||||
|
||||
_DECODER = json.JSONDecoder()
|
||||
|
||||
def match1(text, *patterns):
|
||||
if len(patterns) == 1:
|
||||
@@ -48,11 +50,29 @@ def random_user_agent(device: str = 'desktop') -> str:
|
||||
return f'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/{chrome_version}.0.0.0 Safari/537.36'
|
||||
|
||||
|
||||
def deep_unescape(obj: Any) -> Any:
|
||||
if isinstance(obj, dict):
|
||||
return {k: deep_unescape(v) for k, v in obj.items()}
|
||||
if isinstance(obj, list):
|
||||
return [deep_unescape(i) for i in obj]
|
||||
if isinstance(obj, str):
|
||||
return html.unescape(obj)
|
||||
return obj
|
||||
|
||||
|
||||
def json_loads(text: Union[str, None]) -> Dict[str, Any]:
|
||||
if not text:
|
||||
raise ValueError("Invalid JSON: None")
|
||||
raise ValueError("Invalid JSON: None or Empty")
|
||||
|
||||
try:
|
||||
return json.loads(text)
|
||||
data, _ = _DECODER.raw_decode(text)
|
||||
except (json.JSONDecodeError, TypeError) as e:
|
||||
logger.debug(f"Invalid JSON at position {getattr(e, 'pos', 'unknown')}, raw text: {text}")
|
||||
else:
|
||||
return data
|
||||
|
||||
try:
|
||||
return json.loads(html.unescape(text))
|
||||
except json.JSONDecodeError as e:
|
||||
raise ValueError(f"Invalid JSON: {text}") from e
|
||||
|
||||
|
||||
@@ -29,7 +29,7 @@ HUYA_MOBILE_BASE_URL = "https://m.huya.com"
|
||||
HUYA_MP_BASE_URL = "https://mp.huya.com"
|
||||
HUYA_WUP_BASE_URL = "https://wup.huya.com"
|
||||
HUYA_WUP_YST_URL = "https://snmhuya.yst.aisee.tv"
|
||||
HUYA_WEB_ROOM_DATA_REGEX = r"var TT_ROOM_DATA = (.*?);"
|
||||
HUYA_WEB_ROOM_DATA_REGEX = r"var\s+TT_ROOM_DATA\s*=\s*(.*);" # DOT 默认不匹配换行
|
||||
|
||||
rotl64 = lambda t: ((t & 0xFFFFFFFF) << 8 | (t & 0xFFFFFFFF) >> 24) & 0xFFFFFFFF | (t & ~0xFFFFFFFF)
|
||||
|
||||
@@ -516,7 +516,7 @@ class UAGenerator:
|
||||
hyapp_version += f".{random.randint(3000, 5000)}"
|
||||
|
||||
ua = f"{hyapp_platform}&{hyapp_version}&{hyapp_channel}"
|
||||
|
||||
|
||||
# Add android_api_level for android platforms
|
||||
if platform in {PLATFORM.HUYA_ADR, PLATFORM.TV_HUYA_NFTV}:
|
||||
android_api_level = random.randint(28, 36)
|
||||
|
||||
Reference in new issue
Block a user