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
Vinetrimmer-DRM-TOOL - Widevine DRM downloader and decrypter for AMZN|NF|STAN And all

🍃 ✂️ Vinetrimmer Widevine DRM downloader and decrypter. Thanks to wvleaks for t

Vlad Tănăsescu 20 Jan 13, 2022
Google Art Image Downloader Tkinter

Google-Art-Image-Downloader-Tkinter 由 google-art-downloader 整改的批量 Google 艺术展平台高清图片下载 ⭐ It works perfectly from 2018 year till today, thanks for stars!

PY-GZKY 1 Jan 05, 2022
code for paper"3D reconstruction method based on a generative model in continuous latent space"

PyTorch implementation of 3D-VGT(3D-VAE-GAN-Transformer) This repository contains the source code for the paper "3D reconstruction method based on a g

Tong 5 Apr 25, 2022
Download a large file from Google Drive (curl/wget fails because of the security notice).

gdown Download a large file from Google Drive. Description Download a large file from Google Drive. If you use curl/wget, it fails with a large file b

Kentaro Wada 2.7k Jan 09, 2023
A Quick demo of how to use the youtube_dl module in python.

youtube_dl python module demo A Quick demo of how to use the youtube_dl module in python. Whole documentation for the youtube_dl Installation git

7 Aug 27, 2021
A cross-platform python based utility to download courses from udemy for personal offline use.

udemy-dl A cross-platform python based utility to download courses from udemy for personal offline use. Warning Udemy has started to encrypt many of t

Nasir Khan 4.6k Dec 31, 2022
This package helps you to directly download an APK from Google Play by providing the package id of the app

Apk Downloader About | Features | Technologies | Requirements | Starting | License | Author 🎯 About This package helps you to directly download an AP

Daniel Agyapong 9 Dec 11, 2022
A Python script to download PDB files associated with a Portable Executable (PE)

A Python script to download PDB files associated with a Portable Executable (PE)

Podalirius 33 Jan 03, 2023
Audio/Video downloader

youtubeDownloader Audio/Video downloader • The project downloads audio/video/both after link is entered • It also shows total size of the file, time l

Tulsi Thakur 1 Nov 16, 2021
Convert BMS songs to osu! With options to convert keysounds and convert to 7key.

bmx2osu Convert BMS to osu! With options to: convert keysounds to one song file using BMX2WAV include 7k version change Overall Difficulty and HP Drai

7 Nov 28, 2022
Easily download audio described movies and TV shows found on audiovault.net

AudioVault Downloader A convenient downloader for audio described movies and TV shows found on the Audio Vault. get latest binary release for Windows

Carter Temm 5 Feb 10, 2022
A Simple YouTube Video Downloader With Python

Simple YouTube Video Downloader Simple YouTube Video Downloader is an open source project with a very simple UI that tries to speed up the process of

Brian Han 2 Jan 03, 2022
Discord Nitro Generator + Checker

Discord Nitro Generator + Checker Usage Download the project files and run main.py You will be prompted with 2 questions the first one being the amoun

509 Jan 02, 2023
Download all your URI Online Judge source codes and upload to GitHub with simple steps.

URI-Code-Downloader Download all your URI Online Judge source codes and upload to GitHub with simple steps. Prerequisites Python 3.x Installing Downlo

Luan Simões 9 Mar 23, 2022
📺 YouTube Song Downloader Bot For Telegram 🔮

📺 YouTube Song Downloader Bot For Telegram 🔮 Powerd By TamilBots.

Tamil Bots 146 Dec 31, 2022
Um projeto modesto para baixar vídeos do youtube usando tkinter como gui

Youtube Downloader Um projeto modesto para baixar vídeos do youtube usando tkinter como gui Instalação dos requirements: python3 setup.py ou python se

Sunlyx 2 Nov 25, 2021
Python script designed to search and fetch direct download links from nxbrew.com

SwitchGamesDownloader Only for windows nxbrew.com is a website, accessible only using a proxy, where the majority of games for the Nintendo Switch are

Backend 91 Dec 28, 2022
Youtube-downloader-using-Python - Youtube downloader using Python

Youtube-downloader-using-Python Hii guys !! Fancy to see here Welcome! built by

Lakshmi Deepak 2 Jun 09, 2022
Youtube videos and channels scraper python wrapper!

YouTubeCrawle Wrapper for python Why This wrapper? This is wrapper is not limited to videos only it can scrape both channel and videos seperately ;D

Kei 16 Aug 08, 2022