[deviantart] re-add 'quality' option and 'intermediary' transform

This commit is contained in:
Mike Fährmann
2023-09-24 17:36:05 +02:00
parent 20d1683c47
commit 0c5d8b1505
4 changed files with 42 additions and 1 deletions

View File

@@ -45,6 +45,7 @@ class DeviantartExtractor(Extractor):
self.jwt = self.config("jwt", True)
self.flat = self.config("flat", True)
self.extra = self.config("extra", False)
self.quality = self.config("quality", "100")
self.original = self.config("original", True)
self.comments = self.config("comments", False)
@@ -59,6 +60,9 @@ class DeviantartExtractor(Extractor):
else:
self.unwatch = None
if self.quality:
self.quality = ",q_{}".format(self.quality)
if self.original != "image":
self._update_content = self._update_content_default
else:
@@ -125,6 +129,18 @@ class DeviantartExtractor(Extractor):
self._update_content(deviation, content)
elif self.jwt:
self._update_token(deviation, content)
elif content["src"].startswith("https://images-wixmp-"):
if deviation["index"] <= 790677560:
# https://github.com/r888888888/danbooru/issues/4069
intermediary, count = re.subn(
r"(/f/[^/]+/[^/]+)/v\d+/.*",
r"/intermediary\1", content["src"], 1)
if count:
deviation["_fallback"] = (content["src"],)
content["src"] = intermediary
if self.quality:
content["src"] = re.sub(
r",q_\d+", self.quality, content["src"], 1)
yield self.commit(deviation, content)