Modern manga downloader for atsu.moe with both a full CLI and a PyQt6 desktop GUI.
Repository: https://github.com/Yui007/atsu-downloader
Initial GUI view:
- Modular architecture: API client, scraper, download manager, converters, CLI, and GUI.
- Concurrent downloads for chapters and images.
- Multiple output formats:
images,pdf,cbz. - Retry with exponential backoff for API/image requests.
- Persistent configuration in
config.json. - Interactive chapter selection:
allora- single value:
5 - range:
1-10 - mixed:
1,3,5-7
- Duplicate chapter cleanup during parsing (prevents repeated chapter blocks in listings).
git clone https://github.com/Yui007/atsu-downloader.git
cd atsu-downloader
python -m venv .venvWindows PowerShell:
.venv\Scripts\Activate.ps1
pip install -r requirements.txtmacOS/Linux:
source .venv/bin/activate
pip install -r requirements.txtCLI interactive mode:
python main.pyGUI mode:
python gui_main.pyCLI direct mode examples:
python main.py https://atsu.moe/manga/OaKBx
python main.py https://atsu.moe/manga/OaKBx -c all
python main.py https://atsu.moe/manga/OaKBx -c 1-20 -f cbz
python main.py https://atsu.moe/manga/OaKBx -c 1,3,8-12 -f pdf -o ./downloads
python main.py https://atsu.moe/manga/OaKBx -c all -vpython main.py [URL] [OPTIONS]
-c,--chapters: Chapter selection expression (all,1-10,1,3,5-7)-f,--format: Output format (images,pdf,cbz)-o,--output: Output directory-v,--verbose: Enable detailed logs
- Fetch manga by URL or ID.
- Chapter list with multi-select, select-all, clear, and range apply.
- Real-time progress and activity log.
- Settings tab for format, path, concurrency, retries, and logging.
Saved in config.json (auto-created).
{
"download_format": "images",
"keep_images": true,
"download_path": "./downloads",
"concurrent_chapters": 3,
"concurrent_images": 5,
"max_display_chapters": 0,
"max_retries": 3,
"retry_delay": 2,
"enable_logs": false
}- Python
3.10+ typerrichrequestsPillowPyQt6
Install with:
pip install -r requirements.txtatsu-downloader/
|- api/ # Atsu API client + retry
|- scraper/ # URL/ID parsing + manga fetch
|- downloader/ # chapter/image download orchestration
|- converters/ # PDF/CBZ + ComicInfo.xml generation
|- cli/ # Typer + Rich CLI
|- gui/ # PyQt6 desktop app
|- models.py # data models
|- config.py # config load/save helpers
|- main.py # CLI entrypoint
`- gui_main.py # GUI entrypoint
