refactor(app): 重构数据处理逻辑

This commit is contained in:
Quan
2026-01-07 19:28:33 +08:00
parent 7897caa3c2
commit 086ff930e1
5 changed files with 40 additions and 12 deletions

View File

@@ -199,7 +199,7 @@ class XHS:
container: dict, container: dict,
data: Namespace, data: Namespace,
): ):
container["下载地址"] = self.video.get_video_link( container["下载地址"] = self.video.deal_video_link(
data, data,
) )
container["动图地址"] = [ container["动图地址"] = [

View File

@@ -10,10 +10,16 @@ class Image:
def get_image_link(cls, data: Namespace, format_: str) -> tuple[list, list]: def get_image_link(cls, data: Namespace, format_: str) -> tuple[list, list]:
images = data.safe_extract("imageList", []) images = data.safe_extract("imageList", [])
live_link = cls.__get_live_link(images) live_link = cls.__get_live_link(images)
token_list = [ if not any(
cls.__extract_image_token(Namespace.object_extract(i, "urlDefault")) token_list := [
for i in images cls.__extract_image_token(Namespace.object_extract(i, "urlDefault"))
] for i in images
]
):
token_list = [
cls.__extract_image_token(Namespace.object_extract(i, "url"))
for i in images
]
match format_: match format_:
case "png" | "webp" | "jpeg" | "heic" | "avif": case "png" | "webp" | "jpeg" | "heic" | "avif":
return [ return [

View File

@@ -11,6 +11,14 @@ class Video:
"originVideoKey", "originVideoKey",
) )
@classmethod
def deal_video_link(
cls,
data: Namespace,
preference="resolution",
):
return cls.generate_video_link(data) or cls.get_video_link(data, preference)
@classmethod @classmethod
def generate_video_link(cls, data: Namespace) -> list: def generate_video_link(cls, data: Namespace) -> list:
return ( return (

View File

@@ -8,12 +8,17 @@ __all__ = ["Converter"]
class Converter: class Converter:
INITIAL_STATE = "//script/text()" INITIAL_STATE = "//script/text()"
KEYS_LINK = ( PC_KEYS_LINK = (
"note", "note",
"noteDetailMap", "noteDetailMap",
"[-1]", "[-1]",
"note", "note",
) )
PHONE_KEYS_LINK = (
"noteData",
"data",
"noteData",
)
def run(self, content: str) -> dict: def run(self, content: str) -> dict:
return self._filter_object(self._convert_object(self._extract_object(content))) return self._filter_object(self._convert_object(self._extract_object(content)))
@@ -31,7 +36,11 @@ class Converter:
@classmethod @classmethod
def _filter_object(cls, data: dict) -> dict: def _filter_object(cls, data: dict) -> dict:
return cls.deep_get(data, cls.KEYS_LINK) or {} return (
cls.deep_get(data, cls.PHONE_KEYS_LINK)
or cls.deep_get(data, cls.PC_KEYS_LINK)
or {}
)
@classmethod @classmethod
def deep_get(cls, data: dict, keys: list | tuple, default=None): def deep_get(cls, data: dict, keys: list | tuple, default=None):
@@ -58,7 +67,11 @@ class Converter:
@staticmethod @staticmethod
def get_script(scripts: list) -> str: def get_script(scripts: list) -> str:
scripts.reverse() scripts.reverse()
for script in scripts: return next(
if script.startswith("window.__INITIAL_STATE__"): (
return script script
return "" for script in scripts
if script.startswith("window.__INITIAL_STATE__")
),
"",
)

View File

@@ -5,7 +5,8 @@
3. 新增连接用户脚本下载作品功能 3. 新增连接用户脚本下载作品功能
4. 修复视频作品下载功能 4. 修复视频作品下载功能
5. 新增作品处理统计功能 5. 新增作品处理统计功能
6. 调整内置延时机制 6. 重构数据处理逻辑
7. 调整内置延时机制
***** *****