aboutsummaryrefslogtreecommitdiffstats
path: root/gallery_dl/extractor/kemonoparty.py
diff options
context:
space:
mode:
authorLibravatarUnit 193 <unit193@unit193.net>2022-10-03 04:08:41 -0400
committerLibravatarUnit 193 <unit193@unit193.net>2022-10-03 04:08:41 -0400
commitb2d8a54ecf4157570d00a8b974a779766822bf4b (patch)
treed7b6db11c9b6add2c1a714fcfc95ab62b11e126c /gallery_dl/extractor/kemonoparty.py
parente6b82556343116256be047ab7099bedd9063f66a (diff)
New upstream version 1.23.2upstream/1.23.2
Diffstat (limited to 'gallery_dl/extractor/kemonoparty.py')
-rw-r--r--gallery_dl/extractor/kemonoparty.py30
1 files changed, 21 insertions, 9 deletions
diff --git a/gallery_dl/extractor/kemonoparty.py b/gallery_dl/extractor/kemonoparty.py
index 816b561..750b741 100644
--- a/gallery_dl/extractor/kemonoparty.py
+++ b/gallery_dl/extractor/kemonoparty.py
@@ -33,6 +33,7 @@ class KemonopartyExtractor(Extractor):
self.cookiedomain = ".coomer.party"
self.root = text.root_from_url(match.group(0))
Extractor.__init__(self, match)
+ self.session.headers["Referer"] = self.root + "/"
def items(self):
self._prepare_ddosguard_cookies()
@@ -46,7 +47,7 @@ class KemonopartyExtractor(Extractor):
comments = self.config("comments")
username = dms = None
- # prevent files to be sent with gzip compression
+ # prevent files from being sent with gzip compression
headers = {"Accept-Encoding": "identity"}
if self.config("metadata"):
@@ -63,6 +64,9 @@ class KemonopartyExtractor(Extractor):
for post in posts:
+ headers["Referer"] = "{}/{}/user/{}/post/{}".format(
+ self.root, post["service"], post["user"], post["id"])
+ post["_http_headers"] = headers
post["date"] = text.parse_datetime(
post["published"] or post["added"],
"%a, %d %b %Y %H:%M:%S %Z")
@@ -74,27 +78,33 @@ class KemonopartyExtractor(Extractor):
if dms is True:
dms = self._extract_dms(post)
post["dms"] = dms
- yield Message.Directory, post
+ files = []
hashes = set()
- post["num"] = 0
+
for file in itertools.chain.from_iterable(
g(post) for g in generators):
url = file["path"]
match = find_hash(url)
if match:
- post["hash"] = hash = match.group(1)
+ file["hash"] = hash = match.group(1)
if hash in hashes and not duplicates:
self.log.debug("Skipping %s (duplicate)", url)
continue
hashes.add(hash)
else:
- post["hash"] = ""
+ file["hash"] = ""
+
+ files.append(file)
+ post["count"] = len(files)
+ yield Message.Directory, post
+
+ for post["num"], file in enumerate(files, 1):
+ post["hash"] = file["hash"]
post["type"] = file["type"]
- post["num"] += 1
- post["_http_headers"] = headers
+ url = file["path"]
text.nameext_from_url(file.get("name", url), post)
if not post["extension"]:
@@ -236,6 +246,7 @@ class KemonopartyPostExtractor(KemonopartyExtractor):
"keyword": {
"added": "Wed, 06 May 2020 20:28:02 GMT",
"content": str,
+ "count": 1,
"date": "dt:2019-08-11 02:09:04",
"edited": None,
"embed": dict,
@@ -374,6 +385,7 @@ class KemonopartyDiscordExtractor(KemonopartyExtractor):
post["channel_name"] = self.channel_name
post["date"] = text.parse_datetime(
post["published"], "%a, %d %b %Y %H:%M:%S %Z")
+ post["count"] = len(files)
yield Message.Directory, post
for post["num"], file in enumerate(files, 1):
@@ -466,7 +478,7 @@ class KemonopartyFavoriteExtractor(KemonopartyExtractor):
if self.favorites == "artist":
users = self.request(
- self.root + "/api/v1/account/favorites?type=artist").json()
+ self.root + "/api/favorites?type=artist").json()
for user in users:
user["_extractor"] = KemonopartyUserExtractor
url = "{}/{}/user/{}".format(
@@ -475,7 +487,7 @@ class KemonopartyFavoriteExtractor(KemonopartyExtractor):
elif self.favorites == "post":
posts = self.request(
- self.root + "/api/v1/account/favorites?type=post").json()
+ self.root + "/api/favorites?type=post").json()
for post in posts:
post["_extractor"] = KemonopartyPostExtractor
url = "{}/{}/user/{}/post/{}".format(