diff --git a/gallery_dl/extractor/furaffinity.py b/gallery_dl/extractor/furaffinity.py index 0a046c93..c9591c16 100644 --- a/gallery_dl/extractor/furaffinity.py +++ b/gallery_dl/extractor/furaffinity.py @@ -168,8 +168,10 @@ class FuraffinityExtractor(Extractor): return num += 1 - def _pagination_favorites(self): + def _pagination_favorites(self, start=None): path = f"/favorites/{self.user}/" + if start is not None: + path += start while path: page = self.request(self.root + path).text @@ -271,11 +273,11 @@ class FuraffinityFavoriteExtractor(FuraffinityExtractor): """Extractor for a furaffinity user's favorites""" subcategory = "favorite" directory_fmt = ("{category}", "{user!l}", "Favorites") - pattern = BASE_PATTERN + r"/favorites/([^/?#]+)" + pattern = BASE_PATTERN + r"/favorites/([^/?#]+)(/\d+/(?:next|prev))?" example = "https://www.furaffinity.net/favorites/USER/" def posts(self): - return self._pagination_favorites() + return self._pagination_favorites(self.groups[1]) def _parse_post(self, post_id): if post := FuraffinityExtractor._parse_post(self, post_id): diff --git a/test/results/furaffinity.py b/test/results/furaffinity.py index eccdca46..fa893d09 100644 --- a/test/results/furaffinity.py +++ b/test/results/furaffinity.py @@ -53,6 +53,19 @@ __tests__ = ( "favorite_id": int, }, +{ + "#url" : "https://www.furaffinity.net/favorites/mirlinthloth/46682246/next?", + "#comment" : "custom start location", + "#class" : furaffinity.FuraffinityFavoriteExtractor, + "#auth" : False, + "#range" : "1-3", + "#results" : ( + "https://d.furaffinity.net/art/kacey/1263424668/1263424668.kacey_mine.jpg", + "https://d.furaffinity.net/art/leomon32/1254250660/1254250660.leomon32_high_in_the_sky.jpg", + "https://d.furaffinity.net/art/firefoxzero/1262442028/1262442028.firefoxzero_resolute_model_4.png", + ), +}, + { "#url" : "https://www.furaffinity.net/search/?q=cute", "#category": ("", "furaffinity", "search"),