[wikimedia] add 'subcategories' option (#2340)
https://github.com/mikf/gallery-dl/pull/2340#issuecomment-2707177295
This commit is contained in:
@@ -54,7 +54,7 @@ class WikimediaExtractor(BaseExtractor):
|
||||
|
||||
@staticmethod
|
||||
def prepare(image):
|
||||
"""Adjust the content of a image object"""
|
||||
"""Adjust the content of an image object"""
|
||||
image["metadata"] = {
|
||||
m["name"]: m["value"]
|
||||
for m in image["metadata"] or ()}
|
||||
@@ -80,6 +80,14 @@ class WikimediaExtractor(BaseExtractor):
|
||||
yield Message.Directory, image
|
||||
yield Message.Url, image["url"], image
|
||||
|
||||
if self.subcategories:
|
||||
base = self.root + "/wiki/"
|
||||
self.params["gcmtype"] = "subcat"
|
||||
for subcat in self._pagination(self.params):
|
||||
url = base + subcat["title"].replace(" ", "_")
|
||||
subcat["_extractor"] = WikimediaArticleExtractor
|
||||
yield Message.Queue, url, subcat
|
||||
|
||||
def _pagination(self, params):
|
||||
"""
|
||||
https://www.mediawiki.org/wiki/API:Query
|
||||
@@ -208,6 +216,8 @@ class WikimediaArticleExtractor(WikimediaExtractor):
|
||||
self.subcategory = prefix
|
||||
|
||||
if prefix == "category":
|
||||
self.subcategories = \
|
||||
True if self.config("subcategories", True) else False
|
||||
self.params = {
|
||||
"generator": "categorymembers",
|
||||
"gcmtitle" : path,
|
||||
@@ -215,10 +225,12 @@ class WikimediaArticleExtractor(WikimediaExtractor):
|
||||
"gcmlimit" : self.per_page,
|
||||
}
|
||||
elif prefix == "file":
|
||||
self.subcategories = False
|
||||
self.params = {
|
||||
"titles" : path,
|
||||
}
|
||||
else:
|
||||
self.subcategories = False
|
||||
self.params = {
|
||||
"generator": "images",
|
||||
"gimlimit" : self.per_page,
|
||||
|
||||
Reference in New Issue
Block a user