summaryrefslogtreecommitdiffstats
path: root/gallery_dl/extractor/mangadex.py
diff options
context:
space:
mode:
Diffstat (limited to 'gallery_dl/extractor/mangadex.py')
-rw-r--r--gallery_dl/extractor/mangadex.py22
1 files changed, 22 insertions, 0 deletions
diff --git a/gallery_dl/extractor/mangadex.py b/gallery_dl/extractor/mangadex.py
index bca7e4d..1f24593 100644
--- a/gallery_dl/extractor/mangadex.py
+++ b/gallery_dl/extractor/mangadex.py
@@ -174,6 +174,20 @@ class MangadexListExtractor(MangadexExtractor):
yield Message.Queue, url, data
+class MangadexAuthorExtractor(MangadexExtractor):
+ """Extractor for mangadex authors"""
+ subcategory = "author"
+ pattern = BASE_PATTERN + r"/author/([0-9a-f-]+)"
+ example = ("https://mangadex.org/author"
+ "/01234567-89ab-cdef-0123-456789abcdef/NAME")
+
+ def items(self):
+ for manga in self.api.manga_author(self.uuid):
+ manga["_extractor"] = MangadexMangaExtractor
+ url = "{}/title/{}".format(self.root, manga["id"])
+ yield Message.Queue, url, manga
+
+
class MangadexAPI():
"""Interface for the MangaDex API v5
@@ -195,6 +209,10 @@ class MangadexAPI():
def athome_server(self, uuid):
return self._call("/at-home/server/" + uuid)
+ def author(self, uuid, manga=False):
+ params = {"includes[]": ("manga",)} if manga else None
+ return self._call("/author/" + uuid, params)["data"]
+
def chapter(self, uuid):
params = {"includes[]": ("scanlation_group",)}
return self._call("/chapter/" + uuid, params)["data"]
@@ -210,6 +228,10 @@ class MangadexAPI():
params = {"includes[]": ("artist", "author")}
return self._call("/manga/" + uuid, params)["data"]
+ def manga_author(self, uuid_author):
+ params = {"authorOrArtist": uuid_author}
+ return self._pagination("/manga", params)
+
def manga_feed(self, uuid):
order = "desc" if self.extractor.config("chapter-reverse") else "asc"
params = {