Skip to main content

Async Pixiv API

Project description

Async-Pixiv

Python 3.8 GitHub file size in bytes PyPI License

PyPI - Downloads View

异步调用 Pixiv API

Building...

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

特点

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

安装

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

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

poetry add --upgrade async-pixiv

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

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

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

使用

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__()

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

async_pixiv-0.3.7.tar.gz (30.7 kB view details)

Uploaded Source

Built Distribution

async_pixiv-0.3.7-py3-none-any.whl (38.3 kB view details)

Uploaded Python 3

File details

Details for the file async_pixiv-0.3.7.tar.gz.

File metadata

  • Download URL: async_pixiv-0.3.7.tar.gz
  • Upload date:
  • Size: 30.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.5.1 CPython/3.10.2 Linux/5.15.0-1039-azure

File hashes

Hashes for async_pixiv-0.3.7.tar.gz
Algorithm Hash digest
SHA256 61a6c03e5d11eb9a50e68ce130e0e7e70807fd2d08c6f0ada3ef22c1d8d3cf26
MD5 313c0e6dde4e635fb0546e7673b78571
BLAKE2b-256 10ee6a0b373f66e711f665cbb744fb93ddf586ac34bdf58710c09bc266b4ea31

See more details on using hashes here.

File details

Details for the file async_pixiv-0.3.7-py3-none-any.whl.

File metadata

  • Download URL: async_pixiv-0.3.7-py3-none-any.whl
  • Upload date:
  • Size: 38.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.5.1 CPython/3.10.2 Linux/5.15.0-1039-azure

File hashes

Hashes for async_pixiv-0.3.7-py3-none-any.whl
Algorithm Hash digest
SHA256 0715a3163aba6d63afa62445a48d659d30b554433a286d0987ad7c9bb7c3a954
MD5 5084b640c2028e46a11469acf61aab0a
BLAKE2b-256 17dac2d17780edca2c0a615c82ca6770895e42148422dfd4cd052837deff1bd6

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page