Important
comick.io seems to have been shutdown. Once a new platform establishes itself I will rewrite this project for said platform, thank you for your support everybody!
The most versatile, feature-rich & customizable command-line tool to download webtoons (manhwa), comics and manga from comick.io and package them into PDF, EPUB, or CBZβwith intelligent image processing, resumable downloads, scanlation group prioritization, and optional chapter/file-size splitting.
- π Features
- π οΈ Requirements
- π§° Installation
- π Usage
- βοΈ Options
- π Cookie Setup
- π Examples
- π‘ Tips & Tricks
- π Output Structure
- βοΈ Disclaimer
- π€ Contributing
- π Acknowledgements
- π License
- π₯ 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. - πΌοΈ Image Processing
Resize, scale, recombine, and compress images for optimal reading. - π« 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. - π 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.
- 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
- Building Pillow from source may require system libraries. If you see build errors,
install via Homebrew:
Feature support by Python version
- Legend:
- β Supported
β οΈ Supported with caveats (see notes)- β Not supported
| Python | 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.
git clone https://github.com/zzyil/comick.io-Downloader.git
cd comick.io-Downloader
python3 -m pip install -r requirements.txtpython3 comick_downloader.py [OPTIONS] COMIC_URLRun python3 comick_downloader.py --help for the full option list.
| Option | Description | Default |
|---|---|---|
COMIC_URL |
URL of the comicβs main page (e.g. https://comick.io/comic/demo-comic) |
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 |
If authentication is required, export your cookies:
export COOKIES='ads_provider2="β¦"; membership_alert=true; β¦'Then run:
python3 comick_downloader.py --cookies "$COOKIES" \
"https://comick.io/comic/your-comic-url"-
Page-layout EPUB, chapters 1β2, preferred group Asura, verbose:
python3 comick_downloader.py \ --cookies "$COOKIES" \ --group Asura \ --chapters "1-2" \ --format epub \ --epub-layout page \ --verbose \ "https://comick.io/comic/demo-comic"
-
Vertical EPUB, chapters 1β20, split every 5 chapters, verbose & debug:
python3 comick_downloader.py \ --group Asura \ --chapters "1-20" \ --format epub \ --epub-layout vertical \ --split 5ch \ --verbose --debug \ "https://comick.io/comic/demo-comic"
-
CBZ, chapters 1β2, one chapter per file:
python3 comick_downloader.py \ --group Asura \ --chapters "1-2" \ --format cbz \ --split 1ch \ "https://comick.io/comic/demo-comic"
-
PDF, chapters 1β2, save each chapter separately:
python3 comick_downloader.py \ --group Asura \ --chapters "1-2" \ --format pdf \ --keep-chapters \ "https://comick.io/comic/demo-comic"
-
Raw CBZ, chapters 1β50 (no resizing/recombining/scaling):
python3 comick_downloader.py \ --chapters "1-50" \ --format cbz \ --no-processing \ "https://comick.io/comic/demo-comic"
-
Raw EPUB (pages copied as-is):
python3 comick_downloader.py \ --format epub \ --no-processing \ "https://comick.io/comic/demo-comic"
Here are some handy pointers to get the most out of your workflow:
-
π Ongoing Series Updates
β’ Use--no-cleanupto 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-parametersto restore input parameters to exactly match the previous one. -
ποΈ Archiving Originals
β’ Add--keep-imagesto save every raw page undercomics/<Title>/Chapter_<n>/.
β’ Useful if you want to re-process images later (different layout, quality, etc.). -
π§Ύ Raw Packaging (No Processing)
β’ Use--no-processingto 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-chaptersto 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-partialsto 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 60to drop JPEG quality for smaller files.
β’--scaling 80to downscale pages to 80% of the original processed size.
β’ Combine with--splitto 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-upvoteto pick the highest-upvoted release among your chosen groups. -
π Debugging & Verbose Logs
β’-v/--verbosefor step-by-step progress.
β’-d/--debugfor deep image-processing insights (resizing, recombining). -
π¦ Per-Chapter Files
β’ Use--keep-chaptersto save each chapter as its own PDF/EPUB/CBZ alongside the main book.
- 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)
- Named
- Raw Images (if
--keep-imagesis 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-cleanupto inspecttmp_<hid>/after completion - Re-run with
--restore-parameters+ new--formatto reassemble without re-downloading
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.
- Fork the repo
- Create a feature branch (
git checkout -b feature/foo) - Test your update with
/test_scripts/python_version_tester.sh - Commit (
git commit -m "Add foo") - Push (
git push origin feature/foo) - Open a Pull Request
Please follow the existing style and include tests where applicable.
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:
- Python (CPython) β The language powering this script
- requests (psf/requests) β HTTP for Humans
- cloudscraper (VeNoMouS/cloudscraper) β Seamless Cloudflare anti-bot bypass
- Beautiful Soup (BeautifulSoup) β HTML/XML parsing made easy
- lxml (lxml/lxml) β Fast, feature-rich XML/HTML processing
- Pillow (python-pillow/Pillow) β The friendly PIL fork for image manipulation
- pypdf (py-pdf/pypdf) β PDF generation and manipulation
This project is licensed under the GNU GPLv3.
