@doridian/furaffinity-api
Version:
FurAffinity wrapper for Node.js
267 lines (188 loc) • 4.85 kB
Markdown
<h1 align="center">
furaffinity-api
</h1>
<h5 align="center">FurAffinity wrapper for Node.js</h5>
<div align="center">
<a href="https://www.npmjs.com/package/furaffinity-api">
<img alt="npm" src="https://img.shields.io/npm/v/furaffinity-api">
</a>
<a href="https://www.npmjs.com/package/furaffinity-api">
<img alt="npm" src="https://img.shields.io/npm/dw/furaffinity-api">
</a>
<a href="https://github.com/recallfuture/furaffinity-api">
<img alt="NPM" src="https://img.shields.io/npm/l/furaffinity-api">
</a>
<p align="center"><a href="README.zh-CN.md">English</a> | 中文</p>
</div>
> **重要提示:** 本项目适用于 Furaffinity 的 **现代** 风格.
```bash
npm install furaffinity-api
```
> 从 4.1.0 开始,你可以通过 lowerCase 来调用任意 API。
> (例如,`const {login, search} form "furaffinity-api";`)
使用 cookie 登录 furaffinity
```js
import { Login } from "furaffinity-api";
// or
const { Login } = require("furaffinity-api");
// to allow all results to be accessible, add your cookies
Login("cookie_a", "cookie_b");
```
搜索作品
```js
import { Search, Type } from 'furaffinity-api';
Search('search query', { /** SearchOptions */ type?, rating?, page? }).then(res => {
// 结果
res[0].getSubmission().then(submission => {
// 作品详情
});
});
```
获取浏览页作品
```js
import { Browse } from "furaffinity-api";
Browse({
/** BrowseOptions */
}).then((res) => {
// 结果
res[0].getSubmission().then((submission) => {
// 作品详情
});
});
```
获取特定的作品
```js
import { Submission } from "furaffinity-api";
Submission("1234567890").then((res) => {
// res is a Submission
});
```
获取当前用户信息
```js
import { User } from "furaffinity-api";
User().then((user) => {
// console.log(user);
});
```
获取某个作者的用户信息
```js
import { Author, WatchingList } from "furaffinity-api";
Author("user_id").then((res) => {
// 某作者信息
// 包含 id, name, url and avatar(可能为 undefined)
WatchingList(res.id).then((list) => {
// 查询该作者的关注列表
});
});
```
获取某用户的画廊
```js
import { Gallery } from "furaffinity-api";
Gallery("author_id").then((res) => {
// 结果
res[0].getSubmission().then((submission) => {
// 作品详情
});
});
```
获取某用户废弃作品
```js
import { Scraps } from "furaffinity-api";
Scraps("author_id").then((res) => {
// 结果
res[0].getSubmission().then((submission) => {
// 作品详情
});
});
```
根据时间线,获取作品详情
```js
import { Submissions } from "furaffinity-api";
Submissions().then((res) => {
// 结果
res[0].getSubmission().then((submission) => {
// 某条作品详情
});
});
```
获取某用户的关注列表(暂不能获取头像)
```js
import { WatchingList } from "furaffinity-api";
WatchingList("author_id").then((list) => {
// 作者列表
});
```
**Login first**
获取当前登录用户的关注列表(暂不能获取头像)
```js
import { MyWatchingList } from "furaffinity-api";
MyWatchingList().then((list) => {
// 作者列表
});
```
**Login first**
从时间线中移除作品:
```js
import { removeFromInbox } from "furaffinity-api";
removeFromInbox(['viewId', 'viewId']);
```
**Login first**
关注一个用户,如果已关注则无效果:
```js
import { watchAuthor } from "furaffinity-api";
watchAuthor('userId');
```
**Login first**
取消关注一个用户,如果未关注则无效果:
```js
import { unwatchAuthor } from "furaffinity-api";
unwatchAuthor('userId');
```
**Login first**
请求 IAuthor 上拿到的 watchLink,用来切换关注状态:
```js
import { toggleWatch } from "furaffinity-api";
toggleWatch('https://www.furaffinity.net/watch/userid/?key=033d7e8f2860f80850557df7ed99120ac9f926e3');
```
在测试前,先在 `/tests/jest.config.ts` 中添加配置:
```js
export const options: ITestConfig = {
loginOptions: {
cookieA: "your cookie a", // your cookies
cookieB: "your cookie b"
},
watchOptions: {
userId: "your userid",
shouldContainUserId: "userid you are watching"
},
authorOptions: {
userId: "your favorite author's userid"
}
};
```
接着运行:
```bash
npm run test
```
- [insert/furaffinity](https://gitlab.insrt.uk/insert/furaffinity): furaffinity-api 基于这个仓库
ISC