Skip to content

Commit

Permalink
[bilibili] support large articles
Browse files Browse the repository at this point in the history
  • Loading branch information
hdk5 committed Nov 10, 2024
1 parent 6eef3e3 commit fc59e0f
Showing 1 changed file with 19 additions and 16 deletions.
35 changes: 19 additions & 16 deletions gallery_dl/extractor/bilibili.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
"""Extractors for https://www.bilibili.com/"""

from .common import Extractor, Message
from .. import text, exception
from .. import text, util, exception


class BilibiliExtractor(Extractor):
Expand Down Expand Up @@ -50,16 +50,21 @@ class BilibiliArticleExtractor(BilibiliExtractor):

def items(self):
article = self.api.article(self.item)
article["username"] = article["modules"]["module_author"]["name"]
article["id"] = article["id_str"]

dynamic_major = article["modules"]["module_dynamic"]["major"]
if dynamic_major["type"] == "MAJOR_TYPE_OPUS":
urls = [pic["url"] for pic in dynamic_major["opus"]["pics"]]
else:
urls = []
self.log.warning("%s: Unsupported article type '%s'",
article["id"], dynamic_major["type"])
# Flatten modules list
modules = {}
for module in article["detail"]["modules"]:
del module['module_type']
modules.update(module)
article["detail"]["modules"] = modules

article["username"] = modules["module_author"]["name"]

urls = []
for paragraph in modules['module_content']['paragraphs']:
pics = paragraph.get('pic', {}).get('pics', [])
for pic in pics:
urls.append(pic['url'])

yield Message.Directory, article
for article["num"], url in enumerate(urls, 1):
Expand Down Expand Up @@ -94,9 +99,7 @@ def user_articles(self, user_id):
break

def article(self, article_id):
endpoint = "/detail"
params = {
"id": article_id,
"features": "itemOpusStyle",
}
return self._call(endpoint, params)["data"]["item"]
url = "https://www.bilibili.com/opus/{}".format(article_id)
response = self.extractor.request(url)
return util.json_loads(text.extr(
response.text, "window.__INITIAL_STATE__=", ";"))

0 comments on commit fc59e0f

Please sign in to comment.