[furaffinity:favorite] support URLs with custom start position

This commit is contained in:
Mike Fährmann
2026-01-09 18:02:10 +01:00
parent 7a2f15348f
commit fe1fc5da12
2 changed files with 18 additions and 3 deletions

View File

@@ -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):

View File

@@ -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"),