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