diff options
| author | 2025-08-25 02:01:13 -0400 | |
|---|---|---|
| committer | 2025-08-25 02:01:13 -0400 | |
| commit | 3fd5caf1a580851dd8f4fb823b836f35adb5e606 (patch) | |
| tree | 2bf418b3f34638d18ed7399e1131708813be09aa /gallery_dl/extractor/pixiv.py | |
| parent | bfa4cc26a1f9a69c03aa23aecc4043ea7e779282 (diff) | |
| parent | 1df55d9de48105dace9cc16f1511dba3c9a6da6f (diff) | |
Update upstream source from tag 'upstream/1.30.5'
Update to upstream version '1.30.5'
with Debian dir b55f90fa0d2f879e81fbc596c4db65d65264bf4b
Diffstat (limited to 'gallery_dl/extractor/pixiv.py')
| -rw-r--r-- | gallery_dl/extractor/pixiv.py | 18 |
1 files changed, 10 insertions, 8 deletions
diff --git a/gallery_dl/extractor/pixiv.py b/gallery_dl/extractor/pixiv.py index d34130d..a72042c 100644 --- a/gallery_dl/extractor/pixiv.py +++ b/gallery_dl/extractor/pixiv.py @@ -1251,9 +1251,9 @@ class PixivAppAPI(): "/v1/user/bookmark-tags/illust", params, "bookmark_tags") @memcache(keyarg=1) - def user_detail(self, user_id): + def user_detail(self, user_id, fatal=True): params = {"user_id": user_id} - return self._call("/v1/user/detail", params) + return self._call("/v1/user/detail", params, fatal=fatal) def user_following(self, user_id, restrict="public"): params = {"user_id": user_id, "restrict": restrict} @@ -1261,7 +1261,7 @@ class PixivAppAPI(): def user_illusts(self, user_id): params = {"user_id": user_id} - return self._pagination("/v1/user/illusts", params, user_data="user") + return self._pagination("/v1/user/illusts", params, key_user="user") def user_novels(self, user_id): params = {"user_id": user_id} @@ -1271,7 +1271,7 @@ class PixivAppAPI(): params = {"illust_id": illust_id} return self._call("/v1/ugoira/metadata", params)["ugoira_metadata"] - def _call(self, endpoint, params=None, parse=None): + def _call(self, endpoint, params=None, parse=None, fatal=True): url = "https://app-api.pixiv.net" + endpoint while True: @@ -1283,7 +1283,7 @@ class PixivAppAPI(): else: data = response.json() - if "error" not in data: + if "error" not in data or not fatal: return data self.log.debug(data) @@ -1302,14 +1302,16 @@ class PixivAppAPI(): raise exception.AbortExtraction(f"API request failed: {msg}") def _pagination(self, endpoint, params, - key_items="illusts", key_data=None, user_data=None): + key_items="illusts", key_data=None, key_user=None): data = self._call(endpoint, params) if key_data is not None: self.data = data.get(key_data) - if user_data is not None: - if not data[user_data].get("id"): + if key_user is not None and not data[key_user].get("id"): + user = self.user_detail(self.extractor.user_id, fatal=False) + if user.get("error"): raise exception.NotFoundError("user") + return while True: yield from data[key_items] |
