diff --git a/docs/supportedsites.md b/docs/supportedsites.md index f8769494..466ca885 100644 --- a/docs/supportedsites.md +++ b/docs/supportedsites.md @@ -670,7 +670,7 @@ Consider all sites to be NSFW unless otherwise known. Seiso https://seiso.party/ - Posts, User Profiles + Favorites, Posts, User Profiles diff --git a/gallery_dl/extractor/seisoparty.py b/gallery_dl/extractor/seisoparty.py index 28e049b6..91b43332 100644 --- a/gallery_dl/extractor/seisoparty.py +++ b/gallery_dl/extractor/seisoparty.py @@ -136,3 +136,43 @@ class SeisopartyPostExtractor(SeisopartyExtractor): url = "{}/post/{}/{}/{}".format( self.root, self.service, self.user_id, self.post_id) return (self._parse_post(self.request(url).text, self.post_id),) + + +class SeisopartyFavoriteExtractor(SeisopartyExtractor): + """Extractor for seiso.party favorites""" + subcategory = "favorite" + pattern = r"(?:https?://)?seiso\.party/favorites/artists/?(?:\?([^#]+))?" + test = ( + ("https://seiso.party/favorites/artists", { + "count": 0, + }), + ("https://seiso.party/favorites/artists?page=2&sort=id", { + "count": 0, + }), + ) + + def __init__(self, match): + SeisopartyExtractor.__init__(self, match) + self.query = match.group(1) + + def items(self): + self._prepare_ddosguard_cookies() + + url = self.root + "/favorites/artists" + data = {"_extractor": SeisopartyUserExtractor} + params = text.parse_query(self.query) + params["page"] = text.parse_int(params.get("page"), 1) + + while True: + page = self.request(url, params=params).text + + cnt = 0 + for card in text.extract_iter( + page, '