summaryrefslogtreecommitdiffstats
path: root/gallery_dl/extractor/kemonoparty.py
diff options
context:
space:
mode:
authorLibravatarUnit 193 <unit193@unit193.net>2022-08-29 02:17:16 -0400
committerLibravatarUnit 193 <unit193@unit193.net>2022-08-29 02:17:16 -0400
commita768930761f7f20587ae40a8cacca0e55c85290a (patch)
tree5a4163db912b93fc45f717e5e43fd5be3e66f16c /gallery_dl/extractor/kemonoparty.py
parentae2a0f5622beaa6f402526f8a7b939419283a090 (diff)
New upstream version 1.23.0.upstream/1.23.0
Diffstat (limited to 'gallery_dl/extractor/kemonoparty.py')
-rw-r--r--gallery_dl/extractor/kemonoparty.py48
1 files changed, 36 insertions, 12 deletions
diff --git a/gallery_dl/extractor/kemonoparty.py b/gallery_dl/extractor/kemonoparty.py
index f1eb79f..816b561 100644
--- a/gallery_dl/extractor/kemonoparty.py
+++ b/gallery_dl/extractor/kemonoparty.py
@@ -440,20 +440,44 @@ class KemonopartyDiscordServerExtractor(KemonopartyExtractor):
class KemonopartyFavoriteExtractor(KemonopartyExtractor):
"""Extractor for kemono.party favorites"""
subcategory = "favorite"
- pattern = BASE_PATTERN + r"/favorites"
- test = ("https://kemono.party/favorites", {
- "pattern": KemonopartyUserExtractor.pattern,
- "url": "f4b5b796979bcba824af84206578c79101c7f0e1",
- "count": 3,
- })
+ pattern = BASE_PATTERN + r"/favorites(?:/?\?([^#]+))?"
+ test = (
+ ("https://kemono.party/favorites", {
+ "pattern": KemonopartyUserExtractor.pattern,
+ "url": "f4b5b796979bcba824af84206578c79101c7f0e1",
+ "count": 3,
+ }),
+ ("https://kemono.party/favorites?type=post", {
+ "pattern": KemonopartyPostExtractor.pattern,
+ "url": "ecfccf5f0d50b8d14caa7bbdcf071de5c1e5b90f",
+ "count": 3,
+ }),
+ )
+
+ def __init__(self, match):
+ KemonopartyExtractor.__init__(self, match)
+ self.favorites = (text.parse_query(match.group(2)).get("type") or
+ self.config("favorites") or
+ "artist")
def items(self):
self._prepare_ddosguard_cookies()
self.login()
- 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
+ if self.favorites == "artist":
+ users = self.request(
+ self.root + "/api/v1/account/favorites?type=artist").json()
+ for user in users:
+ user["_extractor"] = KemonopartyUserExtractor
+ url = "{}/{}/user/{}".format(
+ self.root, user["service"], user["id"])
+ yield Message.Queue, url, user
+
+ elif self.favorites == "post":
+ posts = self.request(
+ self.root + "/api/v1/account/favorites?type=post").json()
+ for post in posts:
+ post["_extractor"] = KemonopartyPostExtractor
+ url = "{}/{}/user/{}/post/{}".format(
+ self.root, post["service"], post["user"], post["id"])
+ yield Message.Queue, url, post