[deviantart] check availability of intermediary URLs (fixes #609)
This commit is contained in:
@@ -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)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user