[weibo] download 'm3u8' manifests with ytdl (#8339)
This commit is contained in:
@@ -87,15 +87,20 @@ class WeiboExtractor(Extractor):
|
|||||||
yield Message.Directory, status
|
yield Message.Directory, status
|
||||||
|
|
||||||
for num, file in enumerate(files, 1):
|
for num, file in enumerate(files, 1):
|
||||||
if file["url"].startswith("http:"):
|
url = file["url"]
|
||||||
file["url"] = "https:" + file["url"][5:]
|
if url.startswith("http:"):
|
||||||
|
url = f"https:{url[5:]}"
|
||||||
if "filename" not in file:
|
if "filename" not in file:
|
||||||
text.nameext_from_url(file["url"], file)
|
text.nameext_from_url(url, file)
|
||||||
if file["extension"] == "json":
|
if file["extension"] == "json":
|
||||||
file["extension"] = "mp4"
|
file["extension"] = "mp4"
|
||||||
|
if file["extension"] == "m3u8":
|
||||||
|
url = f"ytdl:{url}"
|
||||||
|
file["_ytdl_manifest"] = "hls"
|
||||||
|
file["extension"] = "mp4"
|
||||||
file["status"] = status
|
file["status"] = status
|
||||||
file["num"] = num
|
file["num"] = num
|
||||||
yield Message.Url, file["url"], file
|
yield Message.Url, url, file
|
||||||
|
|
||||||
def _extract_status(self, status, files):
|
def _extract_status(self, status, files):
|
||||||
if "mix_media_info" in status:
|
if "mix_media_info" in status:
|
||||||
|
|||||||
@@ -262,7 +262,7 @@ __tests__ = (
|
|||||||
"#comment" : "missing 'playback_list' (#2792)",
|
"#comment" : "missing 'playback_list' (#2792)",
|
||||||
"#category": ("", "weibo", "status"),
|
"#category": ("", "weibo", "status"),
|
||||||
"#class" : weibo.WeiboStatusExtractor,
|
"#class" : weibo.WeiboStatusExtractor,
|
||||||
"#count" : 10,
|
"#count" : 9,
|
||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
@@ -308,4 +308,20 @@ __tests__ = (
|
|||||||
"#class" : weibo.WeiboStatusExtractor,
|
"#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,
|
||||||
|
},
|
||||||
|
|
||||||
)
|
)
|
||||||
|
|||||||
Reference in New Issue
Block a user