PixivPy ![Build Status](https://github.com/upbit/pixivpy/workflows/pixivpy/badge.svg?branch=master) [![PyPI version](https://badge.fury.io/py/PixivPy.svg)](https://badge.fury.io/py/PixivPy)
======
> Due to [#158](https://github.com/upbit/pixivpy/issues) reason, password login no longer exist. Please use `api.auth(refresh_token=REFRESH_TOKEN)` instead
>
> To get `refresh_token`, see [@ZipFile Pixiv OAuth Flow](https://gist.github.com/ZipFile/c9ebedb224406f4f11845ab700124362) or [OAuth with Selenium/ChromeDriver]( https://gist.github.com/upbit/6edda27cb1644e94183291109b8a5fde)
_Pixiv API for Python (with Auth supported)_
* [2022/02/04] Remove Public-API support as it's deprecated by Pixiv, see [!201](https://github.com/upbit/pixivpy/commit/74e114e1cfe51e6c0e8c30c2024bcfcf0bae7ccc)
* [2021/11/23] Add `illust_new` for get latest works, see [!189](https://github.com/upbit/pixivpy/commit/024d4e7212582ca6f31ef5592b4b5b46cb351cbc)
* [2021/03/02] Add user `follow/unfollow`, add `novel` API, see [!161](https://github.com/upbit/pixivpy/pull/161/files) (thanks [@y-young](https://github.com/y-young), [@invobzvr](https://github.com/invobzvr))
* [2020/10/17] Use [cloudscraper](https://github.com/VeNoMouS/cloudscraper) to bypass Cloudflare, fixed issue #140 (thanks [@lllusion3469](https://github.com/lllusion3469))
* [2020/07/19] Add date specification for `search_illust()` (thanks [Xdynix](https://github.com/Xdynix))
* [2020/06/06] Add `AppPixivAPI().search_novel()` for novel search
* [2019/09/23] 增加大陆地区AppAPI的免翻墙访问支持, release v3.5 (See [example_bypass_sni.py](https://github.com/upbit/pixivpy/blob/master/example_bypass_sni.py), thanks [@Notsfsssf](https://github.com/Notsfsssf))
* [2019/09/03] Support new auth() check `X-Client-Time/X-Client-Hash` (thanks [DaRealFreak](https://github.com/DaRealFreak), [#83](https://github.com/upbit/pixivpy/issues/83))
* [2019/04/27] Support hosts proxy for AppAPI, which can use behind the Great Wall (See [example_api_proxy.py](https://github.com/upbit/pixivpy/blob/master/example_api_proxy.py))
* [2017/04/18] Fix encoder BUG for `illust_bookmark_add()/illust_bookmark_delete()` params (thanks [naplings](https://github.com/naplings))
* [2017/01/05] Add `PixivAPI().works()` liked API `illust_detail()` for App-API (thanks [Mapaler](https://github.com/Mapaler)), release v3.3
* [2016/12/17] Fixed encoding BUG for Public-API, see #26 (thanks [Xdynix](https://github.com/Xdynix))
* [2016/07/27] Now `AppPixivAPI()` can call **without auth** (thanks [zzycami](https://github.com/zzycami)), check [demo.py](https://github.com/upbit/pixivpy/blob/b83578e066ddcba86295676d931ff3313d138b22/demo.py#L268)
* [2016/07/20] New **App-API** (Experimental) for `PixivIOSApp/6.0.9`
* [2016/07/11] Add new [iOS 6.x API](https://github.com/upbit/pixivpy/wiki#6x-api) reference to Wiki
* [2015/12/02] Add write API for favorite an user / illust, release v3.1
* [2015/08/11] Remove SPAI and release v3.0 (pixivpy3) (Public-API with Search API)
* [2015/05/16] As Pixiv **deprecated** SAPI in recent days, push new Public-API **ranking_all**
* [2014/10/07] New framework, **SAPI / Public-API** supported (requests needed)
Use pip for installing:
~~~
pip install pixivpy --upgrade
~~~
Requirements: [requests](https://pypi.python.org/pypi/requests)
### [Mikubill/PixivPy-Async](https://github.com/Mikubill/pixivpy-async): Async Pixiv API for Python 3
性能对比(需要高性能访问场景,可以参考[这个脚本](https://github.com/Mikubill/pixivpy-async/blob/master/Perf.py))
@Mikubill: 简单进行了一下并发测试。(撞了N次Rate Limit...)
`sg -> Singapore, jp -> Japan, unit -> second`
| Method | Sync(10,sg) | Async(10,sg) | Sync(200,sg) | Async(200,sg) |
| ---- | ---- | ---- | ---- | ---- |
| illust_detail | 1.1209 | 0.8641 | 31.7041 | 2.4580 |
| illust_ranking | 1.0697 | 0.7936 | 28.4539 | 2.0693 |
| user_illusts | 0.8824 | 0.7505 | 28.3981 | 1.8199 |
| user_detail | 0.9628 | 0.7550 | 28.3055 | 1.7738 |
| ugoira_metadata | 0.8509 | 0.7459 | 29.5566 | 2.2331 |
| works | 1.1204 | 0.8912 | 32.2068 | 2.8513 |
| me_following_works | 1.1253 | 0.7845 | 39.3142 | 2.2785 |
| ranking | 1.0946 | 0.7944 | 39.6509 | 2.6548 |
| latest_works | 1.0483 | 0.8667 | 36.1992 | 2.5066 |
| Method | Sync(500,jp) | Async(500,jp) |
| ---- | ---- | ---- |
| illust_detail |6.2178 | 0.6400 |
| illust_ranking |6.4046 | 0.6119 |
| user_illusts |7.6093 | 1.5266 |
| user_detail |6.6759 | 0.5952 |
| ugoira_metadata |6.5155 | 0.7577 |
| works | 13.3074| 0.8619|
| me_following_works | 24.2693|2.0835|
| ranking | 21.4119|3.2805|
| latest_works | 17.3502|2.7029|
### Projects base on pixivpy
1. [Mikubill/PixivPy-Async](https://github.com/Mikubill/pixivpy-async): Async Pixiv API for Python 3
### Example:
~~~python
from pixivpy3 import *
api = AppPixivAPI()
# api.login("username", "password") # Not required
# get origin url
json_result = api.illust_detail(59580629)
illust = json_result.illust
print(">>> origin url: %s" % illust.image_urls['large'])
# get ranking: 1-30
# mode: [day, week, month, day_male, day_female, week_original, week_rookie, day_manga]
json_result = api.illust_ranking('day')
for illust in json_result.illusts:
print(" p1 [%s] %s" % (illust.title, illust.image_urls.medium))
# next page: 31-60
next_qs = api.parse_qs(json_result.next_url)
json_result = api.illust_ranking(**next_qs)
for illust in json_result.illusts:
print(" p2 [%s] %s" % (illust.title, illust.image_urls.medium))
~~~
### [Sniffer - App API](https://github.com/upbit/pixivpy/wiki#6x-api)
### [Sniffer - Public API (deprecated)](https://github.com/upbit/pixivpy/wiki/sniffer)
### [Using API proxy behind the Great Wall](https://github.com/upbit/pixivpy/blob/master/example_api_proxy.py#L33) See detail in [Issue#73](https://github.com/upbit/pixivpy/issues/73)
1. Upgrade pixivpy >= **v3.2.0**: `pip install pixivpy --upgrade`
2. Call `api.download()` like the below:
~~~python
aapi = AppPixivAPI()
json_result = aapi.illust_ranking()
for illust in json_result.illusts[:3]:
aapi.download(illust.image_urls.large)
~~~
### [Migrate pixivpy2 to pixivpy3](https://github.com/upbit/pixivpy/blob/master/demo.py#L15-L25)
1. Replace `api.papi.*` to `api.*`
2. Change deprecated SPAI call to Public-API call
~~~python
print(">>> new ranking_all(mode='daily', page=1, per_page=50)")
#rank_list = api.sapi.ranking("all", 'day', 1)
rank_list = api.ranking_all('daily', 1, 50)
print(rank_list)
# more fields about response: https://github.com/upbit/pixivpy/wiki/sniffer
ranking = rank_list.response[0]
for img in ranking.works:
#print img.work
print("[%s/%s(id=%s)] %s" % (img.work.user.name, img.work.title, img.work.id, img.work.image_urls.px_480mw))
~~~
### About
1. Blog: [Pixiv Public-API (OAuth)分析](http://blog.imaou.com/opensource/2014/10/09/pixiv_api_for_ios_update.html)
If you have any questions, please feel free to contact me: rmusique@gmail.com
Find Pixiv API in **Objective-C**? You might also like [**PixivAPI_iOS**](https://github.com/upbit/PixivAPI_iOS)
## API functions
### App-API (6.0 - app-api.pixiv.net)
~~~python
class AppPixivAPI(BasePixivAPI):
# 返回翻页用参数
def parse_qs(self, next_url):
# 用户详情
def user_detail(self, user_id):
# 用户作品列表
def user_illusts(self, user_id, type='illust'):
# 用户收藏作品列表
def user_bookmarks_illust(self, user_id, restrict='public'):
# 关注用户的新作
# restrict: [public, private]
def illust_follow(self, restrict='public'):
# 作品详情 (无需登录,同PAPI.works)
def illust_detail(self, illust_id):
# 相关作品列表
def illust_related(self, illust_id):
# 插画推荐 (Home - Main)
# content_type: [illust, manga]
def illust_recommended(self, content_type='illust'):
# 作品排行
# mode: [day, week, month, day_male, day_female, week_original, week_rookie, day_manga]
# date: '2016-08-01'
# mode(r18榜单需登录): [day_r18, day_male_r18, day_female_r18, week_r18, week_r18g]
def illust_ranking(self, mode='day', date=None, offset=None):
# 趋势标签 (Search - tags)
def trending_tags_illust(self):
# 搜索 (Search)
# search_target - 搜索类型
# partial_match_for_tags - 标签部分一致
# exact_match_for_tags - 标签完全一致
# title_and_caption - 标题说明文
# sort: [date_desc, date_asc, popular_desc] - popular_desc为会员的热门排序
# duration: [within_last_day, within_last_week, within_last_month]
# start_date, end_date: '2020-07-01'
def search_illust(self, word, search_target='partial_match_for_tags', sort='date_desc', duration=None):
# 搜索小说 (Search Novel)
# search_target - 搜索类型
# partial_match_for_tags - 标签部分一致
# exact_match_for_tags - 标签完全一致
# text - 正文
# keyword - 关键词
# sort: [date_desc, date_asc]
# start_date/end_date: 2020-06-01 (最长1年)
def search_novel(self, word, search_target='partial_match_for_tags', sort='date_desc', start_date=None, end_date=None):
# 用户搜索
def search_user(self, word, sort='date_desc', duration=None):
# 作品收藏详情
def illust_bookmark_detail(self, illust_id):
# 新增收藏
def illust_bookmark_add(self, illust_id, restrict='public', tags=None):
# 删除收藏
def illust_bookmark_delete(self, illust_id):
# 关注用户
def user_follow_add(self, user_id, restrict='public'):
# 取消关注用户
def user_follow_delete(self, user_id):
# 用户收藏标签列表
def user_bookmark_tags_illust(self, restrict='public', offset=None):
# Following用户列表
def user_following(self, user_id, restrict='public', offset=None):
# Followers用户列表
def user_follower(self, user_id, filter='for_ios', offset=None):
# 好P友
def user_mypixiv(self, user_id, offset=None):
# 黑名单用户
def user_list(self, user_id, filter='for_ios', offset=None):
# 获取ugoira信息
def ugoira_metadata(self, illust_id):
# 用户小说列表
def user_novels(self, user_id, filter='for_ios', offset=None):
# 小说系列详情
def novel_series(self, series_id, filter='for_ios', last_order=None):
# 小说详情
def novel_detail(self, novel_id):
# 小说正文
def novel_text(self, novel_id):
# 大家的新作 [illust, manga]
def illust_new(self, content_type="illust", filter='for_ios', max_illust_id=None):
~~~
[Usage](https://github.com/upbit/pixivpy/blob/master/demo.py#L42):
~~~python
aapi = AppPixivAPI()
# 作品推荐
json_result = aapi.illust_recommended()
print(json_result)
illust = json_result.illusts[0]
print(">>> %s, origin url: %s" % (illust.title, illust.image_urls['large']))
# 作品相关推荐
json_result = aapi.illust_related(57065990)
print(json_result)
illust = json_result.illusts[0]
print(">>> %s, origin url: %s" % (illust.title, illust.image_urls['large']))
# 作品相关推荐-下一页 (.parse_qs(next_url) 用法)
next_qs = aapi.parse_qs(json_result.next_url)
json_result = aapi.illust_related(**next_qs)
print(json_result)
illust = json_result.illusts[0]
print(">>> %s, origin url: %s" % (illust.title, illust.image_urls['large']))
# 用户详情
json_result = aapi.user_detail(660788)
print(json_result)
user = json_result.user
print("%s(@%s) region=%s" % (user.name, user.account, json_result.profile.region))
# 用户作品列表
json_result = aapi.user_illusts(660788)
print(json_result)
illust = json_result.illusts[0]
print(">>> %s, origin url: %s" % (illust.title, illust.image_urls['large']))
# 用户收藏列表
json_result = aapi.user_bookmarks_illust(2088434)
print(json_result)
illust = json_result.illusts[0]
print(">>> %s, origin url: %s" % (illust.title, illust.image_urls['large']))
# 2016-07-15 日的过去一周排行
json_result = aapi.illust_ranking('week', date='2016-07-15')
print(json_result)
illust = json_result.illusts[0]
print(">>> %s, origin url: %s" % (illust.title, illust.image_urls['large']))
# 关注用户的新作 (需要login)
json_result = aapi.illust_follow(req_auth=True)
print(json_result)
illust = json_result.illusts[0]
print(">>> %s, origin url: %s" % (illust.title, illust.image_urls['large']))
# 标签 "水着" 搜索
json_result = aapi.search_illust('水着', search_target='partial_match_for_tags')
print(json_result)
illust = json_result.illusts[0]
print(">>> %s, origin url: %s" % (illust.title, illust.image_urls['large']))
# 用户 "gomzi" 搜索
json_result = aapi.search_user("gomzi")
print(json_result)
illust = json_result.user_previews[0].illusts[0]
print(">>> %s, origin url: %s" % (illust.title, illust.image_urls['large']))
~~~
## Make a release
> Bump version in `pixivpy3/__init__.py`, rebuild dist/*
```bash
python3 setup.py sdist bdist_wheel
python2 setup.py bdist_wheel
twine upload dist/*
```
## License
Feel free to use, reuse and abuse the code in this project.
Raw data
{
"_id": null,
"home_page": "https://github.com/upbit/pixivpy",
"name": "PixivPy",
"maintainer": "",
"docs_url": "https://pythonhosted.org/PixivPy/",
"requires_python": "",
"maintainer_email": "",
"keywords": "pixiv,api,pixivpy",
"author": "upbit",
"author_email": "rmusique@gmail.com",
"download_url": "https://files.pythonhosted.org/packages/53/cb/8bb8eb5e6423d74f0a6dbbbd2bbdc534f858e54fdb2916ef37a1d3e1b869/PixivPy-3.7.0.tar.gz",
"platform": "",
"description": "PixivPy ![Build Status](https://github.com/upbit/pixivpy/workflows/pixivpy/badge.svg?branch=master) [![PyPI version](https://badge.fury.io/py/PixivPy.svg)](https://badge.fury.io/py/PixivPy)\n======\n\n> Due to [#158](https://github.com/upbit/pixivpy/issues) reason, password login no longer exist. Please use `api.auth(refresh_token=REFRESH_TOKEN)` instead\n>\n> To get `refresh_token`, see [@ZipFile Pixiv OAuth Flow](https://gist.github.com/ZipFile/c9ebedb224406f4f11845ab700124362) or [OAuth with Selenium/ChromeDriver]( https://gist.github.com/upbit/6edda27cb1644e94183291109b8a5fde)\n\n_Pixiv API for Python (with Auth supported)_\n\n* [2022/02/04] Remove Public-API support as it's deprecated by Pixiv, see [!201](https://github.com/upbit/pixivpy/commit/74e114e1cfe51e6c0e8c30c2024bcfcf0bae7ccc)\n* [2021/11/23] Add `illust_new` for get latest works, see [!189](https://github.com/upbit/pixivpy/commit/024d4e7212582ca6f31ef5592b4b5b46cb351cbc)\n* [2021/03/02] Add user `follow/unfollow`, add `novel` API, see [!161](https://github.com/upbit/pixivpy/pull/161/files) (thanks [@y-young](https://github.com/y-young), [@invobzvr](https://github.com/invobzvr))\n* [2020/10/17] Use [cloudscraper](https://github.com/VeNoMouS/cloudscraper) to bypass Cloudflare, fixed issue #140 (thanks [@lllusion3469](https://github.com/lllusion3469))\n* [2020/07/19] Add date specification for `search_illust()` (thanks [Xdynix](https://github.com/Xdynix))\n* [2020/06/06] Add `AppPixivAPI().search_novel()` for novel search\n* [2019/09/23] \u589e\u52a0\u5927\u9646\u5730\u533aAppAPI\u7684\u514d\u7ffb\u5899\u8bbf\u95ee\u652f\u6301, release v3.5 (See [example_bypass_sni.py](https://github.com/upbit/pixivpy/blob/master/example_bypass_sni.py), thanks [@Notsfsssf](https://github.com/Notsfsssf))\n* [2019/09/03] Support new auth() check `X-Client-Time/X-Client-Hash` (thanks [DaRealFreak](https://github.com/DaRealFreak), [#83](https://github.com/upbit/pixivpy/issues/83))\n* [2019/04/27] Support hosts proxy for AppAPI, which can use behind the Great Wall (See [example_api_proxy.py](https://github.com/upbit/pixivpy/blob/master/example_api_proxy.py))\n* [2017/04/18] Fix encoder BUG for `illust_bookmark_add()/illust_bookmark_delete()` params (thanks [naplings](https://github.com/naplings))\n* [2017/01/05] Add `PixivAPI().works()` liked API `illust_detail()` for App-API (thanks [Mapaler](https://github.com/Mapaler)), release v3.3\n* [2016/12/17] Fixed encoding BUG for Public-API, see #26 (thanks [Xdynix](https://github.com/Xdynix))\n* [2016/07/27] Now `AppPixivAPI()` can call **without auth** (thanks [zzycami](https://github.com/zzycami)), check [demo.py](https://github.com/upbit/pixivpy/blob/b83578e066ddcba86295676d931ff3313d138b22/demo.py#L268)\n* [2016/07/20] New **App-API** (Experimental) for `PixivIOSApp/6.0.9`\n* [2016/07/11] Add new [iOS 6.x API](https://github.com/upbit/pixivpy/wiki#6x-api) reference to Wiki\n* [2015/12/02] Add write API for favorite an user / illust, release v3.1\n* [2015/08/11] Remove SPAI and release v3.0 (pixivpy3) (Public-API with Search API)\n* [2015/05/16] As Pixiv **deprecated** SAPI in recent days, push new Public-API **ranking_all**\n* [2014/10/07] New framework, **SAPI / Public-API** supported (requests needed)\n\nUse pip for installing:\n\n~~~\npip install pixivpy --upgrade\n~~~\n\nRequirements: [requests](https://pypi.python.org/pypi/requests)\n\n### [Mikubill/PixivPy-Async](https://github.com/Mikubill/pixivpy-async): Async Pixiv API for Python 3\n\n\u6027\u80fd\u5bf9\u6bd4\uff08\u9700\u8981\u9ad8\u6027\u80fd\u8bbf\u95ee\u573a\u666f\uff0c\u53ef\u4ee5\u53c2\u8003[\u8fd9\u4e2a\u811a\u672c](https://github.com/Mikubill/pixivpy-async/blob/master/Perf.py)\uff09\n\n@Mikubill: \u7b80\u5355\u8fdb\u884c\u4e86\u4e00\u4e0b\u5e76\u53d1\u6d4b\u8bd5\u3002\uff08\u649e\u4e86N\u6b21Rate Limit...)\n\n`sg -> Singapore, jp -> Japan, unit -> second`\n\n| Method | Sync(10,sg) | Async(10,sg) | Sync(200,sg) | Async(200,sg) |\n| ---- | ---- | ---- | ---- | ---- |\n| illust_detail | 1.1209 | 0.8641 | 31.7041 | 2.4580 |\n| illust_ranking | 1.0697 | 0.7936 | 28.4539 | 2.0693 |\n| user_illusts | 0.8824 | 0.7505 | 28.3981 | 1.8199 |\n| user_detail | 0.9628 | 0.7550 | 28.3055 | 1.7738 |\n| ugoira_metadata | 0.8509 | 0.7459 | 29.5566 | 2.2331 |\n| works | 1.1204 | 0.8912 | 32.2068 | 2.8513 |\n| me_following_works | 1.1253 | 0.7845 | 39.3142 | 2.2785 |\n| ranking | 1.0946 | 0.7944 | 39.6509 | 2.6548 |\n| latest_works | 1.0483 | 0.8667 | 36.1992 | 2.5066 |\n\n\n| Method | Sync(500,jp) | Async(500,jp) |\n| ---- | ---- | ---- |\n| illust_detail |6.2178 | 0.6400 |\n| illust_ranking |6.4046 | 0.6119 |\n| user_illusts |7.6093 | 1.5266 |\n| user_detail |6.6759 | 0.5952 |\n| ugoira_metadata |6.5155 | 0.7577 |\n| works | 13.3074| 0.8619|\n| me_following_works | 24.2693|2.0835|\n| ranking | 21.4119|3.2805|\n| latest_works | 17.3502|2.7029|\n\n### Projects base on pixivpy\n\n1. [Mikubill/PixivPy-Async](https://github.com/Mikubill/pixivpy-async): Async Pixiv API for Python 3\n\n### Example:\n\n~~~python\nfrom pixivpy3 import *\n\napi = AppPixivAPI()\n# api.login(\"username\", \"password\") # Not required\n\n# get origin url\njson_result = api.illust_detail(59580629)\nillust = json_result.illust\nprint(\">>> origin url: %s\" % illust.image_urls['large'])\n\n# get ranking: 1-30\n# mode: [day, week, month, day_male, day_female, week_original, week_rookie, day_manga]\njson_result = api.illust_ranking('day')\nfor illust in json_result.illusts:\n print(\" p1 [%s] %s\" % (illust.title, illust.image_urls.medium))\n\n# next page: 31-60\nnext_qs = api.parse_qs(json_result.next_url)\njson_result = api.illust_ranking(**next_qs)\nfor illust in json_result.illusts:\n print(\" p2 [%s] %s\" % (illust.title, illust.image_urls.medium))\n~~~\n\n### [Sniffer - App API](https://github.com/upbit/pixivpy/wiki#6x-api)\n### [Sniffer - Public API (deprecated)](https://github.com/upbit/pixivpy/wiki/sniffer)\n\n\n### [Using API proxy behind the Great Wall](https://github.com/upbit/pixivpy/blob/master/example_api_proxy.py#L33) See detail in [Issue#73](https://github.com/upbit/pixivpy/issues/73)\n\n1. Upgrade pixivpy >= **v3.2.0**: `pip install pixivpy --upgrade`\n2. Call `api.download()` like the below:\n\n~~~python\naapi = AppPixivAPI()\njson_result = aapi.illust_ranking()\nfor illust in json_result.illusts[:3]:\n aapi.download(illust.image_urls.large)\n~~~\n\n### [Migrate pixivpy2 to pixivpy3](https://github.com/upbit/pixivpy/blob/master/demo.py#L15-L25)\n\n1. Replace `api.papi.*` to `api.*`\n2. Change deprecated SPAI call to Public-API call\n\n~~~python\nprint(\">>> new ranking_all(mode='daily', page=1, per_page=50)\")\n#rank_list = api.sapi.ranking(\"all\", 'day', 1)\nrank_list = api.ranking_all('daily', 1, 50)\nprint(rank_list)\n\n# more fields about response: https://github.com/upbit/pixivpy/wiki/sniffer\nranking = rank_list.response[0]\nfor img in ranking.works:\n\t#print img.work\n\tprint(\"[%s/%s(id=%s)] %s\" % (img.work.user.name, img.work.title, img.work.id, img.work.image_urls.px_480mw))\n~~~\n\n### About\n\n1. Blog: [Pixiv Public-API (OAuth)\u5206\u6790](http://blog.imaou.com/opensource/2014/10/09/pixiv_api_for_ios_update.html)\n\nIf you have any questions, please feel free to contact me: rmusique@gmail.com\n\nFind Pixiv API in **Objective-C**? You might also like [**PixivAPI_iOS**](https://github.com/upbit/PixivAPI_iOS)\n\n## API functions\n\n### App-API (6.0 - app-api.pixiv.net)\n\n~~~python\nclass AppPixivAPI(BasePixivAPI):\n\n # \u8fd4\u56de\u7ffb\u9875\u7528\u53c2\u6570\n def parse_qs(self, next_url):\n\n # \u7528\u6237\u8be6\u60c5 \n def user_detail(self, user_id):\n\n # \u7528\u6237\u4f5c\u54c1\u5217\u8868 \n def user_illusts(self, user_id, type='illust'):\n\n # \u7528\u6237\u6536\u85cf\u4f5c\u54c1\u5217\u8868 \n def user_bookmarks_illust(self, user_id, restrict='public'):\n\n # \u5173\u6ce8\u7528\u6237\u7684\u65b0\u4f5c\n # restrict: [public, private]\n def illust_follow(self, restrict='public'):\n\n # \u4f5c\u54c1\u8be6\u60c5 (\u65e0\u9700\u767b\u5f55\uff0c\u540cPAPI.works)\n def illust_detail(self, illust_id):\n\n # \u76f8\u5173\u4f5c\u54c1\u5217\u8868 \n def illust_related(self, illust_id):\n\n # \u63d2\u753b\u63a8\u8350 (Home - Main) \n # content_type: [illust, manga]\n def illust_recommended(self, content_type='illust'):\n\n # \u4f5c\u54c1\u6392\u884c\n # mode: [day, week, month, day_male, day_female, week_original, week_rookie, day_manga]\n # date: '2016-08-01'\n # mode(r18\u699c\u5355\u9700\u767b\u5f55): [day_r18, day_male_r18, day_female_r18, week_r18, week_r18g]\n def illust_ranking(self, mode='day', date=None, offset=None):\n\n # \u8d8b\u52bf\u6807\u7b7e (Search - tags) \n def trending_tags_illust(self):\n\n # \u641c\u7d22 (Search) \n # search_target - \u641c\u7d22\u7c7b\u578b\n # partial_match_for_tags - \u6807\u7b7e\u90e8\u5206\u4e00\u81f4\n # exact_match_for_tags - \u6807\u7b7e\u5b8c\u5168\u4e00\u81f4\n # title_and_caption - \u6807\u9898\u8bf4\u660e\u6587\n # sort: [date_desc, date_asc, popular_desc] - popular_desc\u4e3a\u4f1a\u5458\u7684\u70ed\u95e8\u6392\u5e8f\n # duration: [within_last_day, within_last_week, within_last_month]\n # start_date, end_date: '2020-07-01'\n def search_illust(self, word, search_target='partial_match_for_tags', sort='date_desc', duration=None):\n\n # \u641c\u7d22\u5c0f\u8bf4 (Search Novel)\n # search_target - \u641c\u7d22\u7c7b\u578b\n # partial_match_for_tags - \u6807\u7b7e\u90e8\u5206\u4e00\u81f4\n # exact_match_for_tags - \u6807\u7b7e\u5b8c\u5168\u4e00\u81f4\n # text - \u6b63\u6587\n # keyword - \u5173\u952e\u8bcd\n # sort: [date_desc, date_asc]\n # start_date/end_date: 2020-06-01 (\u6700\u957f1\u5e74)\n def search_novel(self, word, search_target='partial_match_for_tags', sort='date_desc', start_date=None, end_date=None):\n\n # \u7528\u6237\u641c\u7d22\n def search_user(self, word, sort='date_desc', duration=None):\n\n # \u4f5c\u54c1\u6536\u85cf\u8be6\u60c5 \n def illust_bookmark_detail(self, illust_id):\n\n # \u65b0\u589e\u6536\u85cf\n def illust_bookmark_add(self, illust_id, restrict='public', tags=None):\n\n # \u5220\u9664\u6536\u85cf\n def illust_bookmark_delete(self, illust_id):\n\n # \u5173\u6ce8\u7528\u6237\n def user_follow_add(self, user_id, restrict='public'):\n\n # \u53d6\u6d88\u5173\u6ce8\u7528\u6237\n def user_follow_delete(self, user_id):\n\n # \u7528\u6237\u6536\u85cf\u6807\u7b7e\u5217\u8868\n def user_bookmark_tags_illust(self, restrict='public', offset=None):\n\n # Following\u7528\u6237\u5217\u8868 \n def user_following(self, user_id, restrict='public', offset=None):\n\n # Followers\u7528\u6237\u5217\u8868 \n def user_follower(self, user_id, filter='for_ios', offset=None):\n\n # \u597dP\u53cb \n def user_mypixiv(self, user_id, offset=None):\n\n # \u9ed1\u540d\u5355\u7528\u6237 \n def user_list(self, user_id, filter='for_ios', offset=None):\n\n # \u83b7\u53d6ugoira\u4fe1\u606f\n def ugoira_metadata(self, illust_id):\n\n # \u7528\u6237\u5c0f\u8bf4\u5217\u8868\n def user_novels(self, user_id, filter='for_ios', offset=None):\n\n # \u5c0f\u8bf4\u7cfb\u5217\u8be6\u60c5\n def novel_series(self, series_id, filter='for_ios', last_order=None):\n\n # \u5c0f\u8bf4\u8be6\u60c5\n def novel_detail(self, novel_id):\n\n # \u5c0f\u8bf4\u6b63\u6587\n def novel_text(self, novel_id):\n\n # \u5927\u5bb6\u7684\u65b0\u4f5c [illust, manga]\n def illust_new(self, content_type=\"illust\", filter='for_ios', max_illust_id=None):\n~~~\n\n[Usage](https://github.com/upbit/pixivpy/blob/master/demo.py#L42):\n\n~~~python\naapi = AppPixivAPI()\n\n# \u4f5c\u54c1\u63a8\u8350\njson_result = aapi.illust_recommended()\nprint(json_result)\nillust = json_result.illusts[0]\nprint(\">>> %s, origin url: %s\" % (illust.title, illust.image_urls['large']))\n\n# \u4f5c\u54c1\u76f8\u5173\u63a8\u8350\njson_result = aapi.illust_related(57065990)\nprint(json_result)\nillust = json_result.illusts[0]\nprint(\">>> %s, origin url: %s\" % (illust.title, illust.image_urls['large']))\n\n# \u4f5c\u54c1\u76f8\u5173\u63a8\u8350-\u4e0b\u4e00\u9875 (.parse_qs(next_url) \u7528\u6cd5)\nnext_qs = aapi.parse_qs(json_result.next_url)\njson_result = aapi.illust_related(**next_qs)\nprint(json_result)\nillust = json_result.illusts[0]\nprint(\">>> %s, origin url: %s\" % (illust.title, illust.image_urls['large']))\n\n# \u7528\u6237\u8be6\u60c5\njson_result = aapi.user_detail(660788)\nprint(json_result)\nuser = json_result.user\nprint(\"%s(@%s) region=%s\" % (user.name, user.account, json_result.profile.region))\n\n# \u7528\u6237\u4f5c\u54c1\u5217\u8868\njson_result = aapi.user_illusts(660788)\nprint(json_result)\nillust = json_result.illusts[0]\nprint(\">>> %s, origin url: %s\" % (illust.title, illust.image_urls['large']))\n\n# \u7528\u6237\u6536\u85cf\u5217\u8868\njson_result = aapi.user_bookmarks_illust(2088434)\nprint(json_result)\nillust = json_result.illusts[0]\nprint(\">>> %s, origin url: %s\" % (illust.title, illust.image_urls['large']))\n\n# 2016-07-15 \u65e5\u7684\u8fc7\u53bb\u4e00\u5468\u6392\u884c\njson_result = aapi.illust_ranking('week', date='2016-07-15')\nprint(json_result)\nillust = json_result.illusts[0]\nprint(\">>> %s, origin url: %s\" % (illust.title, illust.image_urls['large']))\n\n# \u5173\u6ce8\u7528\u6237\u7684\u65b0\u4f5c (\u9700\u8981login)\njson_result = aapi.illust_follow(req_auth=True)\nprint(json_result)\nillust = json_result.illusts[0]\nprint(\">>> %s, origin url: %s\" % (illust.title, illust.image_urls['large']))\n\n# \u6807\u7b7e \"\u6c34\u7740\" \u641c\u7d22\njson_result = aapi.search_illust('\u6c34\u7740', search_target='partial_match_for_tags')\nprint(json_result)\nillust = json_result.illusts[0]\nprint(\">>> %s, origin url: %s\" % (illust.title, illust.image_urls['large']))\n\n# \u7528\u6237 \"gomzi\" \u641c\u7d22\njson_result = aapi.search_user(\"gomzi\")\nprint(json_result)\nillust = json_result.user_previews[0].illusts[0]\nprint(\">>> %s, origin url: %s\" % (illust.title, illust.image_urls['large']))\n~~~\n\n## Make a release\n\n> Bump version in `pixivpy3/__init__.py`, rebuild dist/*\n\n```bash\npython3 setup.py sdist bdist_wheel\npython2 setup.py bdist_wheel\ntwine upload dist/*\n```\n\n## License\n\nFeel free to use, reuse and abuse the code in this project.\n\n\n",
"bugtrack_url": null,
"license": "",
"summary": "Pixiv API for Python (with 6.x AppAPI supported)",
"version": "3.7.0",
"split_keywords": [
"pixiv",
"api",
"pixivpy"
],
"urls": [
{
"comment_text": "",
"digests": {
"md5": "778b49c4626fd4dffcb5bf25755fe689",
"sha256": "e3ed57dd1c8faa14201645d516a7b988a033033fc673dce6eca25d048960647d"
},
"downloads": -1,
"filename": "PixivPy-3.7.0-py2-none-any.whl",
"has_sig": false,
"md5_digest": "778b49c4626fd4dffcb5bf25755fe689",
"packagetype": "bdist_wheel",
"python_version": "py2",
"requires_python": null,
"size": 17001,
"upload_time": "2022-02-04T02:51:12",
"upload_time_iso_8601": "2022-02-04T02:51:12.849749Z",
"url": "https://files.pythonhosted.org/packages/47/af/5ef364010d5cb6295a65ace7af2a80577bc088c2190e0d51ad61ed34507e/PixivPy-3.7.0-py2-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"md5": "b04f5882aca1ace3ebba0d12a7d24f4a",
"sha256": "93d5cb51ca8cf769e5155aecdf96df58b5a0f26ca438bbe09478619e73cafb9e"
},
"downloads": -1,
"filename": "PixivPy-3.7.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "b04f5882aca1ace3ebba0d12a7d24f4a",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": null,
"size": 17001,
"upload_time": "2022-02-04T02:51:14",
"upload_time_iso_8601": "2022-02-04T02:51:14.491558Z",
"url": "https://files.pythonhosted.org/packages/b3/4f/de61f64db66ddba64c8a7a3deb1179097392f5f9fd189a34087df000e6c0/PixivPy-3.7.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"md5": "ce31f22ed8ca2a3a74d00bf55e2890fe",
"sha256": "f31833b3d012473ca18f4aac6ab4b9ed77900cac63be7a908df9b25bd8e795b4"
},
"downloads": -1,
"filename": "PixivPy-3.7.0.tar.gz",
"has_sig": false,
"md5_digest": "ce31f22ed8ca2a3a74d00bf55e2890fe",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 12630,
"upload_time": "2022-02-04T02:51:15",
"upload_time_iso_8601": "2022-02-04T02:51:15.932896Z",
"url": "https://files.pythonhosted.org/packages/53/cb/8bb8eb5e6423d74f0a6dbbbd2bbdc534f858e54fdb2916ef37a1d3e1b869/PixivPy-3.7.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2022-02-04 02:51:15",
"github": true,
"gitlab": false,
"bitbucket": false,
"github_user": "upbit",
"github_project": "pixivpy",
"travis_ci": true,
"coveralls": false,
"github_actions": true,
"lcname": "pixivpy"
}