JoeanAmier 0a52dc0ed2 feat: 发布 2.2 版本
1. 移除 sec_ch_ua_platform 参数
2. 移除 sec_ch_ua 参数
3. 优化请求延时间隔
4. 优化并发下载功能
5. 修正英语翻译错误
6. 新增并发下载限制
7. 修正命令行模式错误
8. 简化数据请求头

Closes #86
Closes #87
Closes #93
Closes #98
Closes #105
Closes #109
Closes #110
Closes #140
Closes #152
Closes #154
Closes #157
Closes #159
Closes #160
Closes #162
Closes #164
Closes #165
2024-08-30 13:05:25 +08:00

49 lines
1.5 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":
return [Html.format_url(cls.__generate_png_link(i))
for i in token_list], live_link
case "webp":
return [Html.format_url(cls.__generate_webp_link(i))
for i in token_list], live_link
case _:
raise ValueError
@staticmethod
def __generate_webp_link(token: str) -> str:
return f"https://sns-img-bd.xhscdn.com/{token}"
@staticmethod
def __generate_png_link(token: str) -> str:
return f"https://ci.xiaohongshu.com/{token}?imageView2/format/png"
@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
]