Utility for downloading works from AO3 (Archive Of Our Own)

Related tags

Downloaderfroyo
Overview

froyo

demo

A small graphical application for batch downloading works from Archive Of Our Own (AO3).

Curate a fic repo of your own today :)

Features

  • Batch downloading works to supported formats (AZW3, EPUB, HTML, MOBI, PDF)
  • Download individual works by their URLs
  • Download works in a series
  • Download all bookmarks in your account (public and private)
  • Download all works and (public) bookmarks from another user
  • Download works in any arbitrary AO3 search result, collection or tag
  • Supports multi-threaded requests and retrying after being rate limited

Installation

Pre-compiled executable binaries

The latest binary releases can be found here. Please download the appropriate binary for your platform version, unzip the folder and run the executable. No installation is required.

Running from source

If you are using another platform, you can run the application from source as long as Python is supported on your platform.

Requirements: Python >= 3.8 (with the pip package manager)

  1. Clone the repository (or download the .ZIP).
$ git clone https://github.com/fIux-dev/froyo.git
  1. Go into the froyo directory and install the required packages.
$ cd froyo
$ pip install wheel
$ pip install -r requirements.txt
  1. Run.
$ python3 froyo.py

Building the binary for release

  1. Peform the same first two steps in the above Running from source section.
  2. Install PyInstaller.
$ pip install pyinstaller
  1. Build the executable with PyInstaller. After running this step, there should be a new folder generated named dist/. The binary will be inside this folder.
$ pyinstaller --noconsole --onefile froyo.py
  1. Copy static resources to the distribution folder.
$ cp -r resources dist/resources
  1. Now the dist/ folder containing the binary is ready for distribution.

Usage

Downloading works, series, bookmarks

Please see the animated previews for an example of how to interact with the application.

It is not required to log in to download works, however some functionality may be restricted. Certain works may be restricted to logged-in users and cannot be viewed in a guest session. In addition, bookmarks can only be imported when logged in.

Downloading works from any AO3 listing

generic2

To download all works in a tag, collection, or search result, use the Add generic URL button. You can simply paste the URL listing the works in the field and select a page range to download. Use the range 1 to 0 to get works in all pages of the listing.

Note: Search appears to be rate limited a lot more aggressively than just accessing works by ID. If you are attempting to download a large number of results, note that this may take a long time.

Rate limiting

retry

If you are attempting to download a large number of works, you may be rate limited by AO3. The application will attempt to retry requests that failed due to rate limiting after some period of time, with exponential waiting times. If it looks like the retry times are too long, you can also manually try to trigger downloads by clicking the Download all button again.

If you find that you are still getting errors trying to load series or users, you can try enabling the rate limit option in settings.

It is advisable to keep browsing of AO3 through the browser to a minimum while using the application. This is because rate limiting is shared across all your connections. If you are being rate limited in the application, you will also see a "Retry later" message when trying to access AO3 in the browser.

Settings

image

AO3 Login

A username and password can be entered in this section to authenticate with AO3. This will allow you to import bookmarks from your account, as well as view restricted works that are only available to logged-in users. It is not recommended to select "Remember me" on public computers.

Downloads

This section controls settings for the downloads. The directory the downloaded files will be saved to can be specified here. By default, it should be the Downloads folder in your home directory. If you are logged in, the downloads will appear in a subfolder with the same name as your AO3 username. A filetype for the downloads can also be selected from the supported formats.

Engine

This section controls behaviors of the application itself. Allowing multithreading will give slightly more responsive performance. The concurency limit sets the maximum number of parallel worker threads.

Rate limiting is not enabled by default, instead the application attempts to retry with a timeout in between requests if a rate limit error occurs. If you are attempting to download all works or bookmarks from a user or series and the number of works is very large, it is recommended to turn on rate limiting. This will limit the number of requests to 12 per minute, and will slow down the speed of the application significantly, but should prevent any issues with being able to load users or series.

Troubleshooting

A log.txt file is generated in the same directory as the application when it is run. If you encounter any crashes or errors, please create an issue and attach this log file.

Known issues

  • A black screen is shown for a bit when the application first starts. This is due to font loading taking a while.
  • Bookmarked series cannot be downloaded yet. A workaround is to bookmark each work in the series individually.
  • Currently it is not possible to cancel loading bookmarks, series, user works, user bookmarks, generic URL pages until the individual works are loaded. A workaround is to restart the application.
  • If you have saved a login in your settings file, and you are currently being rate limited by AO3, you will not be able to start up the application and will see a message about rate limiting. A workaround is to clear your login information in settings.ini.
  • Clicking Download all while bookmarks, series, collections, etc. are loading will not download the individual works in them. At least the individual work IDs must be loaded for the download to be queued.
  • Closing the application while requests are ongoing can take a while to respond, in order to terminate all background threads cleanly. If rate limiting is enabled, closing the application will take even longer and may appear to freeze as it is shutting down.
  • Ctrl + C through the command-line will not terminate the application cleanly. This may cause issues with the log file not being written completely, etc.
  • If you have a lot of bookmarks and/or works, the downloader will likely be rate limited by AO3. Right now, attempting to add works/bookmarks from a user or works from a series can potentially fail if the list is very large. This is because even if the request is retried, we may be rate limited trying to fetch the entire list again on retry. The workaround is to enable the rate limiting flag in the settings. Alternatively, you can attempt to submit the page as a generic URL instead to have individual retry attempts per page.
  • Enabling rate limiting is pretty buggy, you may see some unexpected errors like pop from empty list. These originate from the AO3 API's requester module and show up when rate limiting occurs. Please attempt to retry the download when the work appears to be loaded.

License

MIT

You might also like...
Userscript qutebrowser for downloading audio / video from youtube using aria2

Yt-Downloader Userscript qutebrowser for downloading video / audio from youtube using aria2 by hint links. Requirements Rofi youtube-dl aria2 dunst In

A very fast file streaming bot used for streaming and downloading movies
A very fast file streaming bot used for streaming and downloading movies

FileStreamBot GIVE A STAR AND FORK ELSE NO MORE OPENSOURCE A Telegram bot to turn all media and documents files to web link . Report a Bug | Request F

Python script for downloading audio from YouTube songs/videos.

Python script for downloading audio from YouTube songs/videos. All you have to do is specify the path to your folder and then type song's/video's name and the sound will be downloaded into your folder.

A web app for downloading Facebook comments as a csv file
A web app for downloading Facebook comments as a csv file

Facebook Comment Downloader A small web app for downloading comments from a public facebook page post. Comment downloading from https://github.com/min

Youtube_dl_helper - A hacky python script meant to automate the process of downloading mp3 files from YouTube using youtube-dl library

youtube_dl_helper A helper program meant to automate the process of downloading mp3 files from YouTube using youtube-dl library Dependencies In order

Gogoanime-dl - Gogoanime downloader for downloading anime.

gogoanime-dl With this script, you can download episodes of your favorite anime from Gogoanime. The current site that's developed against is https://w

A Python package for downloading / archiving all available episodes from a podcast RSS feed.
A Python package for downloading / archiving all available episodes from a podcast RSS feed.

allcasts 📻 🗃 A Python package for downloading all available episodes from a podcast RSS feed. Useful for making private archives of your favourite p

A simple python script and it's used for mp4 type video downloading from youtube.
A simple python script and it's used for mp4 type video downloading from youtube.

This is a simple python script and it's used for mp4 type video downloading from youtube. also, it's used inbuilt python module pytube. Furthermore, I know we have so many apps and online websites to do the same thing so it's just an experiment to study how to do those things in python.

Heroic-gogdl - GOG Downloading module for Heroic Games Launcher

heroic-gogdl GOG download module for Heroic Games Launcher Purpose This will tak

Comments
  • Froyo as example app on Dear PyGui showcase

    Froyo as example app on Dear PyGui showcase

    Hi,

    Froyo looks like a good example app to add to the Dear PyGui Showcase (https://github.com/hoffstadt/DearPyGui/wiki/Dear-PyGui-Showcase).

    Is that OK by you?

    Thank you!

    opened by bandit-masked 3
  • Download button not working

    Download button not working

    I am trying to download my bookmarks (which, yeah, I can admit is a lot) but I can't to download the ones that has loaded, the button seems like it isn't doing anything.

    opened by helpmeimdum 0
Releases(v0.2.0-beta)
Owner
flux
side account
flux
A web app for downloading Facebook comments as a csv file

Facebook Comment Downloader A small web app for downloading comments from a public facebook page post. Comment downloading from https://github.com/min

WSDOT 23 Jan 04, 2023
Write reproducible code for getting and processing ChEMBL

chembl_downloader Don't worry about downloading/extracting ChEMBL or versioning - just use chembl_downloader to write code that knows how to download

Charles Tapley Hoyt 34 Dec 25, 2022
AkShare is an elegant and simple financial data interface library for Python, built for human beings! 开源财经数据接口库

Overview AkShare requires Python(64 bit) 3.7 or greater, aims to make fetch financial data as convenient as possible. Write less, get more! Documentat

Albert King 5.8k Jan 03, 2023
A Spotify downloader needing only a python interpreter and ffmpeg.

ZSpotify A Spotify downloader needing only a python interpreter and ffmpeg. Discord Server - Matrix Server - Gitea Mirror - Main Site Requirements: B

2.4k Dec 14, 2021
YouTube-Video-Downloader - Download Youtube Videos for free.

YouTube-Video-Downloader Download Youtube Videos for free. Installing Dependencies:- Windows pip install pytube Mac/Linux pip3 install pytube Clonin

Xception Inc. 1 Jan 01, 2022
Tool To download Amazon 4k SDR HDR 1080, CDM IS Not Included

WV-AMZN-4K-RIPPER Tool To download Amazon 4k SDR HDR 1080, CDM IS Not Included For CDM You can Mail :- 11 Dec 23, 2021

Download any video from YouTube playlists

youtube-dl Download any videos from YouTube playlists. Requirements Python 3 BeautifulSoup4 PyQt PyQtWebEngine pytube pyyoutube python-decouple Usage

Antonio Fortin 1 Oct 26, 2021
YouTube to MP3 or 4, you get to choose...

UTubeToMP YouTube to MP3 or 4, you get to choose... If you don't wanna git clone andor dont wanna install python. Here: Repl.it Instructions: Pretty s

1 Jan 29, 2022
TikTok downloader video without watermark from Telegram bot

⬇️ How to download video from Tik Tok via telegram bot? Send a link to the video from tik tok to our telegram bot and it will send you a video without

1 Mar 04, 2022
Tkinter based YouTube video downloader works on pytube 11.0.2. Can download YouTube videos in 720p(HD), 144p and even only audio.

YouTube-Downloader Tkinter based YouTube video downloader works on pytube 11.0.2. Can download YouTube videos in 720p(HD), 144p and even only audio. G

Manav Grover 2 Dec 27, 2021
Python utility to download jobs at seek.com.au

Job Seeker job_seeker is an utility to download data of a job search from seek.com.au into a csv file for data analysis and exploration Install using

PyBites 3 May 14, 2022
Persepolis Download Manager is a GUI for aria2.

Persepolis Download Manager Content About FAQ Screenshots Credits About Persepolis is a download manager & a GUI for Aria2. It's written in Python. Pe

Persepolis 5.6k Dec 31, 2022
A fast and small Torrent client made with Python 3.

pico-torrent A fast and small Torrent client made with Python 3. History and context It was programmed by a hacker known as Jazz_Man, around January o

Pindorama 9 Oct 04, 2022
命令行版本的HLS/DASH流下载器,支持标准AES-128-CBC解密

XstreamDL-CLI 基于python 3.7.4+的,命令行版本的,HLS/DASH流下载器,支持标准AES-128-CBC解密 使用 首先安装必要的库

xhlove 239 Dec 31, 2022
This Program helps you download songs from the Spotify track's link you give in.

Spotify-Downloader-GUI This Program helps you download songs from the Spotify track's link you give in. It uses yt-dlp to download songs from Youtube.

Harish 12 Jun 14, 2022
Tool to get Canvas cover videos from Spotify tracks.

Spotify Canvas Downloader Tool to get Canvas cover videos from Spotify tracks. ✨ Try it out Building Clone the repository git clone https://github.com

Gabriel 35 Dec 28, 2022
Open Source application for downloading and playing music.

Musifre Greetings For HackHeist(Wartex) Judges: Synopsis, Promotion Video & Product Functioning Video are present in Documentation Folder. A Star woul

Yash Dhingra 9 Mar 22, 2022
YouPlay is a python based tool for downloading YouTube videos through its URL

YouPlay is a python based tool for downloading YouTube videos through its URL. It is capable to download videos from YouTube playlists too and can extract the audio file only from the video. It can r

Nitin Choudhury 10 Sep 15, 2022
Bulk Downloader for Reddit

saveddit is a bulk media downloader for reddit pip3 install saveddit Setting up authorization Register an application with Reddit Write down your clie

Pranav 136 Jan 03, 2023
Download h3t4y for later read

h3nt4y_dl Download h3nt4y for later read Tải h3nt4y về đọc thôi nào các bạn ơiiiiiiii! (Tải từ h**taivn nhé) Usage: python get_that_ht4i.py New versio

1 Dec 03, 2021