Thanks to visit codestin.com
Credit goes to github.com

Skip to content

The most versatile, feature-rich & customizable command-line tool to download webtoons (manhwa), manga, comics and light novels from comix.to, mangataro.org, mangafire.to, bato.to, asuracomic.net, weebcentral.com, manganato.gg & many others

License

Notifications You must be signed in to change notification settings

zzyil/AIO-Webtoon-Downloader

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

98 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

AIO Webtoon & Light Novel Downloader 📚

Important

comick.io has ceased providing any media themselves. This project now targets multiple other platforms with the same feature set—thanks for sticking around!

Python GNU GPLv3

The most versatile, feature-rich & customizable command-line tool to download webtoons (manhwa), manga, comics and light novels from mangataro.org, mangafire.to, bato.to, asuracomic.net, weebcentral.com, manganato.gg, comix.to & many others, and package them into PDF, EPUB, CBZ, or raw chapter bundles—complete with light-novel aware text handling, intelligent image processing, resumable downloads, scanlation group prioritization, and optional chapter/file-size splitting.

AIO Webtoon & Light Novel Downloader Banner

📑 Table of Contents


🚀 Features

  • 📥 Flexible Chapter Selection
    Download specific chapters, ranges (1-5), or lists (1,3,5-7).
  • 🏷️ Scanlation Group Control
    Prioritize your favorite scanlation group(s), or choose by highest upvotes.
  • 🖼️ Smart Page Processing
    Resize, scale, recombine, and compress image chapters. Webtoon strips stay continuous; page-style scans keep their page layout.
  • 🚫 No-Processing Mode
    Package raw pages as-is into PDF/EPUB/CBZ (skip all resizing/recombining/scaling) via --no-processing.
  • 📁 Multiple Formats
    Export as PDF, fixed-layout EPUB, vertical-scroll EPUB, or CBZ.
  • 📚 Light-Novel Friendly
    Detects prose chapters automatically—EPUB embeds true XHTML pages, PDF outputs selectable text, CBZ renders text blocks as images, and --format none saves plain .txt chapters.
  • 🧼 Clean Chapter Content
    Automatically strips Mangataro boilerplate (group avatars, site banners, copyright notices) so only true page content lands in your book.
  • 🔄 Resumable Downloads
    Automatically picks up where it left off if interrupted.
  • ✂️ Book Splitting
    Split large downloads by file size (e.g., 400MB) or chapter count (e.g., 10ch).
  • 💾 Keep Originals
    Optionally retain raw images and per-chapter files.

🛠️ Requirements

  • Python
    • Officially supported: 3.8+
    • Best-effort (tested): 3.7 (may require building Pillow from source on some platforms)
    • Not supported: 3.6 and Python 2.x
  • OS: macOS, Linux, Windows
  • Python packages (installed via requirements.txt)
    • beautifulsoup4
    • cloudscraper
    • lxml
    • Pillow
    • pypdf
    • requests
  • Notes for macOS (Apple Silicon), Python 3.7 only:
    • Building Pillow from source may require system libraries. If you see build errors, install via Homebrew:
      • brew install jpeg-turbo libpng freetype libtiff webp little-cms2 zlib
    • Ensure Xcode command line tools are installed: xcode-select --install

Feature support by Python version

  • Legend:
    • ✅ Supported
    • ⚠️ Supported with caveats (see notes)
    • ❌ Not supported
Python PDF EPUB (page) EPUB (vertical) CBZ Resume/Restore Split (size/ch) Keep images Group priority/mix-by-upvote Cloudscraper lxml parser
3.13
3.12
3.11
3.10
3.9
3.8
3.7 ✅ (fallback to html.parser if lxml unavailable)
3.6
2.7

Notes:

  • Cloudscraper is optional. If it’s not available or fails to initialize, the downloader automatically falls back to requests.Session.
  • The HTML parser prefers lxml if installed, and falls back to the built-in html.parser.
  • On macOS (Apple Silicon), Python 3.7 may need system libraries to build Pillow.

🧰 Installation

git clone https://github.com/zzyil/AIO-Webtoon-Downloader.git
cd AIO-Webtoon-Downloader
python3 -m pip install -r requirements.txt

🌐 Supported Sites

For all supported sites, check docs/SUPPORTED_SITES.MD

Site Notes Integration Status
asuracomic.net Alternative URLs: asurascans.net recent check 11.25.25 ✅
Atsumaru / atsu.moe recent check 11.26.25 ✅
BATO.to See mirror list recent check 11.25.25 ✅
comix.to Supports multiple scanlation groups recent check 11.26.25 ✅
fanfox.net Mirrors: mangafox.la and mangahere.cc recent check 11.26.25 ✅
flamecomics.xyz recent check 11.25.25 ✅
galaxymanga.io recent check 11.25.25 ✅
kagane.org DRM-protected, requires Widevine .wvd file. See docs/Widevine.md currently untested due to .wvd requirement ⚠️
kingofshojo.com recent check 11.25.25 ✅
mangabuddy.com See MangaBuddy mirrors recent check 11.27.25 ✅
mangadex.org Supports scanlation group selection recent check 11.25.25 ✅
mangafire.to Supports multiple languages recent check 11.25.25 ✅
mangahub.io recent check 11.25.25 ✅
MangaKakalot / MangaNato See mirror list recent check 11.25.25 ✅
MangaPark See mirror list
mangataro.org Supports scanlation group selection recent check 11.25.25 ✅
manhuafast.net Mirror: manhuafast.com recent check 11.25.25 ✅
manhuaplus.com recent check 11.25.25 ✅
manhuaus.com recent check 11.25.25 ✅
razure.org light-novel support recent check 11.25.25 ✅
utoon.net recent check 11.26.25 ✅
violetscans.org recent check 11.26.25 ✅
weebcentral.com Supports scanlation group selection recent check 11.27.25 ✅

🚀 Usage

python3 aio-dl.py [OPTIONS] COMIC_URL

Run python3 aio-dl.py --help for the full option list.


⚙️ Options

Option Description Default
COMIC_URL URL of the manga’s main page (e.g. https://awesome-webtoon.url/series/name) required
--cookies STRING HTTP cookie string for restricted content (e.g. key1=val1; key2=val2) ""
--group STRING... Preferred scanlation groups (comma-separated or multiple args). []
--mix-by-upvote When multiple --group entries exist, pick the version with the highest upvotes among them. False
--no-partials Skip fractional chapters (e.g. 1.5). False
--chapters STRING Chapter filter: all, single (5), range (1-10), or list/ranges (1,3,5-7). all
--language STRING Language code (e.g. en, ja). en
--format {pdf,epub,cbz,none} Output format. epub
--epub-layout {page,vertical} EPUB layout: page (fixed), vertical (scroll). vertical
--width INT Base image width (px). Defaults vary by format/layout. auto
--aspect-ratio STRING Target W:H ratio (e.g. 4:3 or 2.5). Not used for PDF. auto
--quality INT JPEG quality % (1–100). 85
--scaling INT Final image scale % (1–100). 100
--no-processing Skip all image post-processing (resize, recombine, scaling). Build formats directly from the raw downloaded images. False
--split STRING Split by size (400MB) or chapters (10ch). None
--restore-parameters Reuse saved processing settings (for format-only reassembly). False
--keep-images Retain raw downloaded images under comics/<Title>/Chapter_<n>/. False
--keep-chapters Save each chapter as a separate file (.pdf, .epub, or .cbz). False
--no-cleanup Do not delete the temporary directory (tmp_<hid>/) after completion. False
-v, --verbose Enable detailed logging. False
-d, --debug Enable debug-level logging (image processing details). False

🔐 Cookie Setup

If authentication is required, export your cookies as a single quoted string:

export COOKIES='session_token=…; another_cookie=…'

Then run:

python3 aio-dl.py --site mangataro --cookies "$COOKIES" \
  "https://awesome-webtoon.url/series/name"

📖 Examples

  1. Page-layout EPUB, chapters 1–2, preferred group Asura, verbose:

    python3 aio-dl.py \
      --group Asura \
      --chapters "1-2" \
      --format epub \
      --epub-layout page \
      --verbose \
      "https://awesome-webtoon.url/series/name"
  2. Vertical EPUB, chapters 1–20, split every 5 chapters, verbose & debug:

    python3 aio-dl.py \
      --chapters "1-20" \
      --format epub \
      --epub-layout vertical \
      --split 5ch \
      --verbose --debug \
      "https://awesome-webtoon.url/series/name"
  3. CBZ, chapters 1–2, one chapter per file:

    python3 aio-dl.py \
      --chapters "1-2" \
      --format pdf \
      "https://awesome-webtoon.url/series/name"
  4. CBZ, chapters 1–2, one chapter per file:

    python3 aio-dl.py \
      --chapters "1-2" \
      --format cbz \
      --keep-chapters \
      "https://awesome-webtoon.url/series/name"
  5. PDF, chapters 1–2, save each chapter separately:

    python3 aio-dl.py \
      --chapters "1-2" \
      --format pdf \
      --keep-chapters \
      "https://awesome-webtoon.url/series/name"
  6. Raw CBZ, chapters 1–50 (no resizing/recombining/scaling):

    python3 aio-dl.py \
     --chapters "1-5" \
      --format epub \
      --epub-layout page \
      "https://awesome-webtoon.url/series/name"
  7. Raw CBZ (pages copied as-is):

    python3 aio-dl.py \
      --chapters "1-50" \
      --format cbz \
      --no-processing \
      "https://awesome-webtoon.url/series/name"

💡 Tips & Tricks

Here are some handy pointers to get the most out of your workflow:

  • 🔄 Ongoing Series Updates
    • Use --no-cleanup to keep your temporary data around and reuse the same settings.
    • Run again whenever new chapters appear, only new content will be downloaded & processed. • You can use --restore-parameters to restore input parameters to exactly match the previous one.

  • 🗂️ Archiving Originals
    • Add --keep-images to save every raw page under comics/<Title>/Chapter_<n>/.
    • Useful if you want to re-process images later (different layout, quality, etc.).

  • 🧾 Raw Packaging (No Processing)
    • Use --no-processing to package pages exactly as downloaded into CBZ/EPUB/PDF.
    • Skips resize/recombine/scaling; great if you prefer untouched originals inside the final file.
    • Combine with --keep-chapters to generate one raw file per chapter.

  • 📑 Precise Chapter Selection
    • Use --chapters "1-20,21,23-100" to include exactly the chapters you want (skip fillers or extras).
    • Supports single numbers, ranges, and comma-separated lists.
    • Use --no-partials to skip fractional chapters such as 1.5, 30.1 or other non decimal exclusive chapters in order to prevent duplicates within your final export.

  • ⚙️ Recover from Failures
    • After a crash or network hiccup, rerun with --restore-parameters, which will restore all parameters except for your desired file format. (Please remember that PDFs don't adhere to aspect ratios the same way as EPUBs & CBZs do, so going from pdf to either of them isn't recommended, the other way around works fine.)

  • 🍏 Apple Books Friendly
    • Apple Books can choke on massive EPUBs— personal recommendation: split into ~10-chapter chunks: --split 10ch.
    • Alternatively, split by size: --split 200MB.

  • 📖 EPUB Layout Recommendations
    • For standard e-readers (Kindle, Kobo): --epub-layout page.
    • For continuous scroll (Apple Books, PocketBook): --epub-layout vertical.

  • 🎨 Control Output Quality & Size
    --quality 60 to drop JPEG quality for smaller files.
    --scaling 80 to downscale pages to 80% of the original processed size.
    • Combine with --split to keep individual file sizes manageable.

  • 🏷️ Best Scanlation Version
    --group "YourFavGroup" to prefer a specific scanlation team or even teams by using --group "YourFavGroup1, YourFavGroup2".
    • Add --mix-by-upvote to pick the highest-upvoted release among your chosen groups.

  • 🔍 Debugging & Verbose Logs
    -v / --verbose for step-by-step progress.
    -d / --debug for deep image-processing insights (resizing, recombining).

  • 📦 Per-Chapter Files
    • Use --keep-chapters to save each chapter as its own PDF/EPUB/CBZ alongside the main book.


📁 Output Structure

  • Temporary Data: tmp_<hid>/
    • run_params.json: Stores the processing settings for resume functionality.
  • Final Files: comics/
    • Named <Title>[_Groups]_Ch_<start>-<end>.<format> (e.g., My_Awesome_Comic_Asura_Ch_1-5.epub)
  • Raw Images (if --keep-images is used):
    • comics/<Title>/Chapter_<n>/ (e.g., comics/My_Awesome_Comic/Chapter_1/)
tmp_<hid>/                   # Temporary workspace
└── run_params.json          # Saved settings (resume/restore)
comics/
├── <Title>[_Groups]_Ch_a-b.epub/pdf/cbz   # Final build(s)
└── <Title>/Chapter_<n>/                  # Raw images (if --keep-images)
  • Final files → comics/
  • Use --no-cleanup to inspect tmp_<hid>/ after completion
  • Re-run with --restore-parameters + new --format to reassemble without re-downloading

⚖️ Disclaimer

This tool is provided strictly for educational purposes and to help you create personal, offline backups of manga to which you have legal access. Please respect the rights of content creators and publishers—unauthorized sharing, piracy, or redistribution of material is prohibited.


🤝 Contributing

  1. Fork the repo
  2. Create a feature branch (git checkout -b feature/foo)
  3. Test your update (where possible)
    • macOS (Apple Silicon): test_scripts/python_version_tester.sh automatically spins up per-version virtualenvs after installing missing [email protected] formulae via Homebrew (pyenv is optional but supported).
    • Otherwise: run targeted unit/download tests that exercise your change.
  4. Commit (git commit -m "Add foo")
  5. Push (git push origin feature/foo)
  6. Open a Pull Request

Please follow the existing style and include tests where applicable.


🙏 Acknowledgements

This project stands on the shoulders of many wonderful open-source tools and libraries—thank you to all the maintainers and contributors who make these possible, thank you:


📄 License

This project is licensed under the GNU GPLv3.


About

The most versatile, feature-rich & customizable command-line tool to download webtoons (manhwa), manga, comics and light novels from comix.to, mangataro.org, mangafire.to, bato.to, asuracomic.net, weebcentral.com, manganato.gg & many others

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Sponsor this project

Packages

No packages published