Overview
The desktop GUI (app.py) is a Tkinter-based application that wraps the core downloading functionality in a user-friendly interface. It’s ideal for users who prefer a standalone executable without web dependencies.
Quick start
Install dependencies
Pillow- Image processingplaywright- Browser automationcrawl4ai- Web scrapingimg2pdf- PDF generation
The desktop application automatically opens the generated PDF when the download completes.
Application interface
The GUI consists of several components:app.py:29-65
Main components
| Component | Purpose |
|---|---|
| URL Entry | Input field for manga URLs |
| Descargar PDF Button | Starts the download process |
| Detener Button | Cancels the active download |
| Progress Bar | Visual progress indicator (current/total pages) |
| Log Area | Scrollable text area showing real-time logs |
Supported sites
The application validates URLs against supported domains:app.py:96-98
The application will display a warning dialog if you enter a URL from an unsupported domain.
Supported manga sites
- TMOHentai (tmohentai)
- Mangas440 (m440.in, mangas.in)
- Hentai2Read (hentai2read)
- Hitomi (hitomi.la)
- nhentai (nhentai.net)
- ZonaTMO (zonatmo.com)
Features
Real-time progress tracking
The progress bar updates as pages are downloaded:app.py:131-135
Live log output
All download events are logged in real-time:app.py:77-87
Cancel support
Downloads can be cancelled mid-process:app.py:119-122
Automatic file opening
When a download completes, the PDF opens automatically:app.py:114-115
This behavior is controlled by the
OPEN_RESULT_ON_FINISH flag. Set it to False if you prefer manual opening.Threading model
The application uses threading to keep the GUI responsive during downloads:app.py:117
app.py:124-141
Configuration
Customizing the interface
You can modify the appearance by adjusting the style configuration:app.py:24-26
Window size
app.py:21
Placeholder text
app.py:43-45
Log files
The application creates a debug log file:- Location:
downloader_debug.log(same directory asapp.py) - Contents: Complete log of all download operations
- Behavior: File is cleared at the start of each new download
app.py:101-105
Building an executable
To create a standalone .exe file that doesn’t require Python:Build the executable
--onefile: Package everything into a single .exe--windowed: Hide the console window--name: Set the executable name
Troubleshooting
Application won’t start
Issue: Import errors or missing modules Solution: Ensure all dependencies are installed:GUI freezes during download
Issue: Threading not working properly Solution: This shouldn’t happen with the current implementation. If it does, check that you’re using Python 3.7+ with proper asyncio support.PDF doesn’t open automatically
Issue: No default PDF viewer configured Solution: The application uses the system’s default PDF handler. Ensure you have a PDF viewer installed (Adobe Reader, Edge, Chrome, etc.).Download fails with no error
Issue: Playwright browsers not installed Solution:Progress bar doesn’t update
Issue: Source site changed their structure Solution: Checkdownloader_debug.log for detailed error messages. The site parser may need updating.
Performance considerations
- Memory usage: Each download loads images into memory. Large galleries (100+ pages) may require 500MB+ RAM.
- Disk space: Generated PDFs are stored in the
PDF/directory. Monitor disk usage for large libraries. - CPU usage: Image processing is CPU-intensive. Downloads may slow down on older hardware.
Comparison with web version
| Feature | Desktop App | Web App |
|---|---|---|
| Installation | Requires Python | Requires Node.js + Python |
| Interface | Native Tkinter | Modern React UI |
| Auto-open PDF | Yes | No (manual download) |
| Multi-user | No | Yes (via WebSocket) |
| Deployment | Single script | Two services (backend + frontend) |
| Cancel support | Yes | Yes |
| Progress tracking | Yes | Yes |
| Log output | File + GUI | WebSocket stream |
Choose the desktop app for simplicity and the web app for remote access or multi-user scenarios.