MangaSnatcher is a small Python command-line tool that downloads manga chapters from supported manga/manhua websites and saves them as PDF files.
It can:
- Accept a series URL or a chapter URL
- Detect the available chapters on the series page
- Let you choose one chapter, multiple chapters, or all chapters
- Download the chapter images
- Combine the images into PDF files
- Apply a built-in cooldown between chapter downloads
- Retry failed chapter downloads automatically
- Fall back to Chromium for chapters that hide reader images from direct requests
- Use source adapters so new websites can be added without changing the downloader core
Supported sources:
mangaread.orgmanhuaus.org
- Developer: Gerald-H
- GitHub: https://github.com/Gerald-Ha
- Project: MangaSnatcher
- Python 3.10 or newer
- Internet connection
chromium-browser,chromium, orgoogle-chromeif a site only exposes chapter images after real browser renderingbrowser-cookie3support is included viarequirements.txtso MangaSnatcher can reuse login cookies from common local browser profiles
Python dependencies:
requestsbeautifulsoup4Pillow
Create a virtual environment and install the dependencies:
python3 -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
python -m pip install -r requirements.txtRun the downloader with a manga series URL or a chapter URL:
python MangaSnatcher.py "https://www.mangaread.org/manga/example-series/"For ManhuaUS:
python MangaSnatcher.py "https://manhuaus.org/manga/the-reincarnated-assassin-is-a-genius-swordsman/"You can also run it without an argument and paste the URL interactively:
python MangaSnatcher.pyAfter the series page is loaded, the program shows the detected chapters and asks what to download.
Valid selections:
allto download every chapter12to download a single chapter120-160to download a continuous chapter range1,2,5to download multiple chapters
- When downloading multiple chapters, MangaSnatcher waits
3seconds between chapters. - If a chapter download fails, the tool waits
60seconds before retrying that chapter once. - After a retry happens, the chapter-to-chapter cooldown is increased from
3seconds to8seconds for the remaining downloads. - This cooldown is meant to reduce the chance of being rate-limited or blocked by the site.
Generated PDFs are stored in the downloads/ directory by default.
Example output structure:
downloads/
mangaread.org/
example-series/
example-series-chapter-1.pdf
example-series-chapter-2.pdf
manhuaus.org/
the-reincarnated-assassin-is-a-genius-swordsman/
the-reincarnated-assassin-is-a-genius-swordsman-chapter-1.pdf
You can set a custom output folder with:
python MangaSnatcher.py "https://www.mangaread.org/manga/example-series/" --output my_pdfsIf a chapter page hides its reader images from normal HTTP requests, MangaSnatcher automatically falls back to Chromium and reads the rendered DOM instead. On Linux, this requires a graphical session. You can disable that behavior with:
python MangaSnatcher.py "https://www.mangaread.org/manga/example-series/" --no-browser-fallbackIf the site only serves pages or chapter images to your logged-in browser session, MangaSnatcher can also import cookies from your local browser profile:
python MangaSnatcher.py "https://www.mangaread.org/manga/example-series/" --browser-cookies braveSupported values are auto, brave, chrome, chromium, edge, firefox, opera, vivaldi, and none.
Some sources, including manhuaus.org, may show a Cloudflare or anti-bot challenge to direct HTTP requests. When MangaSnatcher detects this while loading the series page, the recommended fallback is a temporary private Chromium window controlled by MangaSnatcher. Complete the challenge in that window and press Enter in the terminal. MangaSnatcher then reads the rendered page HTML and imports cookies from that same Chromium session. The temporary Chromium window stays available during the run, so protected chapter pages can be loaded through the same browser context.
If temporary Chromium is unavailable or declined, MangaSnatcher can still offer the older system-default-browser cookie retry.
This does not bypass Cloudflare automatically. It only gives you a manual browser step and a cleaner explanation instead of a raw 403 Forbidden error.
MangaSnatcher can check your Update Center at startup and print whether the installed version is current or whether an update is available.
Register the project in the Update Center with the project ID mangasnatcher,
then start the downloader:
python MangaSnatcher.py "https://www.mangaread.org/manga/example-series/"Optional environment variables:
MANGASNATCHER_UPDATE_API_KEYoverrides the built-in MangaSnatcher update API keyUPDATE_SERVER_URLdefaults tohttps://update.gerald-hasani.comUPDATE_PROJECT_IDdefaults tomangasnatcherUPDATE_CHANNELdefaults tostableAPP_VERSIONdefaults to4.0.0BUILD_NUMBER,GIT_COMMIT, andDOCKER_IMAGE_DIGESTare sent when present
If the update server is unreachable, MangaSnatcher prints a short notice and continues normally.
- MangaSnatcher loads the provided series or chapter URL.
- It selects the matching source adapter for the website.
- It normalizes the URL to the series page.
- It scans the page for chapter links using the source adapter.
- It loads the selected chapters and collects the page images.
- It converts the images into PDF files.
Use this project only for content you are legally allowed to access and download. Respect the website's terms of service and the rights of the content owners.