typescript
typescript
nodejs
nodejs
axios
axios

ao3-toolkit
ao3-toolkit

A Toolkit for interfacing with the Archive of Our Own

Installation
Installation

ao3-toolkit runs on Node.js and is available as a NPM package.

npm install ao3-toolkit
Usage
Usage

In a blog post the admins talk about how they handle data scraping: "We've put in place certain technical measures to hinder large-scale data scraping on AO3, such as rate limiting, and we're constantly monitoring our traffic for signs of abusive data collection. We do not make exceptions for researchers or those wishing to create datasets. However, we don't have a policy against responsible data collection — such as those done by academic researchers, fans backing up works to Wayback Machine or Google's search indexing. Putting systems in place that attempt to block all scraping would be difficult or impossible without also blocking legitimate uses of the site."

Logging in to ao3
Logging in to ao3
import { LoginSession } from "ao3-toolkit";

const session = await new LoginSession({
  username: string,
  password: string,
}).login();
Fetching single works
Fetching single works
import { getWorkInfo } from "ao3-toolkit";

const work = await getWorkInfo(id: number)
Fetching work content
Fetching work content
import { getWorkContent } from "ao3-toolkit";

const work = await getWorkContent(id: number)
Fetching work stats
Fetching work stats
import { getWorkStats } from "ao3-toolkit";

const work = await getWorkStats(id: number)
Fetching user history
Fetching user history
import { LoginSession, getWorkList } from "ao3-toolkit";

const session = await new LoginSession({
  username: string,
  password: string,
}).login();

const history = await getWorkList(
  logindata,
  session.instance,
  Listtype.History
);
Fetching user bookmarks
Fetching user bookmarks
import { LoginSession, getWorkList } from "ao3-toolkit";

const session = await new LoginSession({
  username: string,
  password: string,
}).login();

const history = await getWorkList(
  logindata,
  session.instance,
  Listtype.Bookmark
);
Roadmap
Roadmap
  • Fetching work comments
  • Fetching user stats
    • favourite tags
    • favourite fandoms
  • Fetching user stats
    • words read
    • fics read
Documentation
Documentation

Documentation is generated with TypeDoc

Contributing
Contributing

This project is written by a lone developer who learns as they go. Contributions are welcome and appreciated. So clone the repository, make a Pull request and add a Changeset. If you have any feedback, please open an Issue or reach out to me at me@lucaengelhard.com.

Inspiration and similar Projects:
Inspiration and similar Projects:

https://github.com/cyrusae/AO3.js
https://github.com/misaalanshori/ao3webapi
https://github.com/timing1337/ao3_ts
https://github.com/ReyhanArdiya/stories-scrapper
https://github.com/dr-off/ao3-api
https://github.com/Dramatycznie/AO3_Scraper
https://github.com/rsanjabi/narratives
https://github.com/syrtis-m/ao3-bookmark-getter
https://github.com/niacdoial/AO3-stylish-downloader
https://github.com/gmastergreatee/Fanfiction-Manager

License
License

MIT