diff --git a/gallery_dl/extractor/furaffinity.py b/gallery_dl/extractor/furaffinity.py index 8c2887ec..9516dfa0 100644 --- a/gallery_dl/extractor/furaffinity.py +++ b/gallery_dl/extractor/furaffinity.py @@ -232,16 +232,27 @@ class FuraffinitySearchExtractor(FuraffinityExtractor): """Extractor for furaffinity search results""" subcategory = "search" directory_fmt = ("{category}", "Search", "{search}") - pattern = BASE_PATTERN + r"/search/?\?([^#]+)" - test = ("https://www.furaffinity.net/search/?q=cute", { - "pattern": r"https://d\d?\.f(uraffinity|acdn)\.net" - r"/art/[^/]+/\d+/\d+.\w+\.\w+", - "range": "45-50", - "count": 6, - }) + pattern = BASE_PATTERN + r"/search(?:/([^/?#]+))?/?[?&]([^#]+)" + test = ( + ("https://www.furaffinity.net/search/?q=cute", { + "pattern": r"https://d\d?\.f(uraffinity|acdn)\.net" + r"/art/[^/]+/\d+/\d+.\w+\.\w+", + "range": "45-50", + "count": 6, + }), + ("https://www.furaffinity.net/search/cute&rating-general=0", { + "range": "1", + "count": 1, + }), + ) + + def __init__(self, match): + FuraffinityExtractor.__init__(self, match) + self.query = text.parse_query(match.group(2)) + if self.user and "q" not in self.query: + self.query["q"] = text.unescape(self.user) def metadata(self): - self.query = text.parse_query(self.user) return {"search": self.query.get("q")} def posts(self):