diff --git a/docs/configuration.rst b/docs/configuration.rst index 98b8175a..a62e1a34 100644 --- a/docs/configuration.rst +++ b/docs/configuration.rst @@ -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 diff --git a/docs/gallery-dl.conf b/docs/gallery-dl.conf index 7c1e7ff5..b2a01554 100644 --- a/docs/gallery-dl.conf +++ b/docs/gallery-dl.conf @@ -165,7 +165,9 @@ }, "bilibili": { - "sleep-request": "3.0-6.0" + "sleep-request": "3.0-6.0", + + "livephoto": true }, "bluesky": { diff --git a/gallery_dl/extractor/bilibili.py b/gallery_dl/extractor/bilibili.py index d9a942df..2fc86bb7 100644 --- a/gallery_dl/extractor/bilibili.py +++ b/gallery_dl/extractor/bilibili.py @@ -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): diff --git a/test/results/bilibili.py b/test/results/bilibili.py index c615ca04..9fe4980a 100644 --- a/test/results/bilibili.py +++ b/test/results/bilibili.py @@ -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,