[weibo] download 'm3u8' manifests with ytdl (#8339)

This commit is contained in:
Mike Fährmann
2025-10-03 11:02:01 +02:00
parent 9cdd94e71f
commit 008a871ccb
2 changed files with 26 additions and 5 deletions

View File

@@ -87,15 +87,20 @@ class WeiboExtractor(Extractor):
yield Message.Directory, status
for num, file in enumerate(files, 1):
if file["url"].startswith("http:"):
file["url"] = "https:" + file["url"][5:]
url = file["url"]
if url.startswith("http:"):
url = f"https:{url[5:]}"
if "filename" not in file:
text.nameext_from_url(file["url"], file)
text.nameext_from_url(url, file)
if file["extension"] == "json":
file["extension"] = "mp4"
if file["extension"] == "m3u8":
url = f"ytdl:{url}"
file["_ytdl_manifest"] = "hls"
file["extension"] = "mp4"
file["status"] = status
file["num"] = num
yield Message.Url, file["url"], file
yield Message.Url, url, file
def _extract_status(self, status, files):
if "mix_media_info" in status:

View File

@@ -262,7 +262,7 @@ __tests__ = (
"#comment" : "missing 'playback_list' (#2792)",
"#category": ("", "weibo", "status"),
"#class" : weibo.WeiboStatusExtractor,
"#count" : 10,
"#count" : 9,
},
{
@@ -308,4 +308,20 @@ __tests__ = (
"#class" : weibo.WeiboStatusExtractor,
},
{
"#url" : "https://weibo.com/7117031969/5208376084532264",
"#comment" : "'.m3u8' manifest (live replay #8339)",
"#class" : weibo.WeiboStatusExtractor,
"#pattern" : r"ytdl:https://live.video.weibocdn.com/0f9e059c-3438-49ab-a84c-671a04d37b92_index.m3u8\?media_id=5208391172685924&.+&KID=unistore,video",
"#count" : 1,
},
{
"#url" : "https://weibo.com/2683260651/3774796733364550",
"#comment" : "'.m3u8' manifest (from 2014)",
"#class" : weibo.WeiboStatusExtractor,
"#pattern" : r"ytdl:https://us.sinaimg.cn/001xN98Njx06NszB2n15010d0100008H0k01.m3u8\?ori=0&.+&KID=unistore,video",
"#count" : 1,
},
)