pxapi

1.0.1 • Public • Published

Pixiv API Client

这是受到 alphasp 启发而开发的一套 Pixiv 客户端函数库。相比原仓库增加了以下优点:

  • 完全使用 NodeJS 原生库编写,无需任何依赖。
  • 支持 https 等多种网络库,登录信息更加安全。
  • 自带 hosts 接口,可以实现自动翻墙功能。
  • 同时支持 camel-case,kebab-case 和 snake-case。
  • 减少了 API 的数量和长度,专注于 API 的功能和逻辑。
  • 完全基于 Promise 的同时也允许你像同步函数一样编程。
  • 当检测到 premium 用户时自动启动按热度排序。
  • 所有函数使用 jsDoc 进行注释,便于阅读。

安装与使用

安装:

npm i pxapi

使用:

const PixivAPI = require('pxapi')

文档

下面的文档将介绍 Pixiv API Client 的使用方法。我会按照类的顺序依次介绍:

  • AsyncWrapper
  • Collection
  • PixivAPI
  • PixivUser
  • PixivNovel
  • PixivIllust
  • PixivComment

AsyncWrapper

AsyncWrapper 是一个 Proxy,可以用来简化 Promise 的书写。看一个例子:

const pixiv = new PixivApi()
pixiv.login(username, password).then(() => {
  pixiv
    .searchIllust(68910277) // 查找某一部作品
    .author() // 作品的作者
    .illusts() // 作者的全部作品
    .itemAt(2) // 第 2 个作品
    .comments() // 作品的全部评论
    .itemAt(1) // 第 1 个评论
    .author() // 评论的作者
    .following() // 作者的关注
    .itemAt(5) // 第 5 个关注
    .detail() // 用户的详细信息
    .then(console.log)
}).catch(console.log)

Pixiv API Client 中的几乎所有函数都是异步的,但你不必使用大量的then,因为 AsyncWrapper 为你做好了相关的绑定工作。你只需要像同步函数一样书写,同时记得最后加上补完异步的逻辑即可。

Collection

Collection 也是一个 Proxy,可以用来简化数组的更新。一些请求列表的 API 并不会一次性地返回所有结果,而是只会返回一部分,这时候 Collection 会自动检测所需的数据,并按需自行向列表中添加。

除了支持 Array 的所有属性和方法外,Collection 还有下列实例属性和方法:

coll.next: string | null

返回数组中下一批未加载的数据的 URL。如果已经没有下一批数据则返回 null。

coll.itemAt(index: number): AsyncWrapper

  • index: 元素的序号,从 1 开始计数。
  • 返回: 当前数组中的第 index 个元素。

PixivAPI

PixivAPI 是这个库的入口。它可以由一个构造函数来创建实例。每个实例会绑定一个账号,实例中大部分的方法都需要注册过的账号,否则会返回一个 Authorization required 错误。它有一些配置可以通过构造函数实现:

new PixivAPI({library?: {request: Function}, hosts?: string | object})

  • library: 要使用的网络库,必须有一个 request 方法。默认值为require('https')
  • hosts: 要使用的 Hosts。可以是一个字符串,格式为 hosts 文件的格式。也可以是一个对象,键形如pixiv.pximg.net,对应的值是其 IP 地址。如果不写则默认为我们自带的 hosts。如果不想使用 hosts 只需使用空对象{}即可。

PixivAPI 有下列实例方法:

pixiv.setLanguage(language: string): void

重新设置当前语言。默认语言为en-US

  • language: 要设置的语言名。形如en-US

pixiv.login(username: string, password: string, remember?: boolean): AsyncWrapper

登录到 Pixiv 账号。

  • username: 用户名或者邮箱地址。
  • password: 密码。
  • remember: 是否记住密码。默认为true
  • 返回:提交得到的结果。

pixiv.logout(): void

登出当前的 Pixiv 账号。

pixiv.refreshAccessToken(token?: string): AsyncWrapper

更新 Pixiv 账号的访问令牌。

  • token: 新的访问令牌。默认值为旧的访问令牌。
  • 返回:提交得到的结果。

pixiv.createProvisionalAccount(nickname: string): AsyncWrapper

创建一个临时账号。

  • nickname: 昵称。
  • 返回: 提交得到的结果。

pixiv.userState(): AsyncWrapper

  • 返回: 当前用户的状态信息。

pixiv.editUserAccount({password?: string, pixivId?: string, newPassword?: string, email?: string}): AsyncWrapper

pixiv.sendAccountVerificationEmail(): AsyncWrapper

Search API

Search API 包含 searchWord,searchUser,searchIllust,searchNovel,searchComment 和 searchSeries。它们的使用方法类似,我们一并介绍。

Get API

Get API 包含 getUsers,getIllusts,getNovels,getMangas。它们的使用方法类似,我们一并介绍。

PixivUser

PixivNovel

PixivIllust

PixivComment

Readme

Keywords

none

Package Sidebar

Install

npm i pxapi

Weekly Downloads

0

Version

1.0.1

License

MIT

Unpacked Size

37.9 kB

Total Files

10

Last publish

Collaborators

  • shigma