summaryrefslogtreecommitdiffstats
path: root/gallery_dl/extractor/kemonoparty.py
diff options
context:
space:
mode:
authorLibravatarUnit 193 <unit193@unit193.net>2023-11-04 18:45:48 -0400
committerLibravatarUnit 193 <unit193@unit193.net>2023-11-04 18:45:48 -0400
commit7997fa94c82f9a6db63421c0af433f325a8aa607 (patch)
tree25e8377f1d038f8dad93e2c54c12beacbc65f470 /gallery_dl/extractor/kemonoparty.py
parente052f3b9e1d9703a5a466daeaf37bacf476c2daf (diff)
New upstream version 1.26.2.upstream/1.26.2
Diffstat (limited to 'gallery_dl/extractor/kemonoparty.py')
-rw-r--r--gallery_dl/extractor/kemonoparty.py33
1 files changed, 24 insertions, 9 deletions
diff --git a/gallery_dl/extractor/kemonoparty.py b/gallery_dl/extractor/kemonoparty.py
index 1596cfb..cba6211 100644
--- a/gallery_dl/extractor/kemonoparty.py
+++ b/gallery_dl/extractor/kemonoparty.py
@@ -24,7 +24,7 @@ class KemonopartyExtractor(Extractor):
category = "kemonoparty"
root = "https://kemono.party"
directory_fmt = ("{category}", "{service}", "{user}")
- filename_fmt = "{id}_{title}_{num:>02}_{filename[:180]}.{extension}"
+ filename_fmt = "{id}_{title[:180]}_{num:>02}_{filename[:180]}.{extension}"
archive_fmt = "{service}_{user}_{id}_{num}"
cookies_domain = ".kemono.party"
@@ -69,8 +69,9 @@ class KemonopartyExtractor(Extractor):
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"], "%Y-%m-%dT%H:%M:%S")
+ post["date"] = self._parse_datetime(
+ post["published"] or post["added"])
+
if username:
post["username"] = username
if comments:
@@ -205,6 +206,11 @@ class KemonopartyExtractor(Extractor):
})
return dms
+ def _parse_datetime(self, date_string):
+ if len(date_string) > 19:
+ date_string = date_string[:19]
+ return text.parse_datetime(date_string, "%Y-%m-%dT%H:%M:%S")
+
@memcache(keyarg=1)
def _discord_channels(self, server):
url = "{}/api/v1/discord/channel/lookup/{}".format(
@@ -213,7 +219,14 @@ class KemonopartyExtractor(Extractor):
@memcache(keyarg=1)
def _post_revisions(self, url):
- return self.request(url + "/revisions").json()
+ revs = self.request(url + "/revisions").json()
+
+ idx = len(revs)
+ for rev in revs:
+ rev["revision_index"] = idx
+ idx -= 1
+
+ return revs
def _validate(response):
@@ -247,13 +260,15 @@ class KemonopartyUserExtractor(KemonopartyExtractor):
if revisions:
for post in posts:
post["revision_id"] = 0
- yield post
post_url = "{}/post/{}".format(self.api_url, post["id"])
try:
revs = self._post_revisions(post_url)
except exception.HttpError:
- pass
+ post["revision_index"] = 1
+ yield post
else:
+ post["revision_index"] = len(revs) + 1
+ yield post
yield from revs
else:
yield from posts
@@ -286,8 +301,9 @@ class KemonopartyPostExtractor(KemonopartyExtractor):
try:
revs = self._post_revisions(self.api_url)
except exception.HttpError:
- pass
+ post["revision_index"] = 1
else:
+ post["revision_index"] = len(revs) + 1
return itertools.chain((post,), revs)
return (post,)
@@ -360,8 +376,7 @@ class KemonopartyDiscordExtractor(KemonopartyExtractor):
"name": path, "type": "inline", "hash": ""})
post["channel_name"] = self.channel_name
- post["date"] = text.parse_datetime(
- post["published"], "%Y-%m-%dT%H:%M:%S.%f")
+ post["date"] = self._parse_datetime(post["published"])
post["count"] = len(files)
yield Message.Directory, post