Repository navigation
Home
ZornCoMix - formerly ZC-ComicUpdater - is two programs: ZornCoMix Updater and the Reader.
The updater (the "Comic Mirror" scripts) downloads a webcomic page by page, packs it into a .cbz, and
remembers enough to carry on where it stopped next time. Point it at a library folder and it updates every
comic in it unattended, on a timer, in a container if you like.
The problem it solves is the fifth year of updates, not the first download: a decade-old comic is a 250 MB archive, and adding this week's three pages should not mean rewriting or re-syncing 250 MB. It can also work out which file came from which page, split comics into chapter archives, adopt comics you already have, and be driven from a small web page.

| Script | What it does |
|---|---|
mirror_base.py |
Scrapes one comic, saves the pages, appends them to its .cbz, writes its metadata. |
update_comics.py |
Resumes every comic in a library from its metadata, on demand or on a schedule. |
chapters.py |
Works out which file is which page and where chapters are; packs one .cbz per chapter. |
adopt_comic.py |
Writes metadata for comics you already have, so they join without re-downloading. |
run_plugin.py |
Runs a comic another downloader scrapes, through a plugin, and takes in what it fetched. |
web_ui.py, web_page/
|
The optional web page update_comics.py --web serves. |
comiclib/ |
Shared code; not run directly, but must sit beside the scripts. |
reader/ |
A separate web reader for the library, with its own image (Reader). |
config/ |
ComicScraper.json (settings), element_paths.json (extra XPaths), index/ (page records), plugins/ (Scraper Plugins). |
- Getting started: Installation and Quick Start · Library Layout · Adopting Comics
- Running it: Running Unattended · The Web Page · Docker · Scraper Plugins
- Reading: Reader, a web reader for the library in its own container
- Archives and chapters: Archives and ComicInfo · Page Index and Alignment · Chapters
- Reference: Settings and Metadata · Element Paths · Notes and Limits · Contributing
- Home: The scripts
- Installation and Quick Start: Requirements · Quick start · Priming comics to download elsewhere
- Library Layout: Library layout
- Adopting Comics: Adopting comics you already have
- Running Unattended: Running unattended · Starting an update without waiting · Restarting without reaching the container · the exit code table
- The Web Page: The web page
- Docker: Running in Docker · Changing the scripts without rebuilding
- Archives and ComicInfo: How the archives stay cheap to sync · ComicInfo.xml
- Page Index and Alignment: Working out which file came from which page · Comics on WordPress: no walk needed · A page the comic's own links skip · A page the site itself has lost · When the names say nothing: lining up by when files were written · Numbering the files
- Chapters: Chapters · Putting a boundary right by hand · Packing · Keeping chapters current
- Settings and Metadata: Settings · The metadata file
- Element Paths: Element paths · Adding a path for a new comic · Several pages on one address
- Notes and Limits: Notes and limits
- Contributing: Running the tests · Credits and license
ZornCoMix is licensed under the PolyForm Noncommercial License 1.0.0. Based on a script by AChillVamp; see NOTICE.
Getting started
Running it
Reading
Archives and chapters
Reference