[bilibili] warn about blocked articles (#7880)
This commit is contained in:
@@ -45,12 +45,16 @@ class BilibiliArticleExtractor(BilibiliExtractor):
|
||||
archive_fmt = "{id}_{num}"
|
||||
|
||||
def items(self):
|
||||
article = self.api.article(self.groups[0])
|
||||
article_id = self.groups[0]
|
||||
article = self.api.article(article_id)
|
||||
|
||||
# Flatten modules list
|
||||
modules = {}
|
||||
for module in article["detail"]["modules"]:
|
||||
del module['module_type']
|
||||
if module["module_type"] == "MODULE_TYPE_BLOCKED":
|
||||
self.log.warning("%s: Blocked Article\n%s", article_id,
|
||||
module["module_blocked"].get("hint_message"))
|
||||
del module["module_type"]
|
||||
modules.update(module)
|
||||
article["detail"]["modules"] = modules
|
||||
|
||||
@@ -64,14 +68,15 @@ class BilibiliArticleExtractor(BilibiliExtractor):
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
for paragraph in modules['module_content']['paragraphs']:
|
||||
if "pic" not in paragraph:
|
||||
continue
|
||||
if "module_content" in modules:
|
||||
for paragraph in modules["module_content"]["paragraphs"]:
|
||||
if "pic" not in paragraph:
|
||||
continue
|
||||
|
||||
try:
|
||||
pics.extend(paragraph["pic"]["pics"])
|
||||
except Exception:
|
||||
pass
|
||||
try:
|
||||
pics.extend(paragraph["pic"]["pics"])
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
article["count"] = len(pics)
|
||||
yield Message.Directory, article
|
||||
|
||||
@@ -53,6 +53,18 @@ __tests__ = (
|
||||
"username" : "诗月饼",
|
||||
},
|
||||
|
||||
{
|
||||
"#url" : "https://www.bilibili.com/opus/1047501858770255875",
|
||||
"#comment" : "blocked/paid article (#7880)",
|
||||
"#class" : bilibili.BilibiliArticleExtractor,
|
||||
"#count" : 0,
|
||||
"#log" : """\
|
||||
1047501858770255875: Blocked Article
|
||||
乌龙茶专属动态
|
||||
加入当前UP主的6元档包月充电即可解锁观看\
|
||||
""",
|
||||
},
|
||||
|
||||
{
|
||||
"#url" : "https://space.bilibili.com/405279279/article",
|
||||
"#class" : bilibili.BilibiliUserArticlesExtractor,
|
||||
|
||||
Reference in New Issue
Block a user