summaryrefslogtreecommitdiffstats
path: root/gallery_dl/extractor/mangadex.py
diff options
context:
space:
mode:
authorLibravatarUnit 193 <unit193@unit193.net>2024-01-23 23:35:00 -0500
committerLibravatarUnit 193 <unit193@unit193.net>2024-01-23 23:35:00 -0500
commit12e23f1195164dcb740d6d4a4287e762c9e5e534 (patch)
treee6b13483475c510ea2f685c21363271f23745c56 /gallery_dl/extractor/mangadex.py
parente949aaf6f6ac93896947d5b736e48e7911926efb (diff)
New upstream version 1.26.7.upstream/1.26.7
Diffstat (limited to 'gallery_dl/extractor/mangadex.py')
-rw-r--r--gallery_dl/extractor/mangadex.py32
1 files changed, 32 insertions, 0 deletions
diff --git a/gallery_dl/extractor/mangadex.py b/gallery_dl/extractor/mangadex.py
index 94bea57..bca7e4d 100644
--- a/gallery_dl/extractor/mangadex.py
+++ b/gallery_dl/extractor/mangadex.py
@@ -148,6 +148,32 @@ class MangadexFeedExtractor(MangadexExtractor):
return self.api.user_follows_manga_feed()
+class MangadexListExtractor(MangadexExtractor):
+ """Extractor for mangadex lists"""
+ subcategory = "list"
+ pattern = (BASE_PATTERN +
+ r"/list/([0-9a-f-]+)(?:/[^/?#]*)?(?:\?tab=(\w+))?")
+ example = ("https://mangadex.org/list"
+ "/01234567-89ab-cdef-0123-456789abcdef/NAME")
+
+ def __init__(self, match):
+ MangadexExtractor.__init__(self, match)
+ if match.group(2) == "feed":
+ self.subcategory = "list-feed"
+ else:
+ self.items = self._items_titles
+
+ def chapters(self):
+ return self.api.list_feed(self.uuid)
+
+ def _items_titles(self):
+ data = {"_extractor": MangadexMangaExtractor}
+ for item in self.api.list(self.uuid)["relationships"]:
+ if item["type"] == "manga":
+ url = "{}/title/{}".format(self.root, item["id"])
+ yield Message.Queue, url, data
+
+
class MangadexAPI():
"""Interface for the MangaDex API v5
@@ -173,6 +199,12 @@ class MangadexAPI():
params = {"includes[]": ("scanlation_group",)}
return self._call("/chapter/" + uuid, params)["data"]
+ def list(self, uuid):
+ return self._call("/list/" + uuid)["data"]
+
+ def list_feed(self, uuid):
+ return self._pagination("/list/" + uuid + "/feed")
+
@memcache(keyarg=1)
def manga(self, uuid):
params = {"includes[]": ("artist", "author")}