async-pixiv


Nameasync-pixiv JSON
Version 0.3.10 PyPI version JSON
download
home_pagehttps://github.com/ArkoClub/async-pixiv
SummaryAsync Pixiv API for Python
upload_time2024-01-28 11:45:32
maintainer
docs_urlNone
author
requires_python<4.0,>=3.8
licenseMIT
keywords pixiv async pixiv-api
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # Async-Pixiv

[![Python 3.8](https://img.shields.io/badge/Python-3.8_|_3.9_|_3.10-blue?style=flat-square&logo=python&logoColor=white)](https://www.python.org/downloads/release/python-370/)
[![GitHub file size in bytes](https://img.shields.io/github/languages/code-size/ArkoClub/async-pixiv?label=Size&logo=hack-the-box&logoColor=white&style=flat-square)](https://github.com/ArkoClub/async-pixiv)
[![PyPI](https://img.shields.io/pypi/v/async-pixiv?color=%233775A9&label=PyPI&logo=pypi&logoColor=white&style=flat-square)](https://pypi.org/project/async-pixivr/)
[![License](https://img.shields.io/github/license/ArkoClub/async-pixiv?label=License&style=flat-square&logo=data:image/svg+xml;base64,PHN2ZyB0PSIxNjUxMjEyODQ2ODY0IiBjbGFzcz0iaWNvbiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHAtaWQ9IjE1MDAiIHdpZHRoPSIzMDAiIGhlaWdodD0iMzAwIj48cGF0aCBkPSJNOTQ3LjIgOTIxLjZsLTg3MC40IDBjLTQyLjM0MjQgMC03Ni44LTM0LjQ1NzYtNzYuOC03Ni44bDAtNjY1LjZjMC00Mi4zNDI0IDM0LjQ1NzYtNzYuOCA3Ni44LTc2LjhsODcwLjQgMGM0Mi4zNDI0IDAgNzYuOCAzNC40NTc2IDc2LjggNzYuOGwwIDY2NS42YzAgNDIuMzQyNC0zNC40NTc2IDc2LjgtNzYuOCA3Ni44ek03Ni44IDE1My42Yy0xNC4xMzEyIDAtMjUuNiAxMS40Njg4LTI1LjYgMjUuNmwwIDY2NS42YzAgMTQuMTMxMiAxMS40Njg4IDI1LjYgMjUuNiAyNS42bDg3MC40IDBjMTQuMTMxMiAwIDI1LjYtMTEuNDY4OCAyNS42LTI1LjZsMC02NjUuNmMwLTE0LjEzMTItMTEuNDY4OC0yNS42LTI1LjYtMjUuNmwtODcwLjQgMHoiIHAtaWQ9IjE1MDEiIGZpbGw9IiNmZmZmZmYiPjwvcGF0aD48cGF0aCBkPSJNNDg2LjQgMzA3LjJsLTMwNy4yIDBjLTE0LjEzMTIgMC0yNS42LTExLjQ2ODgtMjUuNi0yNS42czExLjQ2ODgtMjUuNiAyNS42LTI1LjZsMzA3LjIgMGMxNC4xMzEyIDAgMjUuNiAxMS40Njg4IDI1LjYgMjUuNnMtMTEuNDY4OCAyNS42LTI1LjYgMjUuNnoiIHAtaWQ9IjE1MDIiIGZpbGw9IiNmZmZmZmYiPjwvcGF0aD48cGF0aCBkPSJNNDg2LjQgNDYwLjhsLTMwNy4yIDBjLTE0LjEzMTIgMC0yNS42LTExLjQ2ODgtMjUuNi0yNS42czExLjQ2ODgtMjUuNiAyNS42LTI1LjZsMzA3LjIgMGMxNC4xMzEyIDAgMjUuNiAxMS40Njg4IDI1LjYgMjUuNnMtMTEuNDY4OCAyNS42LTI1LjYgMjUuNnoiIHAtaWQ9IjE1MDMiIGZpbGw9IiNmZmZmZmYiPjwvcGF0aD48cGF0aCBkPSJNNDg2LjQgNTYzLjJsLTMwNy4yIDBjLTE0LjEzMTIgMC0yNS42LTExLjQ2ODgtMjUuNi0yNS42czExLjQ2ODgtMjUuNiAyNS42LTI1LjZsMzA3LjIgMGMxNC4xMzEyIDAgMjUuNiAxMS40Njg4IDI1LjYgMjUuNnMtMTEuNDY4OCAyNS42LTI1LjYgMjUuNnoiIHAtaWQ9IjE1MDQiIGZpbGw9IiNmZmZmZmYiPjwvcGF0aD48cGF0aCBkPSJNNDg2LjQgNjY1LjZsLTMwNy4yIDBjLTE0LjEzMTIgMC0yNS42LTExLjQ2ODgtMjUuNi0yNS42czExLjQ2ODgtMjUuNiAyNS42LTI1LjZsMzA3LjIgMGMxNC4xMzEyIDAgMjUuNiAxMS40Njg4IDI1LjYgMjUuNnMtMTEuNDY4OCAyNS42LTI1LjYgMjUuNnoiIHAtaWQ9IjE1MDUiIGZpbGw9IiNmZmZmZmYiPjwvcGF0aD48cGF0aCBkPSJNNDM1LjIgNzY4bC0yNTYgMGMtMTQuMTMxMiAwLTI1LjYtMTEuNDY4OC0yNS42LTI1LjZzMTEuNDY4OC0yNS42IDI1LjYtMjUuNmwyNTYgMGMxNC4xMzEyIDAgMjUuNiAxMS40Njg4IDI1LjYgMjUuNnMtMTEuNDY4OCAyNS42LTI1LjYgMjUuNnoiIHAtaWQ9IjE1MDYiIGZpbGw9IiNmZmZmZmYiPjwvcGF0aD48cGF0aCBkPSJNOTE4LjY4MTYgMzM1LjA1MjhsLTQxLjYyNTYtMzAuMjU5Mi0xNS45MjMyLTQ4Ljk0NzItNTEuNDU2IDAtNDEuNjI1Ni0zMC4yNTkyLTQxLjYyNTYgMzAuMjU5Mi01MS40NTYgMC0xNS45MjMyIDQ4Ljk0NzItNDEuNjI1NiAzMC4yNTkyIDE1LjkyMzIgNDguOTQ3Mi0xNS45MjMyIDQ4Ljk0NzIgNDEuNjI1NiAzMC4yNTkyIDYuNzU4NCAyMC43ODcyYy0wLjEwMjQgMC44MTkyLTAuMTAyNCAxLjU4NzItMC4xMDI0IDIuNDA2NGwwIDI1NmMwIDEwLjM0MjQgNi4yNDY0IDE5LjcxMiAxNS44MjA4IDIzLjY1NDRzMjAuNTgyNCAxLjc5MiAyNy45MDQtNS41Mjk2bDU4LjY3NTItNTguNjc1MiA1OC42NzUyIDU4LjY3NTJjNC45MTUyIDQuOTE1MiAxMS40MTc2IDcuNTI2NCAxOC4xMjQ4IDcuNDc1MiAzLjI3NjggMCA2LjYwNDgtMC42MTQ0IDkuNzc5Mi0xLjk0NTYgOS41NzQ0LTMuOTQyNCAxNS44MjA4LTEzLjMxMiAxNS44MjA4LTIzLjY1NDRsMC0yNTZjMC0wLjgxOTItMC4wNTEyLTEuNjM4NC0wLjEwMjQtMi40MDY0bDYuNzU4NC0yMC43ODcyIDQxLjYyNTYtMzAuMjU5Mi0xNS45MjMyLTQ4Ljk0NzIgMTUuOTIzMi00OC45NDcyek02NzcuNTI5NiAzNTQuNjExMmwyNC45ODU2LTE4LjE3NiA5LjU3NDQtMjkuMzg4OCAzMC45MjQ4IDAgMjQuOTg1Ni0xOC4xNzYgMjQuOTg1NiAxOC4xNzYgMzAuOTI0OCAwIDkuNTc0NCAyOS4zODg4IDI0Ljk4NTYgMTguMTc2LTkuNTc0NCAyOS4zODg4IDkuNTc0NCAyOS4zODg4LTI0Ljk4NTYgMTguMTc2LTkuNTc0NCAyOS4zODg4LTMwLjkyNDggMC0yNC45ODU2IDE4LjE3Ni0yNC45ODU2LTE4LjE3Ni0zMC45MjQ4IDAtOS41NzQ0LTI5LjM4ODgtMjQuOTg1Ni0xOC4xNzYgOS41NzQ0LTI5LjM4ODgtOS41NzQ0LTI5LjM4ODh6TTc4Ni4xMjQ4IDY0Ny40NzUyYy05Ljk4NC05Ljk4NC0yNi4yMTQ0LTkuOTg0LTM2LjE5ODQgMGwtMzMuMDc1MiAzMy4wNzUyIDAtMTY4LjQ0OCA5LjU3NDQgMCA0MS42MjU2IDMwLjI1OTIgNDEuNjI1Ni0zMC4yNTkyIDkuNTc0NCAwIDAgMTY4LjQ0OC0zMy4wNzUyLTMzLjA3NTJ6IiBwLWlkPSIxNTA3IiBmaWxsPSIjZmZmZmZmIj48L3BhdGg+PC9zdmc+)](./LICENSE)

[![PyPI - Downloads](https://img.shields.io/pypi/dm/async-pixiv?color=91A4ED&label=Downloads&logo=data%3Aimage%2Fsvg%2Bxml%3Bbase64%2CPHN2ZyB0PSIxNjUyMjYwMDAwMjU3IiBjbGFzcz0iaWNvbiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHAtaWQ9IjUxNjIiIHdpZHRoPSI1MDAiIGhlaWdodD0iNTAwIj48cGF0aCBkPSJNOTU3LjU0MzkzNyA5NjEuMTMxMTM3IDYyLjg2NTI4MSA5NjEuMTMxMTM3IDYyLjg2NTI4MSA2NTUuNTA5NDg1IDE4OC4yOTgwNjIgNjU1LjUwOTQ4NSAxODguMjk4MDYyIDg1OS4yNDI1ODYgODMyLjE2MDI3NSA4NTkuMjQyNTg2IDgzMi4xNjAyNzUgNjU1LjUwOTQ4NSA5NTcuNTQzOTM3IDY1NS41MDk0ODVaIiBwLWlkPSI1MTYzIiBmaWxsPSIjZmZmZmZmIj48L3BhdGg%2BPHBhdGggZD0iTTc1My4yNzg3MTcgMzYzLjI3ODgxNyA1MTAuMTgwMDUgNzkwLjc0MTQ0NSAyNjcuMDMzMjg3IDM2My4yNzg4MTdaIiBwLWlkPSI1MTY0IiBmaWxsPSIjZmZmZmZmIj48L3BhdGg%2BPHBhdGggZD0iTTQzNC44OTEzMiA2NC4zNTY3NWwxNTAuNTI4MzQyIDAgMCAzMDAuMjU5NTI4LTE1MC41MjgzNDIgMCAwLTMwMC4yNTk1MjhaIiBwLWlkPSI1MTY1IiBmaWxsPSIjZmZmZmZmIj48L3BhdGg%2BPC9zdmc%2B&style=flat-square)](https://pypi.org/project/async-pixiv/)
[![View](https://hits.sh/github.com/ArkoClub/async-pixiv.svg?color=7AA3CC&style=flat-square&label=View&logo=data:image/svg+xml;base64,PHN2ZyB0PSIxNjUyMjU5MTQ0MjAzIiBjbGFzcz0iaWNvbiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHAtaWQ9IjM0NjkiIHdpZHRoPSIzMDAiIGhlaWdodD0iMzAwIj48cGF0aCBkPSJNNTEyIDQxNmE5NiA5NiAwIDEgMCAwIDE5MiA5NiA5NiAwIDAgMCAwLTE5MnogbTUxMS45NTIgMTAyLjA2NGMtMC4wMTYtMC40NDgtMC4wNjQtMC44NjQtMC4wOTYtMS4yOTZhOC4xNiA4LjE2IDAgMCAwLTAuMDgtMC42NTZjMC0wLjMyLTAuMDY0LTAuNjI0LTAuMTI4LTAuOTI4LTAuMDMyLTAuMzY4LTAuMDY0LTAuNzM2LTAuMTI4LTEuMDg4LTAuMDMyLTAuMDQ4LTAuMDMyLTAuMDk2LTAuMDMyLTAuMTQ0YTM5LjQ4OCAzOS40ODggMCAwIDAtMTAuNzA0LTIxLjUzNmMtMzIuNjcyLTM5LjYxNi03MS41MzYtNzQuODgtMTExLjA0LTEwNy4wNzItODUuMDg4LTY5LjM5Mi0xODIuNDMyLTEyNy40MjQtMjg5Ljg1Ni0xNTAuOC02Mi4xMTItMTMuNTA0LTEyNC41NzYtMTQuMDY0LTE4Ny4wMDgtMi42NC01Ni43ODQgMTAuMzg0LTExMS41MDQgMzItMTYyLjcyIDU4Ljc4NC04MC4xNzYgNDEuOTItMTUzLjM5MiA5OS42OTYtMjE3LjE4NCAxNjQuNDgtMTEuODA4IDExLjk4NC0yMy41NTIgMjQuMjI0LTM0LjI4OCAzNy4yNDgtMTQuMjg4IDE3LjMyOC0xNC4yODggMzcuODcyIDAgNTUuMjE2IDMyLjY3MiAzOS42MTYgNzEuNTIgNzQuODQ4IDExMS4wNCAxMDcuMDU2IDg1LjEyIDY5LjM5MiAxODIuNDQ4IDEyNy40MDggMjg5Ljg4OCAxNTAuNzg0IDYyLjA5NiAxMy41MDQgMTI0LjYwOCAxNC4wOTYgMTg3LjAwOCAyLjY1NiA1Ni43NjgtMTAuNCAxMTEuNDg4LTMyIDE2Mi43MzYtNTguNzY4IDgwLjE3Ni00MS45MzYgMTUzLjM3Ni05OS42OTYgMjE3LjE4NC0xNjQuNDggMTEuNzkyLTEyIDIzLjUzNi0yNC4yMjQgMzQuMjg4LTM3LjI0OCA1LjcxMi01Ljg3MiA5LjQ1Ni0xMy40NCAxMC43MDQtMjEuNTY4bDAuMDMyLTAuMTI4YTEyLjU5MiAxMi41OTIgMCAwIDAgMC4xMjgtMS4wODhjMC4wNjQtMC4zMDQgMC4wOTYtMC42MjQgMC4xMjgtMC45MjhsMC4wOC0wLjY1NiAwLjA5Ni0xLjI4YzAuMDMyLTAuNjU2IDAuMDQ4LTEuMjk2IDAuMDQ4LTEuOTUybC0wLjA5Ni0xLjk2OHpNNTEyIDcwNGMtMTA2LjAzMiAwLTE5Mi04NS45NTItMTkyLTE5MnM4NS45NTItMTkyIDE5Mi0xOTIgMTkyIDg1Ljk2OCAxOTIgMTkyYzAgMTA2LjA0OC04NS45NjggMTkyLTE5MiAxOTJ6IiBwLWlkPSIzNDcwIiBmaWxsPSIjZmZmZmZmIj48L3BhdGg+PC9zdmc+)](https://hits.sh/github.com/ArkoClub/async-pixiv)

异步调用 Pixiv API

# Building...
此项目的开发者很忙,所以没啥时间修 bug ,写文档什么的

### 特点
1. 支持 API 请求速率限制([RateLimiter](https://aiolimiter.readthedocs.io/en/latest/))
2. 可使用账号和密码直接登录 Pixiv(注:可能会因为遇到 Cloudflare 验证而登录失败)
3. 自动将请求后的数据转为 Model ,再也不用以字典形式调用获取数据了(pydantic typed)
4. 支持多种代理模式(http/https/socks5)
5. 支持下载 gif 帧序列文件,并将其转为 gif 或 mp4 (需要 [ffmpeg](https://ffmpeg.org)) 
6. 。。。(想到再写)

## 安装

使用 `pip` (任选一行指令进行安装)

```bash
pip install --upgrade async-pixiv

# 安装额外依赖(用于提升数据解析速度)
pip install --upgrade async-pixiv[extra]

# 安装 playwright,使之可以使用账号密码登录 
pip install --upgrade async-pixiv[playwright]

# 安装全部额外依赖
pip install --upgrade async-pixiv[full]
```

使用 `poetry`

```bash
poetry add async-pixiv

# 安装额外依赖(用于提升数据解析速度)
poetry add async-pixiv[extra]

# 安装 playwright,使之可以使用账号密码登录 
poetry add async-pixiv[playwright]

# 安装全部额外依赖
poetry add async-pixiv[full]
```

## 使用

```python
from async_pixiv import PixivClient  # 导入

# 初始化 Client
client = PixivClient(
    max_rate=100,  # API 请求速率限制。默认 100 次
    rate_time_period=60,  # API 请求速率限制时间区间。默认 60 秒
    timeout=10,  # 默认超时秒数
    proxies=None,  # 代理配置
    trust_env=False,  # 是否从环境变量中获取代理配置
    retry=5,  # 默认请求重试次数
    retry_sleep=1,  # 默认重复请求间隔秒数
)


async def main():
    user = await client.login_with_token('TOKEN')  # 使用 token 登录 pixiv
    print(user.name)

    # 获取作品详情
    detail_result = await client.ILLUST.detail(91725675)
    illust = detail_result.illust
    print(
        f"链接:{illust.link}", 
        f"标题:{illust.title}", 
        f"作者:{illust.user.name}", 
        f"标签:#{' #'.join(map(str, illust.tags))}", 
        f"是否为 AI 作品:{'是' if illust.ai_type else '否'}",
        f"是否为 R18 作品:{'是' if await illust.is_r18() else '否'}",
        sep='\n'
    )
    file_data = illust.download() # 下载
    breakpoint()

    # 下载动图
    bytes_data = await client.ILLUST.download_ugoira(105369892, type='mp4')  # bytes
    gif_data = await client.ILLUST.download_ugoira(105369892, type='gif')
    breakpoint()

    # 小说
    novel_result = await client.NOVEL.detail(15739859)
    novel = novel_result.novel
    print(f"标题:{novel.title}", f"字数:{novel.text_length}", sep='\n')
    breakpoint()
    
    # 漫画
    # 下次再写

def __main__():
    import asyncio

    asyncio.run(main())


if __name__ == '__main__':
    __main__()

```

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/ArkoClub/async-pixiv",
    "name": "async-pixiv",
    "maintainer": "",
    "docs_url": null,
    "requires_python": "<4.0,>=3.8",
    "maintainer_email": "Karako <karakohear@gmail.com>",
    "keywords": "pixiv async pixiv-api",
    "author": "",
    "author_email": "Arko <arko.space.cc@gmail.com>",
    "download_url": "https://files.pythonhosted.org/packages/fb/d7/2addc87ebb95c62567c2294bb84f8fbf4894d7f53b38e3cbdba849c9822c/async_pixiv-0.3.10.tar.gz",
    "platform": null,
    "description": "# Async-Pixiv\n\n[![Python 3.8](https://img.shields.io/badge/Python-3.8_|_3.9_|_3.10-blue?style=flat-square&logo=python&logoColor=white)](https://www.python.org/downloads/release/python-370/)\n[![GitHub file size in bytes](https://img.shields.io/github/languages/code-size/ArkoClub/async-pixiv?label=Size&logo=hack-the-box&logoColor=white&style=flat-square)](https://github.com/ArkoClub/async-pixiv)\n[![PyPI](https://img.shields.io/pypi/v/async-pixiv?color=%233775A9&label=PyPI&logo=pypi&logoColor=white&style=flat-square)](https://pypi.org/project/async-pixivr/)\n[![License](https://img.shields.io/github/license/ArkoClub/async-pixiv?label=License&style=flat-square&logo=data:image/svg+xml;base64,PHN2ZyB0PSIxNjUxMjEyODQ2ODY0IiBjbGFzcz0iaWNvbiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHAtaWQ9IjE1MDAiIHdpZHRoPSIzMDAiIGhlaWdodD0iMzAwIj48cGF0aCBkPSJNOTQ3LjIgOTIxLjZsLTg3MC40IDBjLTQyLjM0MjQgMC03Ni44LTM0LjQ1NzYtNzYuOC03Ni44bDAtNjY1LjZjMC00Mi4zNDI0IDM0LjQ1NzYtNzYuOCA3Ni44LTc2LjhsODcwLjQgMGM0Mi4zNDI0IDAgNzYuOCAzNC40NTc2IDc2LjggNzYuOGwwIDY2NS42YzAgNDIuMzQyNC0zNC40NTc2IDc2LjgtNzYuOCA3Ni44ek03Ni44IDE1My42Yy0xNC4xMzEyIDAtMjUuNiAxMS40Njg4LTI1LjYgMjUuNmwwIDY2NS42YzAgMTQuMTMxMiAxMS40Njg4IDI1LjYgMjUuNiAyNS42bDg3MC40IDBjMTQuMTMxMiAwIDI1LjYtMTEuNDY4OCAyNS42LTI1LjZsMC02NjUuNmMwLTE0LjEzMTItMTEuNDY4OC0yNS42LTI1LjYtMjUuNmwtODcwLjQgMHoiIHAtaWQ9IjE1MDEiIGZpbGw9IiNmZmZmZmYiPjwvcGF0aD48cGF0aCBkPSJNNDg2LjQgMzA3LjJsLTMwNy4yIDBjLTE0LjEzMTIgMC0yNS42LTExLjQ2ODgtMjUuNi0yNS42czExLjQ2ODgtMjUuNiAyNS42LTI1LjZsMzA3LjIgMGMxNC4xMzEyIDAgMjUuNiAxMS40Njg4IDI1LjYgMjUuNnMtMTEuNDY4OCAyNS42LTI1LjYgMjUuNnoiIHAtaWQ9IjE1MDIiIGZpbGw9IiNmZmZmZmYiPjwvcGF0aD48cGF0aCBkPSJNNDg2LjQgNDYwLjhsLTMwNy4yIDBjLTE0LjEzMTIgMC0yNS42LTExLjQ2ODgtMjUuNi0yNS42czExLjQ2ODgtMjUuNiAyNS42LTI1LjZsMzA3LjIgMGMxNC4xMzEyIDAgMjUuNiAxMS40Njg4IDI1LjYgMjUuNnMtMTEuNDY4OCAyNS42LTI1LjYgMjUuNnoiIHAtaWQ9IjE1MDMiIGZpbGw9IiNmZmZmZmYiPjwvcGF0aD48cGF0aCBkPSJNNDg2LjQgNTYzLjJsLTMwNy4yIDBjLTE0LjEzMTIgMC0yNS42LTExLjQ2ODgtMjUuNi0yNS42czExLjQ2ODgtMjUuNiAyNS42LTI1LjZsMzA3LjIgMGMxNC4xMzEyIDAgMjUuNiAxMS40Njg4IDI1LjYgMjUuNnMtMTEuNDY4OCAyNS42LTI1LjYgMjUuNnoiIHAtaWQ9IjE1MDQiIGZpbGw9IiNmZmZmZmYiPjwvcGF0aD48cGF0aCBkPSJNNDg2LjQgNjY1LjZsLTMwNy4yIDBjLTE0LjEzMTIgMC0yNS42LTExLjQ2ODgtMjUuNi0yNS42czExLjQ2ODgtMjUuNiAyNS42LTI1LjZsMzA3LjIgMGMxNC4xMzEyIDAgMjUuNiAxMS40Njg4IDI1LjYgMjUuNnMtMTEuNDY4OCAyNS42LTI1LjYgMjUuNnoiIHAtaWQ9IjE1MDUiIGZpbGw9IiNmZmZmZmYiPjwvcGF0aD48cGF0aCBkPSJNNDM1LjIgNzY4bC0yNTYgMGMtMTQuMTMxMiAwLTI1LjYtMTEuNDY4OC0yNS42LTI1LjZzMTEuNDY4OC0yNS42IDI1LjYtMjUuNmwyNTYgMGMxNC4xMzEyIDAgMjUuNiAxMS40Njg4IDI1LjYgMjUuNnMtMTEuNDY4OCAyNS42LTI1LjYgMjUuNnoiIHAtaWQ9IjE1MDYiIGZpbGw9IiNmZmZmZmYiPjwvcGF0aD48cGF0aCBkPSJNOTE4LjY4MTYgMzM1LjA1MjhsLTQxLjYyNTYtMzAuMjU5Mi0xNS45MjMyLTQ4Ljk0NzItNTEuNDU2IDAtNDEuNjI1Ni0zMC4yNTkyLTQxLjYyNTYgMzAuMjU5Mi01MS40NTYgMC0xNS45MjMyIDQ4Ljk0NzItNDEuNjI1NiAzMC4yNTkyIDE1LjkyMzIgNDguOTQ3Mi0xNS45MjMyIDQ4Ljk0NzIgNDEuNjI1NiAzMC4yNTkyIDYuNzU4NCAyMC43ODcyYy0wLjEwMjQgMC44MTkyLTAuMTAyNCAxLjU4NzItMC4xMDI0IDIuNDA2NGwwIDI1NmMwIDEwLjM0MjQgNi4yNDY0IDE5LjcxMiAxNS44MjA4IDIzLjY1NDRzMjAuNTgyNCAxLjc5MiAyNy45MDQtNS41Mjk2bDU4LjY3NTItNTguNjc1MiA1OC42NzUyIDU4LjY3NTJjNC45MTUyIDQuOTE1MiAxMS40MTc2IDcuNTI2NCAxOC4xMjQ4IDcuNDc1MiAzLjI3NjggMCA2LjYwNDgtMC42MTQ0IDkuNzc5Mi0xLjk0NTYgOS41NzQ0LTMuOTQyNCAxNS44MjA4LTEzLjMxMiAxNS44MjA4LTIzLjY1NDRsMC0yNTZjMC0wLjgxOTItMC4wNTEyLTEuNjM4NC0wLjEwMjQtMi40MDY0bDYuNzU4NC0yMC43ODcyIDQxLjYyNTYtMzAuMjU5Mi0xNS45MjMyLTQ4Ljk0NzIgMTUuOTIzMi00OC45NDcyek02NzcuNTI5NiAzNTQuNjExMmwyNC45ODU2LTE4LjE3NiA5LjU3NDQtMjkuMzg4OCAzMC45MjQ4IDAgMjQuOTg1Ni0xOC4xNzYgMjQuOTg1NiAxOC4xNzYgMzAuOTI0OCAwIDkuNTc0NCAyOS4zODg4IDI0Ljk4NTYgMTguMTc2LTkuNTc0NCAyOS4zODg4IDkuNTc0NCAyOS4zODg4LTI0Ljk4NTYgMTguMTc2LTkuNTc0NCAyOS4zODg4LTMwLjkyNDggMC0yNC45ODU2IDE4LjE3Ni0yNC45ODU2LTE4LjE3Ni0zMC45MjQ4IDAtOS41NzQ0LTI5LjM4ODgtMjQuOTg1Ni0xOC4xNzYgOS41NzQ0LTI5LjM4ODgtOS41NzQ0LTI5LjM4ODh6TTc4Ni4xMjQ4IDY0Ny40NzUyYy05Ljk4NC05Ljk4NC0yNi4yMTQ0LTkuOTg0LTM2LjE5ODQgMGwtMzMuMDc1MiAzMy4wNzUyIDAtMTY4LjQ0OCA5LjU3NDQgMCA0MS42MjU2IDMwLjI1OTIgNDEuNjI1Ni0zMC4yNTkyIDkuNTc0NCAwIDAgMTY4LjQ0OC0zMy4wNzUyLTMzLjA3NTJ6IiBwLWlkPSIxNTA3IiBmaWxsPSIjZmZmZmZmIj48L3BhdGg+PC9zdmc+)](./LICENSE)\n\n[![PyPI - Downloads](https://img.shields.io/pypi/dm/async-pixiv?color=91A4ED&label=Downloads&logo=data%3Aimage%2Fsvg%2Bxml%3Bbase64%2CPHN2ZyB0PSIxNjUyMjYwMDAwMjU3IiBjbGFzcz0iaWNvbiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHAtaWQ9IjUxNjIiIHdpZHRoPSI1MDAiIGhlaWdodD0iNTAwIj48cGF0aCBkPSJNOTU3LjU0MzkzNyA5NjEuMTMxMTM3IDYyLjg2NTI4MSA5NjEuMTMxMTM3IDYyLjg2NTI4MSA2NTUuNTA5NDg1IDE4OC4yOTgwNjIgNjU1LjUwOTQ4NSAxODguMjk4MDYyIDg1OS4yNDI1ODYgODMyLjE2MDI3NSA4NTkuMjQyNTg2IDgzMi4xNjAyNzUgNjU1LjUwOTQ4NSA5NTcuNTQzOTM3IDY1NS41MDk0ODVaIiBwLWlkPSI1MTYzIiBmaWxsPSIjZmZmZmZmIj48L3BhdGg%2BPHBhdGggZD0iTTc1My4yNzg3MTcgMzYzLjI3ODgxNyA1MTAuMTgwMDUgNzkwLjc0MTQ0NSAyNjcuMDMzMjg3IDM2My4yNzg4MTdaIiBwLWlkPSI1MTY0IiBmaWxsPSIjZmZmZmZmIj48L3BhdGg%2BPHBhdGggZD0iTTQzNC44OTEzMiA2NC4zNTY3NWwxNTAuNTI4MzQyIDAgMCAzMDAuMjU5NTI4LTE1MC41MjgzNDIgMCAwLTMwMC4yNTk1MjhaIiBwLWlkPSI1MTY1IiBmaWxsPSIjZmZmZmZmIj48L3BhdGg%2BPC9zdmc%2B&style=flat-square)](https://pypi.org/project/async-pixiv/)\n[![View](https://hits.sh/github.com/ArkoClub/async-pixiv.svg?color=7AA3CC&style=flat-square&label=View&logo=data:image/svg+xml;base64,PHN2ZyB0PSIxNjUyMjU5MTQ0MjAzIiBjbGFzcz0iaWNvbiIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHAtaWQ9IjM0NjkiIHdpZHRoPSIzMDAiIGhlaWdodD0iMzAwIj48cGF0aCBkPSJNNTEyIDQxNmE5NiA5NiAwIDEgMCAwIDE5MiA5NiA5NiAwIDAgMCAwLTE5MnogbTUxMS45NTIgMTAyLjA2NGMtMC4wMTYtMC40NDgtMC4wNjQtMC44NjQtMC4wOTYtMS4yOTZhOC4xNiA4LjE2IDAgMCAwLTAuMDgtMC42NTZjMC0wLjMyLTAuMDY0LTAuNjI0LTAuMTI4LTAuOTI4LTAuMDMyLTAuMzY4LTAuMDY0LTAuNzM2LTAuMTI4LTEuMDg4LTAuMDMyLTAuMDQ4LTAuMDMyLTAuMDk2LTAuMDMyLTAuMTQ0YTM5LjQ4OCAzOS40ODggMCAwIDAtMTAuNzA0LTIxLjUzNmMtMzIuNjcyLTM5LjYxNi03MS41MzYtNzQuODgtMTExLjA0LTEwNy4wNzItODUuMDg4LTY5LjM5Mi0xODIuNDMyLTEyNy40MjQtMjg5Ljg1Ni0xNTAuOC02Mi4xMTItMTMuNTA0LTEyNC41NzYtMTQuMDY0LTE4Ny4wMDgtMi42NC01Ni43ODQgMTAuMzg0LTExMS41MDQgMzItMTYyLjcyIDU4Ljc4NC04MC4xNzYgNDEuOTItMTUzLjM5MiA5OS42OTYtMjE3LjE4NCAxNjQuNDgtMTEuODA4IDExLjk4NC0yMy41NTIgMjQuMjI0LTM0LjI4OCAzNy4yNDgtMTQuMjg4IDE3LjMyOC0xNC4yODggMzcuODcyIDAgNTUuMjE2IDMyLjY3MiAzOS42MTYgNzEuNTIgNzQuODQ4IDExMS4wNCAxMDcuMDU2IDg1LjEyIDY5LjM5MiAxODIuNDQ4IDEyNy40MDggMjg5Ljg4OCAxNTAuNzg0IDYyLjA5NiAxMy41MDQgMTI0LjYwOCAxNC4wOTYgMTg3LjAwOCAyLjY1NiA1Ni43NjgtMTAuNCAxMTEuNDg4LTMyIDE2Mi43MzYtNTguNzY4IDgwLjE3Ni00MS45MzYgMTUzLjM3Ni05OS42OTYgMjE3LjE4NC0xNjQuNDggMTEuNzkyLTEyIDIzLjUzNi0yNC4yMjQgMzQuMjg4LTM3LjI0OCA1LjcxMi01Ljg3MiA5LjQ1Ni0xMy40NCAxMC43MDQtMjEuNTY4bDAuMDMyLTAuMTI4YTEyLjU5MiAxMi41OTIgMCAwIDAgMC4xMjgtMS4wODhjMC4wNjQtMC4zMDQgMC4wOTYtMC42MjQgMC4xMjgtMC45MjhsMC4wOC0wLjY1NiAwLjA5Ni0xLjI4YzAuMDMyLTAuNjU2IDAuMDQ4LTEuMjk2IDAuMDQ4LTEuOTUybC0wLjA5Ni0xLjk2OHpNNTEyIDcwNGMtMTA2LjAzMiAwLTE5Mi04NS45NTItMTkyLTE5MnM4NS45NTItMTkyIDE5Mi0xOTIgMTkyIDg1Ljk2OCAxOTIgMTkyYzAgMTA2LjA0OC04NS45NjggMTkyLTE5MiAxOTJ6IiBwLWlkPSIzNDcwIiBmaWxsPSIjZmZmZmZmIj48L3BhdGg+PC9zdmc+)](https://hits.sh/github.com/ArkoClub/async-pixiv)\n\n\u5f02\u6b65\u8c03\u7528 Pixiv API\n\n# Building...\n\u6b64\u9879\u76ee\u7684\u5f00\u53d1\u8005\u5f88\u5fd9\uff0c\u6240\u4ee5\u6ca1\u5565\u65f6\u95f4\u4fee bug \uff0c\u5199\u6587\u6863\u4ec0\u4e48\u7684\n\n### \u7279\u70b9\n1. \u652f\u6301 API \u8bf7\u6c42\u901f\u7387\u9650\u5236\uff08[RateLimiter](https://aiolimiter.readthedocs.io/en/latest/)\uff09\n2. \u53ef\u4f7f\u7528\u8d26\u53f7\u548c\u5bc6\u7801\u76f4\u63a5\u767b\u5f55 Pixiv\uff08\u6ce8\uff1a\u53ef\u80fd\u4f1a\u56e0\u4e3a\u9047\u5230 Cloudflare \u9a8c\u8bc1\u800c\u767b\u5f55\u5931\u8d25\uff09\n3. \u81ea\u52a8\u5c06\u8bf7\u6c42\u540e\u7684\u6570\u636e\u8f6c\u4e3a Model \uff0c\u518d\u4e5f\u4e0d\u7528\u4ee5\u5b57\u5178\u5f62\u5f0f\u8c03\u7528\u83b7\u53d6\u6570\u636e\u4e86\uff08pydantic typed\uff09\n4. \u652f\u6301\u591a\u79cd\u4ee3\u7406\u6a21\u5f0f\uff08http/https/socks5\uff09\n5. \u652f\u6301\u4e0b\u8f7d gif \u5e27\u5e8f\u5217\u6587\u4ef6\uff0c\u5e76\u5c06\u5176\u8f6c\u4e3a gif \u6216 mp4 \uff08\u9700\u8981 [ffmpeg](https://ffmpeg.org)\uff09 \n6. \u3002\u3002\u3002\uff08\u60f3\u5230\u518d\u5199\uff09\n\n## \u5b89\u88c5\n\n\u4f7f\u7528 `pip` (\u4efb\u9009\u4e00\u884c\u6307\u4ee4\u8fdb\u884c\u5b89\u88c5)\n\n```bash\npip install --upgrade async-pixiv\n\n# \u5b89\u88c5\u989d\u5916\u4f9d\u8d56\uff08\u7528\u4e8e\u63d0\u5347\u6570\u636e\u89e3\u6790\u901f\u5ea6\uff09\npip install --upgrade async-pixiv[extra]\n\n# \u5b89\u88c5 playwright\uff0c\u4f7f\u4e4b\u53ef\u4ee5\u4f7f\u7528\u8d26\u53f7\u5bc6\u7801\u767b\u5f55 \npip install --upgrade async-pixiv[playwright]\n\n# \u5b89\u88c5\u5168\u90e8\u989d\u5916\u4f9d\u8d56\npip install --upgrade async-pixiv[full]\n```\n\n\u4f7f\u7528 `poetry`\n\n```bash\npoetry add async-pixiv\n\n# \u5b89\u88c5\u989d\u5916\u4f9d\u8d56\uff08\u7528\u4e8e\u63d0\u5347\u6570\u636e\u89e3\u6790\u901f\u5ea6\uff09\npoetry add async-pixiv[extra]\n\n# \u5b89\u88c5 playwright\uff0c\u4f7f\u4e4b\u53ef\u4ee5\u4f7f\u7528\u8d26\u53f7\u5bc6\u7801\u767b\u5f55 \npoetry add async-pixiv[playwright]\n\n# \u5b89\u88c5\u5168\u90e8\u989d\u5916\u4f9d\u8d56\npoetry add async-pixiv[full]\n```\n\n## \u4f7f\u7528\n\n```python\nfrom async_pixiv import PixivClient  # \u5bfc\u5165\n\n# \u521d\u59cb\u5316 Client\nclient = PixivClient(\n    max_rate=100,  # API \u8bf7\u6c42\u901f\u7387\u9650\u5236\u3002\u9ed8\u8ba4 100 \u6b21\n    rate_time_period=60,  # API \u8bf7\u6c42\u901f\u7387\u9650\u5236\u65f6\u95f4\u533a\u95f4\u3002\u9ed8\u8ba4 60 \u79d2\n    timeout=10,  # \u9ed8\u8ba4\u8d85\u65f6\u79d2\u6570\n    proxies=None,  # \u4ee3\u7406\u914d\u7f6e\n    trust_env=False,  # \u662f\u5426\u4ece\u73af\u5883\u53d8\u91cf\u4e2d\u83b7\u53d6\u4ee3\u7406\u914d\u7f6e\n    retry=5,  # \u9ed8\u8ba4\u8bf7\u6c42\u91cd\u8bd5\u6b21\u6570\n    retry_sleep=1,  # \u9ed8\u8ba4\u91cd\u590d\u8bf7\u6c42\u95f4\u9694\u79d2\u6570\n)\n\n\nasync def main():\n    user = await client.login_with_token('TOKEN')  # \u4f7f\u7528 token \u767b\u5f55 pixiv\n    print(user.name)\n\n    # \u83b7\u53d6\u4f5c\u54c1\u8be6\u60c5\n    detail_result = await client.ILLUST.detail(91725675)\n    illust = detail_result.illust\n    print(\n        f\"\u94fe\u63a5\uff1a{illust.link}\", \n        f\"\u6807\u9898\uff1a{illust.title}\", \n        f\"\u4f5c\u8005\uff1a{illust.user.name}\", \n        f\"\u6807\u7b7e\uff1a#{' #'.join(map(str, illust.tags))}\", \n        f\"\u662f\u5426\u4e3a AI \u4f5c\u54c1\uff1a{'\u662f' if illust.ai_type else '\u5426'}\",\n        f\"\u662f\u5426\u4e3a R18 \u4f5c\u54c1\uff1a{'\u662f' if await illust.is_r18() else '\u5426'}\",\n        sep='\\n'\n    )\n    file_data = illust.download() # \u4e0b\u8f7d\n    breakpoint()\n\n    # \u4e0b\u8f7d\u52a8\u56fe\n    bytes_data = await client.ILLUST.download_ugoira(105369892, type='mp4')  # bytes\n    gif_data = await client.ILLUST.download_ugoira(105369892, type='gif')\n    breakpoint()\n\n    # \u5c0f\u8bf4\n    novel_result = await client.NOVEL.detail(15739859)\n    novel = novel_result.novel\n    print(f\"\u6807\u9898\uff1a{novel.title}\", f\"\u5b57\u6570\uff1a{novel.text_length}\", sep='\\n')\n    breakpoint()\n    \n    # \u6f2b\u753b\n    # \u4e0b\u6b21\u518d\u5199\n\ndef __main__():\n    import asyncio\n\n    asyncio.run(main())\n\n\nif __name__ == '__main__':\n    __main__()\n\n```\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "Async Pixiv API for Python",
    "version": "0.3.10",
    "project_urls": {
        "Homepage": "https://github.com/ArkoClub/async-pixiv",
        "Repository": "https://github.com/ArkoClub/async-pixiv"
    },
    "split_keywords": [
        "pixiv",
        "async",
        "pixiv-api"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "237a45d5e7e102c6ec2425505595bb6d2b1da1d5c112b25f82e6653cf9bb9dc4",
                "md5": "38329638a6fe643890afe750370f45eb",
                "sha256": "586477ad6a706d5a68c255c5db2383c864d84228279e1071bba12bcf6122745e"
            },
            "downloads": -1,
            "filename": "async_pixiv-0.3.10-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "38329638a6fe643890afe750370f45eb",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": "<4.0,>=3.8",
            "size": 38299,
            "upload_time": "2024-01-28T11:45:30",
            "upload_time_iso_8601": "2024-01-28T11:45:30.629310Z",
            "url": "https://files.pythonhosted.org/packages/23/7a/45d5e7e102c6ec2425505595bb6d2b1da1d5c112b25f82e6653cf9bb9dc4/async_pixiv-0.3.10-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "fbd72addc87ebb95c62567c2294bb84f8fbf4894d7f53b38e3cbdba849c9822c",
                "md5": "13335d2cb3eed515f0ca4632c5cb5572",
                "sha256": "9e9e2876233d18fa3ca0e0d963d1ed6dd29eabe13083ae268883d2b463610021"
            },
            "downloads": -1,
            "filename": "async_pixiv-0.3.10.tar.gz",
            "has_sig": false,
            "md5_digest": "13335d2cb3eed515f0ca4632c5cb5572",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": "<4.0,>=3.8",
            "size": 30734,
            "upload_time": "2024-01-28T11:45:32",
            "upload_time_iso_8601": "2024-01-28T11:45:32.996107Z",
            "url": "https://files.pythonhosted.org/packages/fb/d7/2addc87ebb95c62567c2294bb84f8fbf4894d7f53b38e3cbdba849c9822c/async_pixiv-0.3.10.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-01-28 11:45:32",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "ArkoClub",
    "github_project": "async-pixiv",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "async-pixiv"
}
        
Elapsed time: 0.17561s