diff --git a/gallery_dl/extractor/8muses.py b/gallery_dl/extractor/8muses.py index fafb7852..b2487353 100644 --- a/gallery_dl/extractor/8muses.py +++ b/gallery_dl/extractor/8muses.py @@ -94,12 +94,12 @@ class _8musesAlbumExtractor(Extractor): if albums: for album in albums: url = self.root + "/comics/album/" + album["permalink"] - album = { - "url" : url, - "name" : album["name"], - "private": album["isPrivate"], + yield Message.Queue, url, { + "url" : url, + "name" : album["name"], + "private" : album["isPrivate"], + "_extractor": _8musesAlbumExtractor, } - yield Message.Queue, url, album if data["page"] >= data["pages"]: return diff --git a/gallery_dl/extractor/deviantart.py b/gallery_dl/extractor/deviantart.py index a0f4d1c5..9cceaeec 100644 --- a/gallery_dl/extractor/deviantart.py +++ b/gallery_dl/extractor/deviantart.py @@ -262,9 +262,11 @@ class DeviantartExtractor(Extractor): return folder raise exception.NotFoundError("folder") - def _folder_urls(self, folders, category): - url = "{}/{}/{}/0/".format(self.root, self.user, category) - return [(url + folder["name"], folder) for folder in folders] + def _folder_urls(self, folders, category, extractor): + base = "{}/{}/{}/0/".format(self.root, self.user, category) + for folder in folders: + folder["_extractor"] = extractor + yield base + folder["name"], folder def _update_content_default(self, deviation, content): public = "premium_folder_data" not in deviation @@ -450,7 +452,7 @@ class DeviantartGalleryExtractor(DeviantartExtractor): if self.flat and not self.group: return self.api.gallery_all(self.user, self.offset) folders = self.api.gallery_folders(self.user) - return self._folder_urls(folders, "gallery") + return self._folder_urls(folders, "gallery", DeviantartFolderExtractor) class DeviantartFolderExtractor(DeviantartExtractor): @@ -589,7 +591,8 @@ class DeviantartFavoriteExtractor(DeviantartExtractor): self.api.collections(self.user, folder["folderid"]) for folder in folders ) - return self._folder_urls(folders, "favourites") + return self._folder_urls( + folders, "favourites", DeviantartCollectionExtractor) class DeviantartCollectionExtractor(DeviantartExtractor): diff --git a/gallery_dl/extractor/exhentai.py b/gallery_dl/extractor/exhentai.py index cb4df11c..06b5ba2d 100644 --- a/gallery_dl/extractor/exhentai.py +++ b/gallery_dl/extractor/exhentai.py @@ -392,6 +392,7 @@ class ExhentaiSearchExtractor(ExhentaiExtractor): def items(self): self.login() yield Message.Version, 1 + data = {"_extractor": ExhentaiGalleryExtractor} while True: last = None @@ -402,7 +403,7 @@ class ExhentaiSearchExtractor(ExhentaiExtractor): if url == last: continue last = url - yield Message.Queue, url, {} + yield Message.Queue, url, data if 'class="ptdd">><' in page or ">No hits found
" in page: return diff --git a/gallery_dl/extractor/mangoxo.py b/gallery_dl/extractor/mangoxo.py index 0e04f97e..57434980 100644 --- a/gallery_dl/extractor/mangoxo.py +++ b/gallery_dl/extractor/mangoxo.py @@ -167,6 +167,8 @@ class MangoxoChannelExtractor(MangoxoExtractor): self.login() num = total = 1 url = "{}/channel/{}/album/".format(self.root, self.channel_id) + data = {"_extractor": MangoxoAlbumExtractor} + yield Message.Version, 1 while True: @@ -174,7 +176,7 @@ class MangoxoChannelExtractor(MangoxoExtractor): for album in text.extract_iter( page, '