aboutsummaryrefslogtreecommitdiffstats
path: root/gallery_dl/extractor/pixiv.py
diff options
context:
space:
mode:
authorLibravatarUnit 193 <unit193@unit193.net>2025-08-25 02:01:13 -0400
committerLibravatarUnit 193 <unit193@unit193.net>2025-08-25 02:01:13 -0400
commit3fd5caf1a580851dd8f4fb823b836f35adb5e606 (patch)
tree2bf418b3f34638d18ed7399e1131708813be09aa /gallery_dl/extractor/pixiv.py
parentbfa4cc26a1f9a69c03aa23aecc4043ea7e779282 (diff)
parent1df55d9de48105dace9cc16f1511dba3c9a6da6f (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.py18
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]