diff options
| author | 2022-10-03 04:08:41 -0400 | |
|---|---|---|
| committer | 2022-10-03 04:08:41 -0400 | |
| commit | b2d8a54ecf4157570d00a8b974a779766822bf4b (patch) | |
| tree | d7b6db11c9b6add2c1a714fcfc95ab62b11e126c /gallery_dl/extractor/kemonoparty.py | |
| parent | e6b82556343116256be047ab7099bedd9063f66a (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.py | 30 |
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( |
