1
0
mirror of https://github.com/mikf/gallery-dl.git synced 2024-11-22 02:32:33 +01:00

[kemonoparty] add 'revisions' option (#4498, #4597)

This commit is contained in:
Mike Fährmann 2023-10-20 00:16:59 +02:00
parent 6e830ffc9e
commit 0d52b775cb
No known key found for this signature in database
GPG Key ID: 5680CA389D365A88
2 changed files with 38 additions and 3 deletions

View File

@ -2072,7 +2072,19 @@ Type
Default
``false``
Description
Extract ``username`` metadata
Extract ``username`` metadata.
extractor.kemonoparty.revisions
-------------------------------
Type
``bool``
Default
``false``
Description
Extract post revisions.
Note: This requires 1 additional HTTP request per post.
extractor.khinsider.format

View File

@ -239,10 +239,24 @@ class KemonopartyUserExtractor(KemonopartyExtractor):
url = self.api_url
params = text.parse_query(self.query)
params["o"] = text.parse_int(params.get("o"))
revisions = self.config("revisions")
while True:
posts = self.request(url, params=params).json()
yield from posts
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
else:
yield from revs
else:
yield from posts
if len(posts) < 50:
break
@ -266,7 +280,16 @@ class KemonopartyPostExtractor(KemonopartyExtractor):
def posts(self):
if not self.revision:
return (self.request(self.api_url).json(),)
post = self.request(self.api_url).json()
if self.config("revisions"):
post["revision_id"] = 0
try:
revs = self._post_revisions(self.api_url)
except exception.HttpError:
pass
else:
return itertools.chain((post,), revs)
return (post,)
revs = self._post_revisions(self.api_url)
if not self.revision_id: