[bilibili] add support for Live Photo (video) downloads (#8860)
* bilibili: add support for live photo downloads * fix: resolve flake8 linting errors (whitespace and line length) * fix: resolve flake8 E302 and W293 linting errors * fix: resolve flake8 W293 and E302 linting errors * simplify syntax * add 'livephoto' option * add tests
This commit is contained in:
@@ -1813,6 +1813,16 @@ Description
|
||||
Extract files from quoted content.
|
||||
|
||||
|
||||
extractor.bilibili.livephoto
|
||||
----------------------------
|
||||
Type
|
||||
``bool``
|
||||
Default
|
||||
``true``
|
||||
Description
|
||||
Download ``livephoto`` files.
|
||||
|
||||
|
||||
extractor.[blogger].api-key
|
||||
---------------------------
|
||||
Type
|
||||
|
||||
@@ -165,7 +165,9 @@
|
||||
},
|
||||
"bilibili":
|
||||
{
|
||||
"sleep-request": "3.0-6.0"
|
||||
"sleep-request": "3.0-6.0",
|
||||
|
||||
"livephoto": true
|
||||
},
|
||||
"bluesky":
|
||||
{
|
||||
|
||||
@@ -75,17 +75,23 @@ class BilibiliArticleExtractor(BilibiliExtractor):
|
||||
|
||||
article["count"] = len(pics)
|
||||
yield Message.Directory, "", article
|
||||
|
||||
livephoto = self.config("livephoto", True)
|
||||
for article["num"], pic in enumerate(pics, 1):
|
||||
url = pic["url"]
|
||||
article.update(pic)
|
||||
yield Message.Url, url, text.nameext_from_url(url, article)
|
||||
|
||||
if livephoto and (url := pic.get("live_url")):
|
||||
article["id"] += "_l"
|
||||
yield Message.Url, url, text.nameext_from_url(url, article)
|
||||
|
||||
|
||||
class BilibiliUserArticlesExtractor(BilibiliExtractor):
|
||||
"""Extractor for a bilibili user's articles"""
|
||||
subcategory = "user-articles"
|
||||
pattern = (r"(?:https?://)?space\.bilibili\.com/(\d+)"
|
||||
r"/(?:article|upload/opus)")
|
||||
r"/(?:article|upload/opus|dynamic)")
|
||||
example = "https://space.bilibili.com/12345/article"
|
||||
|
||||
def articles(self):
|
||||
|
||||
@@ -65,6 +65,16 @@ __tests__ = (
|
||||
""",
|
||||
},
|
||||
|
||||
{
|
||||
"#url" : "https://www.bilibili.com/opus/1154738799821979656",
|
||||
"#comment": "livephoto (#8860)",
|
||||
"#class" : bilibili.BilibiliArticleExtractor,
|
||||
"#results": (
|
||||
"http://i0.hdslb.com/bfs/new_dyn/live_958a5cffe9177b196ada011867abd0a031968078.jpg",
|
||||
"https://i0.hdslb.com/bfs/dyn_video/_000003lud8wlka5eq2kxctgfx3fwo3b-1-152111110022.mp4",
|
||||
),
|
||||
},
|
||||
|
||||
{
|
||||
"#url" : "https://space.bilibili.com/405279279/article",
|
||||
"#class" : bilibili.BilibiliUserArticlesExtractor,
|
||||
@@ -77,6 +87,11 @@ __tests__ = (
|
||||
"#class" : bilibili.BilibiliUserArticlesExtractor,
|
||||
},
|
||||
|
||||
{
|
||||
"#url" : "https://space.bilibili.com/405279279/dynamic",
|
||||
"#class" : bilibili.BilibiliUserArticlesExtractor,
|
||||
},
|
||||
|
||||
{
|
||||
"#url" : "https://space.bilibili.com/405279279/favlist?fid=opus",
|
||||
"#class" : bilibili.BilibiliUserArticlesFavoriteExtractor,
|
||||
|
||||
Reference in New Issue
Block a user