Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: add some apis about novel for AppAPI #161

Merged
merged 1 commit into from
Mar 2, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
35 changes: 35 additions & 0 deletions demo.py
Original file line number Diff line number Diff line change
Expand Up @@ -214,6 +214,40 @@ def appapi_bookmark_add(aapi):
(illust_id, [tag.name for tag in json_result.bookmark_detail.tags if tag.is_registered]))


def appapi_novel(aapi):
json_result = aapi.user_novels(59216290)
print(json_result)
novel = json_result.novels[0]
print(">>> %s, text_length: %s, series: %s" % (novel.title, novel.text_length, novel.series))

# get next page
next_qs = aapi.parse_qs(json_result.next_url)
json_result = aapi.user_novels(**next_qs)
novel = json_result.novels[0]
print(">>> %s, text_length: %s, series: %s" % (novel.title, novel.text_length, novel.series))

json_result = aapi.novel_series(1276963)
print(json_result)
detail = json_result.novel_series_detail
print(">>> %s, total_character_count: %s" % (detail.title, detail.total_character_count))

# get next page
next_qs = aapi.parse_qs(json_result.next_url)
json_result = aapi.novel_series(**next_qs)
detail = json_result.novel_series_detail
print(">>> %s, total_character_count: %s" % (detail.title, detail.total_character_count))

novel_id = 14357107
json_result = aapi.novel_detail(novel_id)
print(json_result)
novel = json_result.novel
print(">>> %s, text_length: %s, series: %s" % (novel.title, novel.text_length, novel.series))

json_result = aapi.novel_text(novel_id)
print(json_result)
print(">>> %s, novel_text: %s" % (novel.title, json_result.novel_text))


# PAPI start

def migrate_rev2_to_papi(api):
Expand Down Expand Up @@ -381,6 +415,7 @@ def main():
appapi_user_search(aapi)
appapi_ranking(aapi)
appapi_bookmark_add(aapi)
appapi_novel(aapi)

appapi_auth_api(aapi)

Expand Down
46 changes: 44 additions & 2 deletions pixivpy3/aapi.py
Original file line number Diff line number Diff line change
Expand Up @@ -305,8 +305,6 @@ def search_novel(self, word, search_target='partial_match_for_tags', sort='date_
if (offset):
params['offset'] = offset
r = self.no_auth_requests_call('GET', url, params=params, req_auth=req_auth)
print(r.url)
print(r.text)
return self.parse_result(r)

def search_user(self, word, sort='date_desc', duration=None,
Expand Down Expand Up @@ -430,6 +428,50 @@ def ugoira_metadata(self, illust_id, req_auth=True):
r = self.no_auth_requests_call('GET', url, params=params, req_auth=req_auth)
return self.parse_result(r)

# 用户小说列表
def user_novels(self, user_id, filter='for_ios', offset=None, req_auth=True):
url = '%s/v1/user/novels' % self.hosts
params = {
'user_id': user_id,
'filter': filter,
}
if (offset):
params['offset'] = offset
r = self.no_auth_requests_call('GET', url, params=params, req_auth=req_auth)
return self.parse_result(r)

# 小说系列详情
def novel_series(self, series_id, filter='for_ios', last_order=None, req_auth=True):
url = '%s/v2/novel/series' % self.hosts
params = {
'series_id': series_id,
'filter': filter,
}
if (last_order):
params['last_order'] = last_order
r = self.no_auth_requests_call('GET', url, params=params, req_auth=req_auth)
return self.parse_result(r)

# 小说详情
def novel_detail(self, novel_id, req_auth=True):
url = '%s/v2/novel/detail' % self.hosts
params = {
'novel_id': novel_id,
}

r = self.no_auth_requests_call('GET', url, params=params, req_auth=req_auth)
return self.parse_result(r)

# 小说正文
def novel_text(self, novel_id, req_auth=True):
url = '%s/v1/novel/text' % self.hosts
params = {
'novel_id': novel_id,
}

r = self.no_auth_requests_call('GET', url, params=params, req_auth=req_auth)
return self.parse_result(r)

# 特辑详情 (无需登录,调用Web API)
def showcase_article(self, showcase_id):
url = 'https://www.pixiv.net/ajax/showcase/article'
Expand Down