[deviantart] check availability of intermediary URLs (fixes #609)

This commit is contained in:
Mike Fährmann
2020-02-20 22:25:33 +01:00
parent 5607dd3646
commit 64bdec8430

View File

@@ -93,9 +93,11 @@ class DeviantartExtractor(Extractor):
if content["src"].startswith("https://images-wixmp-"):
if deviation["index"] <= 790677560:
# https://github.com/r888888888/danbooru/issues/4069
content["src"] = re.sub(
intermediary, count = re.subn(
r"(/f/[^/]+/[^/]+)/v\d+/.*",
r"/intermediary\1", content["src"])
if count and self._check_url(intermediary):
content["src"] = intermediary
if self.quality:
content["src"] = re.sub(
r"q_\d+", self.quality, content["src"])
@@ -261,6 +263,9 @@ class DeviantartExtractor(Extractor):
if mtype and mtype.startswith("image/"):
content.update(data)
def _check_url(self, url):
return self.request(url, method="HEAD", fatal=False).status_code < 400
class DeviantartUserExtractor(DeviantartExtractor):
"""Extractor for an artist's user profile"""
@@ -737,8 +742,10 @@ class DeviantartExtractorV2(DeviantartExtractor):
if src.startswith("https://images-wixmp-"):
if deviation["index"] <= 790677560:
# https://github.com/r888888888/danbooru/issues/4069
src = re.sub(
intermediary, count = re.subn(
r"(/f/[^/]+/[^/]+)/v\d+/.*", r"/intermediary\1", src)
if count and self._check_url(intermediary):
src = intermediary
if self.quality:
src = re.sub(r"q_\d+", self.quality, src)