[pixiv] provide fallback URLs (#6762)

This commit is contained in:
Mike Fährmann
2025-01-06 15:19:14 +01:00
parent 770f41eb4a
commit 270aaea8ab
2 changed files with 29 additions and 1 deletions

View File

@@ -111,6 +111,7 @@ class PixivExtractor(Extractor):
{
"url" : img["image_urls"]["original"],
"suffix": "_p{:02}".format(num),
"_fallback": self._fallback_image(img),
}
for num, img in enumerate(meta_pages)
]
@@ -128,7 +129,7 @@ class PixivExtractor(Extractor):
self.log.warning("%s: 'My pixiv' locked", work["id"])
elif work["type"] != "ugoira":
return ({"url": url},)
return ({"url": url, "_fallback": self._fallback_image(url)},)
elif self.load_ugoira:
try:
@@ -269,6 +270,24 @@ class PixivExtractor(Extractor):
except exception.HttpError:
pass
def _fallback_image(self, src):
if isinstance(src, str):
urls = None
orig = src
else:
urls = src["image_urls"]
orig = urls["original"]
base = orig.rpartition(".")[0]
yield base.replace("-original/", "-master/", 1) + "_master1200.jpg"
if urls is None:
return
for fmt in ("large", "medium", "square_medium"):
if fmt in urls:
yield urls[fmt]
@staticmethod
def _date_from_url(url, offset=timedelta(hours=9)):
try: