71278527e1 style(XHS-Downloader): 代码格式化和依赖项更新
- 使用自动代码格式化工具对代码进行了统一格式化
- 更新了项目依赖项至最新版本
- 调整了部分代码结构以符合规范
2025-02-18 20:00:13 +08:00

60 lines
1.8 KiB
Python

from source.expansion import Namespace
from .request import Html
__all__ = ["Image"]
class Image:
@classmethod
def get_image_link(cls, data: Namespace, format_: str) -> [list, list]:
images = data.safe_extract("imageList", [])
live_link = cls.__get_live_link(images)
token_list = [
cls.__extract_image_token(Namespace.object_extract(i, "urlDefault"))
for i in images
]
match format_:
case "png" | "webp" | "jpeg" | "heic" | "avif":
return [
Html.format_url(
cls.__generate_fixed_link(
i,
format_,
)
)
for i in token_list
], live_link
case "auto":
return [
Html.format_url(cls.__generate_auto_link(i)) for i in token_list
], live_link
case _:
raise ValueError
@staticmethod
def __generate_auto_link(token: str) -> str:
return f"https://sns-img-bd.xhscdn.com/{token}"
@staticmethod
def __generate_fixed_link(
token: str,
format_: str,
) -> str:
return f"https://ci.xiaohongshu.com/{token}?imageView2/format/{format_}"
@staticmethod
def __extract_image_token(url: str) -> str:
return "/".join(url.split("/")[5:]).split("!")[0]
@staticmethod
def __get_live_link(items: list) -> list:
return [
(
Html.format_url(
Namespace.object_extract(item, "stream.h264[0].masterUrl")
)
or None
)
for item in items
]