diff --git a/gallery_dl/extractor/redgifs.py b/gallery_dl/extractor/redgifs.py index e246405a..6185acb6 100644 --- a/gallery_dl/extractor/redgifs.py +++ b/gallery_dl/extractor/redgifs.py @@ -146,11 +146,17 @@ class RedgifsCollectionsExtractor(RedgifsExtractor): class RedgifsNichesExtractor(RedgifsExtractor): """Extractor for redgifs niches""" subcategory = "niches" - pattern = r"(?:https?://)?(?:www\.)?redgifs\.com/niches/([^/?#]+)" + pattern = (r"(?:https?://)?(?:www\.)?redgifs\.com/niches/([^/?#]+)/?" + r"(?:\?([^#]+))?$") example = "https://www.redgifs.com/niches/NAME" + def __init__(self, match): + RedgifsExtractor.__init__(self, match) + self.query = match.group(2) + def gifs(self): - return self.api.niches(self.key) + order = text.parse_query(self.query).get("order") + return self.api.niches(self.key, order or "new") class RedgifsSearchExtractor(RedgifsExtractor): @@ -232,9 +238,10 @@ class RedgifsAPI(): endpoint = "/v2/users/{}/collections".format(user) return self._pagination(endpoint, key="collections") - def niches(self, niche): + def niches(self, niche, order): endpoint = "/v2/niches/{}/gifs".format(niche) - return self._pagination(endpoint) + params = {"count": 30, "order": order} + return self._pagination(endpoint, params) def search(self, params): endpoint = "/v2/gifs/search" diff --git a/test/results/redgifs.py b/test/results/redgifs.py index 669f2a23..0febcf53 100644 --- a/test/results/redgifs.py +++ b/test/results/redgifs.py @@ -67,19 +67,19 @@ __tests__ = ( }, { - "#url" : "https://www.redgifs.com/niches/boobs", + "#url" : "https://www.redgifs.com/niches/just-boobs", "#category": ("", "redgifs", "niches"), "#class" : redgifs.RedgifsNichesExtractor, - "#pattern" : r"https://\w+\.redgifs\.com/[\w-]+\.mp4", + "#pattern" : r"https://\w+\.redgifs\.com/[\w-]+\.(mp4|jpg)", "#range" : "1-20", "#count" : 20, }, { - "#url" : "https://www.redgifs.com/niches/ass", + "#url" : "https://www.redgifs.com/niches/thick-booty", "#category": ("", "redgifs", "niches"), "#class" : redgifs.RedgifsNichesExtractor, - "#pattern" : r"https://\w+\.redgifs\.com/[\w-]+\.mp4", + "#pattern" : r"https://\w+\.redgifs\.com/[\w-]+\.(mp4|jpg)", "#range" : "1-20", "#count" : 20, },