diff --git a/docs/supportedsites.md b/docs/supportedsites.md index 368a1712..19194c8e 100644 --- a/docs/supportedsites.md +++ b/docs/supportedsites.md @@ -382,7 +382,7 @@ Consider all sites to be NSFW unless otherwise known. Kemonoparty https://kemono.party/ - Posts, User Profiles + Favorites, Posts, User Profiles diff --git a/gallery_dl/extractor/kemonoparty.py b/gallery_dl/extractor/kemonoparty.py index a911d35b..75d17810 100644 --- a/gallery_dl/extractor/kemonoparty.py +++ b/gallery_dl/extractor/kemonoparty.py @@ -173,3 +173,20 @@ class KemonopartyPostExtractor(KemonopartyExtractor): def posts(self): posts = self.request(self.api_url).json() return (posts[0],) if len(posts) > 1 else posts + + +class KemonopartyFavoriteExtractor(KemonopartyExtractor): + """Extractor for kemono.party favorites""" + subcategory = "favorite" + pattern = r"(?:https?://)?kemono\.party/favorites" + test = ("https://kemono.party/favorites",) + + def items(self): + self._prepare_ddosguard_cookies() + users = self.request(self.root + "/api/favorites").json() + + for user in users: + user["_extractor"] = KemonopartyUserExtractor + url = "{}/{}/user/{}".format( + self.root, user["service"], user["id"]) + yield Message.Queue, url, user