Important: This project can only be used with Furaffinity's Modern style.
npm install furaffinity-api
Form version 4.1.0, you can call any API with their lower case name. (e.g.,
const {login, search} form "furaffinity-api";
)
Login to furaffinity use cookies
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");
Searching for content:
import { Search, Type } from 'furaffinity-api';
Search('search query', { /** SearchOptions */ type?, rating?, page? }).then(res => {
// res is an array of Result(s)
res[0].getSubmission().then(submission => {
// submission is a Submission
});
});
Get results from Browse page:
import { Browse } from "furaffinity-api";
Browse({
/** BrowseOptions */
}).then((res) => {
// res is an array of Result(s)
res[0].getSubmission().then((submission) => {
// submission is a Submission
});
});
Looking up a specific submission:
import { Submission } from "furaffinity-api";
Submission("1234567890").then((res) => {
// res is a Submission
});
Get information of current logged in user:
import { User } from "furaffinity-api";
User().then((user) => {
// console.log(user);
});
Get information of an author:
import { Author, WatchingList } from "furaffinity-api";
Author("user_id").then((res) => {
// res is an Author
// Author has id, name, url and avatar(maybe undefined)
WatchingList(res.id).then((list) => {
// list is an Author array
});
});
Get results from someone's gallery:
import { Gallery } from "furaffinity-api";
Gallery("author_id").then((res) => {
// res is an array of Result(s)
res[0].getSubmission().then((submission) => {
// submission is a Submission
});
});
Get results from someone's scraps:
import { Scraps } from "furaffinity-api";
Scraps("author_id").then((res) => {
// res is an array of Result(s)
res[0].getSubmission().then((submission) => {
// submission is a Submission
});
});
Get results from submissions timeline:
import { Submissions } from "furaffinity-api";
Submissions().then((res) => {
// res is an array of Result(s)
res[0].getSubmission().then((submission) => {
// submission is a Submission
});
});
Get all watching authors of an author(can't get avatar):
import { WatchingList } from "furaffinity-api";
WatchingList("author_id").then((list) => {
// list is an Author array
});
Login first Get all watching authors of current login user(can get avatar):
import { MyWatchingList } from "furaffinity-api";
MyWatchingList().then((list) => {
// list is an Author array
});
Login first Remove submissions from submission inbox, only delete when it exists in inbox.:
import { removeFromInbox } from "furaffinity-api";
removeFromInbox(['viewId', 'viewId']);
Login first Watch author if haven't watched, no effact when watch yourself:
import { watchAuthor } from "furaffinity-api";
watchAuthor('userId');
Login first Unwatch author if already watched, no effact when unwatch yourself:
import { unwatchAuthor } from "furaffinity-api";
unwatchAuthor('userId');
Login first Request the watch link, link can be found from IAuthor, toggle watching state:
import { toggleWatch } from "furaffinity-api";
toggleWatch('https://www.furaffinity.net/watch/userid/?key=033d7e8f2860f80850557df7ed99120ac9f926e3');
Please improve the test configuration /tests/jest.config.ts
before testing.
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"
}
};
Then run:
npm run test
- insert/furaffinity: furaffinity-api is based on this project.
ISC