diff options
Diffstat (limited to 'gallery_dl/extractor/pixiv.py')
| -rw-r--r-- | gallery_dl/extractor/pixiv.py | 42 |
1 files changed, 29 insertions, 13 deletions
diff --git a/gallery_dl/extractor/pixiv.py b/gallery_dl/extractor/pixiv.py index d3e40ee..7fe8869 100644 --- a/gallery_dl/extractor/pixiv.py +++ b/gallery_dl/extractor/pixiv.py @@ -27,8 +27,10 @@ class PixivExtractor(Extractor): filename_fmt = "{id}_p{num}.{extension}" archive_fmt = "{id}{suffix}.{extension}" cookies_domain = ".pixiv.net" - sanity_url = "https://s.pximg.net/common/images/limit_sanity_level_360.png" - mypixiv_url = "https://s.pximg.net/common/images/limit_mypixiv_360.png" + limit_url = "https://s.pximg.net/common/images/limit_" + # https://s.pximg.net/common/images/limit_sanity_level_360.png + # https://s.pximg.net/common/images/limit_unviewable_360.png + # https://s.pximg.net/common/images/limit_mypixiv_360.png def _init(self): self.api = PixivAppAPI(self) @@ -117,16 +119,30 @@ class PixivExtractor(Extractor): ] url = meta_single_page["original_image_url"] - if url == self.sanity_url: - work["_ajax"] = True - self.log.warning("%s: 'limit_sanity_level' warning", work["id"]) - if self.sanity_workaround: - body = self._request_ajax("/illust/" + str(work["id"])) - return self._extract_ajax(work, body) + if url.startswith(self.limit_url): + work_id = work["id"] + self.log.debug("%s: %s", work_id, url) + + limit_type = url.rpartition("/")[2] + if limit_type in ( + "limit_", # for '_extend_sanity()' inserts + "limit_unviewable_360.png", + "limit_sanity_level_360.png", + ): + work["_ajax"] = True + self.log.warning("%s: 'limit_sanity_level' warning", work_id) + if self.sanity_workaround: + body = self._request_ajax("/illust/" + str(work_id)) + return self._extract_ajax(work, body) + + elif limit_type == "limit_mypixiv_360.png": + work["_mypixiv"] = True + self.log.warning("%s: 'My pixiv' locked", work_id) - elif url == self.mypixiv_url: - work["_mypixiv"] = True - self.log.warning("%s: 'My pixiv' locked", work["id"]) + else: + work["_mypixiv"] = True # stop further processing + self.log.error("%s: Unknown 'limit' URL type: %s", + work_id, limit_type) elif work["type"] != "ugoira": return ({"url": url, "_fallback": self._fallback_image(url)},) @@ -430,7 +446,7 @@ class PixivArtworksExtractor(PixivExtractor): elif ajax_id > work_id: index -= 1 self.log.debug("Inserting work %s", ajax_id) - yield self._make_work(ajax_id, self.sanity_url, user) + yield self._make_work(ajax_id, self.limit_url, user) else: # ajax_id < work_id break @@ -440,7 +456,7 @@ class PixivArtworksExtractor(PixivExtractor): while index >= 0: ajax_id = ajax_ids[index] self.log.debug("Inserting work %s", ajax_id) - yield self._make_work(ajax_id, self.sanity_url, user) + yield self._make_work(ajax_id, self.limit_url, user) index -= 1 |
