diff --git a/gallery_dl/extractor/pixiv.py b/gallery_dl/extractor/pixiv.py index 68b9eef8a5..3994dc494b 100644 --- a/gallery_dl/extractor/pixiv.py +++ b/gallery_dl/extractor/pixiv.py @@ -76,6 +76,9 @@ def transform_tags(work): detail = self.api.illust_bookmark_detail(work["id"]) work["tags_bookmark"] = [tag["name"] for tag in detail["tags"] if tag["is_registered"]] + if self.sanity_workaround and not work.get("caption"): + body = self._request_ajax("/illust/" + str(work["id"])) + work["caption"] = text.unescape(body["illustComment"]) if transform_tags: transform_tags(work) @@ -180,7 +183,6 @@ def _extract_ajax(self, work, body): for key_app, key_ajax in ( ("title" , "illustTitle"), ("image_urls" , "urls"), - ("caption" , "illustComment"), ("create_date" , "createDate"), ("width" , "width"), ("height" , "height"), @@ -212,6 +214,7 @@ def _extract_ajax(self, work, body): translated_name = None tags.append({"name": name, "translated_name": translated_name}) + work["caption"] = text.unescape(body["illustComment"]) work["page_count"] = count = body["pageCount"] if count == 1: return ({"url": url},) diff --git a/test/results/pixiv.py b/test/results/pixiv.py index 182c522e86..9cf8533a83 100644 --- a/test/results/pixiv.py +++ b/test/results/pixiv.py @@ -266,6 +266,14 @@ ], }, +{ + "#url" : "https://www.pixiv.net/en/artworks/103983466", + "#comment" : "empty 'caption' in App API response (#4327, #5191)", + "#class" : pixiv.PixivWorkExtractor, + + "caption": r"re:Either she doesn't know how to pose or she can't move with that much clothing on her, in any case she's very well dressed for a holiday trip around town. Lots of stuff to see and a perfect day to grab some sweet pastries at the bakery.
...", +}, + { "#url" : "https://www.pixiv.net/en/artworks/966412", "#category": ("", "pixiv", "work"),