Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/shigma/pxapi
Promise based Pixiv API client for NodeJS.
https://github.com/shigma/pxapi
pixiv pixiv-api pixiv-client
Last synced: 19 days ago
JSON representation
Promise based Pixiv API client for NodeJS.
- Host: GitHub
- URL: https://github.com/shigma/pxapi
- Owner: shigma
- License: mit
- Created: 2018-07-19T09:40:00.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2018-08-04T11:40:16.000Z (over 6 years ago)
- Last Synced: 2024-10-04T11:41:20.115Z (about 1 month ago)
- Topics: pixiv, pixiv-api, pixiv-client
- Language: JavaScript
- Homepage:
- Size: 59.6 KB
- Stars: 3
- Watchers: 2
- Forks: 2
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Pixiv API Client
这是受到 [alphasp](https://github.com/alphasp/pixiv-api-client) 启发而开发的一套 Pixiv 客户端函数库。相比原仓库增加了以下优点:
- 完全使用 NodeJS 原生库编写,无需任何依赖。
- 支持 https 等多种网络库,登录信息更加安全。
- 自带 hosts 接口,可以实现自动翻墙功能。
- 同时支持 camel-case,kebab-case 和 snake-case。
- 减少了 API 的数量和长度,专注于 API 的功能和逻辑。
- 完全基于 Promise 的同时也允许你像同步函数一样编程。
- 当检测到 premium 用户时自动启动按热度排序。
- 所有函数使用 jsDoc 进行注释,便于阅读。## 安装与使用
安装:
```
npm i pxapi
```使用:
```JavaScript
const PixivAPI = require('pxapi')
```## 文档
下面的文档将介绍 Pixiv API Client 的使用方法。我会按照类的顺序依次介绍:
- AsyncWrapper
- Collection
- PixivAPI
- PixivUser
- PixivNovel
- PixivIllust
- PixivComment### AsyncWrapper
AsyncWrapper 是一个 Proxy,可以用来简化 Promise 的书写。看一个例子:
```JavaScript
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