A terminal-based manga downloader and archiver
Project description
Manga Archiver
A terminal-based manga downloader and archiver.
About The Project
A terminal-based tool that makes it easy to search for and download manga from sources like MangaDex and AllManga.
Features
- Interactive TUI with keyboard and mouse support
- Download chapters in PDF, CBZ, or EPUB format
- Configurable output settings via in-app Settings screen
- Asynchronous download pipeline with configurable workers
- Local file output or Google Drive upload modes
- Backlog sync - automatically find and download missing chapters from your favorites
Getting Started
Prerequisites
- Python 3.10 or higher
Installation
Install the package with pip:
pip install manga-archiver
or clone the repository and install the package locally:
git clone https://github.com/jfang324/manga-archiver.git
cd manga-archiver
pip install .
Running the Application
manga-archiver
Google Drive Integration
The application supports uploading downloaded manga directly to Google Drive for cloud storage.
Setting Up Google Drive
-
Create a Google Cloud Project
- Go to Google Cloud Console
- Create a new project
- Enable the "Google Drive API"
-
Create OAuth Credentials
- Go to "APIs & Services" > "Credentials"
- Create "OAuth client ID" credentials
- Application type: TVs and Limited Input Devices
- Download the credentials JSON file
-
Configure the Application
- Download your OAuth credentials JSON file from Google Cloud Console
- Rename it to
client_secret.jsonand place it in~/.manga-archiver/
The file should have this structure (from Google's download):
{ "installed": { "client_id": "...", "client_secret": "...", "redirect_uris": [...], "token_uri": "..." } }
-
Authenticate
manga-archiver auth login
This will initiate the OAuth device flow, follow the instructions in the terminal.
Using Google Drive
Once authenticated, you can:
-
Use archive mode to upload downloads directly to Google Drive:
manga-archiver --archive -
Logout when you want to disconnect your account:
manga-archiver auth logout
How It Works
- A root folder "Manga-Archiver" is created in your Google Drive
- Each manga gets its own subfolder (created automatically or reused if existing)
- Downloaded files are uploaded to the corresponding manga folder
- File name collisions are handled by appending (1), (2), etc.
Backlog Sync
The backlog sync feature automatically finds missing chapters from your favorites by comparing your local downloads (stored in Google Drive) against the available chapters.
Usage:
# Sync missing chapters from favorites (requires --archive for Google Drive access)
manga-archiver --archive --backlog
This will:
- Fetch all your favorited manga from the database
- Scan each manga's folder in Google Drive to see which chapters you have
- Download any chapters you don't have yet
- Upload them to Google Drive automatically
Note: You must have:
- Authenticated with Google Drive (
manga-archiver auth login) - Favorites saved in the app (add manga to favorites in the TUI)
- Run with
--archiveto access Google Drive
Settings
Press Ctrl+S on the Settings screen to save your preferences.
Configurable options:
- Output Directory: Where downloaded files are saved (local mode)
- Output Format: PDF, CBZ, or EPUB
- Quality: 1-100 (higher = better quality, larger files)
- Optimize: Optimize PDF file size (slower generation)
Settings are stored in ~/.manga-archiver/settings.json
CLI Arguments
The following command-line arguments are available:
| Flag | Type | Default | Description |
|---|---|---|---|
--resolve-workers |
int | 2 | Number of workers retrieving download resources |
--download-workers |
int | 2 | Number of workers downloading images |
--merge-workers |
int | 2 | Number of workers merging images into output format |
--resolve-rate-limit |
int | 5 | Global rate limit for resolve workers (requests/sec) |
--download-rate-limit |
int | 5 | Global rate limit for download workers (requests/sec) |
--queue-size |
int | 2 | Queue size for data-heavy job queues |
--archive |
flag | false | Enable archive mode (upload to Google Drive instead of local save) |
--backlog |
flag | false | Sync favorites with Google Drive and download missing chapters |
--benchmark |
flag | false | Enable benchmark metrics collection, written to ~/.manga-archiver/benchmark/metrics.txt |
--version |
flag | - | Show the current version and exit |
--preset |
str | - | Apply a built-in runtime tuning preset (safe, slow, fast) |
--headless |
flag | false | Run without a TUI |
list presets |
sub | - | List built-in runtime tuning presets |
migrate |
sub | - | Run database migrations (subcommands: database, google-drive) |
auth |
sub | - | Google Drive authentication (subcommands: login, logout) |
health |
sub | - | Check provider API health |
Usage Examples
# Download with more workers for faster processing
manga-archiver --resolve-workers 10 --download-workers 10
# Upload directly to Google Drive
manga-archiver --archive
# Sync missing chapters from favorites
manga-archiver --archive --backlog
# Enable benchmark mode to collect performance metrics
manga-archiver --benchmark
# Show the installed version
manga-archiver --version
For more options, run manga-archiver --help.
Migration Commands
The application includes a migration system to handle database and Google Drive schema updates.
# Migrate database schema
manga-archiver migrate database
# Migrate Google Drive schema
manga-archiver migrate google-drive
Gallery
https://github.com/user-attachments/assets/f07d5eb4-91d3-4fa1-b90f-23f9f24bfbed
Acknowledgements
- MangaDex for providing the API used in this project
Known Issues
- AllManga integration may be slightly unstable at times
Development
See docs/development.md for setup and development commands.
Tools & Technologies
Core
- Python 3.10+
- Textual
- aiohttp
- asyncio
- Pillow
- ebooklib
- SQLite
Google Drive
- google-auth
- google-api-python-client
Code Quality
- Ruff
- Pyright
Testing
- pytest
- Coverage
- pytest-asyncio
Build & Package
- Poetry
- pip
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file manga_archiver-1.3.2.tar.gz.
File metadata
- Download URL: manga_archiver-1.3.2.tar.gz
- Upload date:
- Size: 74.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.3.4 CPython/3.12.7 Windows/11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
79d71e7698722b4055bb9168029f9090789b4a49de9a371009bb5b592e6104d3
|
|
| MD5 |
c7674c8e5310d75d5417540182cf1ee7
|
|
| BLAKE2b-256 |
3e77d48b2590b22faadc6205fdeea68c4ca6eb15993a9591f263f7035d47defc
|
File details
Details for the file manga_archiver-1.3.2-py3-none-any.whl.
File metadata
- Download URL: manga_archiver-1.3.2-py3-none-any.whl
- Upload date:
- Size: 115.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.3.4 CPython/3.12.7 Windows/11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d5875048445403ea1522f11b4242cab6487169af9cf1fe59867c53859ca91d9c
|
|
| MD5 |
06a6a0b88e54f08ebae684e92aed917d
|
|
| BLAKE2b-256 |
2838aaffcad7b720051e31451c05f6a3f7c1ab975db09cd0489f0fa9fe251d9c
|