mirror of
https://github.com/JoeanAmier/XHS-Downloader.git
synced 2026-03-22 06:57:16 +08:00
@@ -194,8 +194,14 @@ class XHS:
|
||||
data, self.manager.image_format
|
||||
)
|
||||
|
||||
def __extract_video(self, container: dict, data: Namespace):
|
||||
container["下载地址"] = self.video.get_video_link(data)
|
||||
def __extract_video(
|
||||
self,
|
||||
container: dict,
|
||||
data: Namespace,
|
||||
):
|
||||
container["下载地址"] = self.video.get_video_link(
|
||||
data,
|
||||
)
|
||||
container["动图地址"] = [
|
||||
None,
|
||||
]
|
||||
|
||||
@@ -12,9 +12,32 @@ class Video:
|
||||
)
|
||||
|
||||
@classmethod
|
||||
def get_video_link(cls, data: Namespace) -> list:
|
||||
def generate_video_link(cls, data: Namespace) -> list:
|
||||
return (
|
||||
[Html.format_url(f"https://sns-video-bd.xhscdn.com/{t}")]
|
||||
if (t := data.safe_extract(".".join(cls.VIDEO_LINK)))
|
||||
else []
|
||||
)
|
||||
|
||||
@classmethod
|
||||
def get_video_link(
|
||||
cls,
|
||||
data: Namespace,
|
||||
preference="resolution",
|
||||
) -> list:
|
||||
if not (items := cls.get_video_items(data)):
|
||||
return []
|
||||
match preference:
|
||||
case "resolution":
|
||||
items.sort(key=lambda x: x.height)
|
||||
case "bitrate" | "size":
|
||||
items.sort(key=lambda x: x.preference)
|
||||
case _:
|
||||
raise ValueError(f"Invalid video preference value: {preference}")
|
||||
return [b[0]] if (b := items[-1].backupUrls) else [items[-1].masterUrl]
|
||||
|
||||
@staticmethod
|
||||
def get_video_items(data: Namespace) -> list:
|
||||
h264 = data.safe_extract("video.media.stream.h264")
|
||||
h265 = data.safe_extract("video.media.stream.h265")
|
||||
return [*h264, *h265]
|
||||
|
||||
Reference in New Issue
Block a user