如何解决offset不能超过5000的限制?
Opened this issue · 2 comments
xiyihan0 commented
我在尝试使用aapi时,为其自定义了一个方法:
def illust_bookmark_users(
self, illust_id: int | str, offset: int | str | None = None, req_auth: bool = True
) -> ParsedJson:
url = "%s/v1/illust/bookmark/users" % self.hosts
params = {
"illust_id": illust_id,
}
if offset:
params["offset"] = offset
r = self.no_auth_requests_call("GET", url, params=params, req_auth=req_auth)
return self.parse_result(r)
用于获取谁收藏了某个插画。
然而在使用过程中,遇到了一个问题:offset不能超过5000,一旦超过则api就会返回错误信息:
_ACCESS_TOKEN = "..."
_REFRESH_TOKEN = "..."
from pixivpy3 import *
api = AppPixivAPI()
api.set_auth(access_token = _ACCESS_TOKEN,refresh_token=_REFRESH_TOKEN)
print(api.illust_bookmark_users(116190229, offset=4980)) # OK
print(api.illust_bookmark_users(116190229, offset=5010)) # {'error': {'user_message': 'Invalid request.', 'message': '', 'reason': '', 'user_message_details': {}}}
请问有什么方法能绕过此限制?
Xdynix commented
只使用aapi很难绕过此限制,除非能找到服务器程序的漏洞。你只能考虑使用其他平台的API了,如模拟网页浏览器的请求。
upbit commented
嗯,App-API是针对手机设计的。如果你需要抓取全部内容,可能考虑网页端用Webdriver获取更容易,对应接口是:
GET /users/{user_id}/bookmarks/artworks?p={页码}