diff --git a/docs/supportedsites.md b/docs/supportedsites.md index 92fa691c..e55e868a 100644 --- a/docs/supportedsites.md +++ b/docs/supportedsites.md @@ -1184,7 +1184,7 @@ Consider all listed sites to potentially be NSFW. e621 https://e621.net/ - Favorites, Pools, Popular Images, Posts, Tag Searches + Favorites, Pools, Popular Images, Posts, Tag Searches, Frontends Supported diff --git a/gallery_dl/extractor/e621.py b/gallery_dl/extractor/e621.py index 33e6ba8e..eddcb125 100644 --- a/gallery_dl/extractor/e621.py +++ b/gallery_dl/extractor/e621.py @@ -8,7 +8,7 @@ """Extractors for https://e621.net/ and other e621 instances""" -from .common import Message +from .common import Extractor, Message from . import danbooru from ..cache import memcache from .. import text, util @@ -156,3 +156,20 @@ class E621FavoriteExtractor(E621Extractor): def posts(self): return self._pagination("/favorites.json", self.query) + + +class E621FrontendExtractor(Extractor): + """Extractor for alternative e621 frontends""" + basecategory = "E621" + category = "e621" + subcategory = "frontend" + pattern = r"(?:https?://)?e621\.(?:cc/\?tags|anthro\.fr/\?q)=([^&#]*)" + example = "https://e621.cc/?tags=TAG" + + def initialize(self): + pass + + def items(self): + url = "https://e621.net/posts?tags=" + self.groups[0] + data = {"_extractor": E621TagExtractor} + yield Message.Queue, url, data diff --git a/scripts/supportedsites.py b/scripts/supportedsites.py index 3ef7e9e0..6ca00263 100755 --- a/scripts/supportedsites.py +++ b/scripts/supportedsites.py @@ -578,6 +578,9 @@ def build_extractor_list(): default["wikifeetx"] = default["wikifeet"] domains["wikifeetx"] = "https://www.wikifeetx.com/" + # add extra e621 extractors + categories["E621"]["e621"].extend(default.pop("e621", ())) + return categories, domains diff --git a/test/results/E621.py b/test/results/E621.py new file mode 100644 index 00000000..dc86c4fb --- /dev/null +++ b/test/results/E621.py @@ -0,0 +1,25 @@ +# -*- coding: utf-8 -*- + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License version 2 as +# published by the Free Software Foundation. + +from gallery_dl.extractor import e621 + + +__tests__ = ( +{ + "#url" : "https://e621.cc/?tags=rating:safe", + "#category": ("E621", "e621", "frontend"), + "#class" : e621.E621FrontendExtractor, + "#urls" : "https://e621.net/posts?tags=rating:safe", +}, + +{ + "#url" : "https://e621.anthro.fr/?q=rating:safe", + "#category": ("E621", "e621", "frontend"), + "#class" : e621.E621FrontendExtractor, + "#urls" : "https://e621.net/posts?tags=rating:safe", +}, + +)