diff --git a/gallery_dl/extractor/danbooru.py b/gallery_dl/extractor/danbooru.py index c3dfd91a..941efc2a 100644 --- a/gallery_dl/extractor/danbooru.py +++ b/gallery_dl/extractor/danbooru.py @@ -26,16 +26,7 @@ class DanbooruExtractor(BaseExtractor): def _init(self): self.ugoira = self.config("ugoira", False) self.external = self.config("external", False) - - includes = self.config("metadata") - if includes: - if isinstance(includes, (list, tuple)): - includes = ",".join(includes) - elif not isinstance(includes, str): - includes = "artist_commentary,children,notes,parent,uploader" - self.includes = includes + ",id" - else: - self.includes = False + self.includes = False threshold = self.config("threshold") if isinstance(threshold, int): @@ -56,6 +47,16 @@ class DanbooruExtractor(BaseExtractor): return pages * self.per_page def items(self): + # 'includes' initialization must be done here and not in '_init()' + # or it'll cause an exception with e621 when 'metadata' is enabled + includes = self.config("metadata") + if includes: + if isinstance(includes, (list, tuple)): + includes = ",".join(includes) + elif not isinstance(includes, str): + includes = "artist_commentary,children,notes,parent,uploader" + self.includes = includes + ",id" + data = self.metadata() for post in self.posts(): diff --git a/test/results/e621.py b/test/results/e621.py index 5cd5c74d..b49a9973 100644 --- a/test/results/e621.py +++ b/test/results/e621.py @@ -12,6 +12,7 @@ __tests__ = ( "#url" : "https://e621.net/posts?tags=anry", "#category": ("E621", "e621", "tag"), "#class" : e621.E621TagExtractor, + "#options" : {"metadata": True}, "#sha1_url" : "8021e5ea28d47c474c1ffc9bd44863c4d45700ba", "#sha1_content": "501d1e5d922da20ee8ff9806f5ed3ce3a684fd58", },