2026-01-29 17:25:59 +01:00
2026-01-29 17:23:01 +01:00
2026-01-29 17:23:01 +01:00
2026-01-29 17:23:01 +01:00
2026-01-29 17:23:01 +01:00
2026-01-29 17:19:25 +01:00
2026-01-29 17:23:01 +01:00
2026-01-29 17:23:01 +01:00
2026-01-29 17:27:21 +01:00

ComicRack Metadata Sync

A high-performance metadata sync plugin for ComicRack Community Edition that writes ComicInfo.xml directly to your CBZ files.

Why This Exists

ComicRack stores metadata in its internal database (ComicDB.xml) and writes some of it to ComicInfo.xml inside CBZ files. However, CR doesn't export everything (like custom fields), and its built-in export is slow.

This plugin solves both problems:

  1. Exports all metadata including custom values using an extended ComicInfo.xml schema
  2. Uses multi-threaded processing that's significantly faster than CR's native export

CR's built-in "Write Info to File":

  • Processes files sequentially (one at a time)
  • Makes CR sluggish while running
  • Does not write all info to file

This plugin:

  • Multi-threaded processing (4 parallel workers)
  • Non-blocking - ComicRack stays responsive
  • Progress bar with elapsed timer
  • Skips unchanged files automatically
  • Writes to SSD temp first, then copies to destination (faster for USB/HDD storage)

Features

  • Export - Write CR metadata to CBZ files as ComicInfo.xml
  • Import - Read ComicInfo.xml from CBZ files into CR (for migrating from other apps)
  • Smart Skip - Automatically skips files where ComicInfo.xml is already identical
  • Streaming I/O - Memory-efficient, handles large CBZ files without loading into RAM
  • Cross-drive Support - Builds new CBZ on local temp (SSD), then copies to storage drive (HDD/USB)
  • Status Tracking - Clears CR's "Modified Info" flag after successful sync

Requirements

  • ComicRack Community Edition
  • Python 3.10+

Installation

  1. Download the Release files from the repository.
  2. Install into ComicRack's script folder: %APPDATA%\cYo\ComicRack Community Edition\Scripts\CompleteMetadata\
  3. Ensure Python 3.10+ is installed and accessible via pythonw.exe in your PATH.
  4. Restart ComicRack
  5. The toolbar buttons should appear in the ComicRack UI.

Usage

Exporting (CR to CBZ)

  1. Select the books you want to export
  2. Click "Sync: Export to CBZ" (or right-click menu)
  3. A progress window appears - click Start
  4. Wait for completion
  5. Back in CR, with the same books selected, click "Sync: Apply Status"
    • This marks books as synced and clears the "Modified Info" flag

Importing (CBZ to CR)

  1. Select the books you want to import metadata for
  2. Click "Sync: Read from CBZ"
  3. Wait for completion
  4. Click "Sync: Apply Status" to write the metadata into CR's database

Apply

Sync: Apply Status looks for sync_results.json to import into CR. This file will have information about which comics had their information exported or which comics has information to import.

Files

File Description
Package.py ComicRack plugin (IronPython) - handles UI and CR integration
cr_sync_worker.py Python 3 worker - does the actual CBZ processing
sync_results.json Temporary results file (auto-deleted after apply)
sync_errors.log Error log for failed files
sync.lock Lock file to prevent applying while sync is running

Technical Details

  • Uses shutil.copyfileobj() instead of zin.read() which would load entire images into RAM
  • Writes to tempfile.NamedTemporaryFile() (usually on SSD), then shutil.move() to destination. Huge help for slow USB/HDD storage.
  • Uses uncompressed storage since CBZ images are already JPEG/PNG compressed - no point recompressing
  • Generates the XML first, then compares with existing ComicInfo.xml. If identical, skips the entire archive rewrite.
  • Tkinter progress window runs on the main thread while workers run in background.
  • Uses shutil.move() which handles cross-drive moves.

ComicInfo.xml Schema

Based on the Anansi v2.0 schema with extensions:

  • All standard metadata fields (Series, Title, Writer, etc.)
  • Page information with dimensions and types
  • <CustomValues> section - Exports CR's custom fields
  • <HasBeenRead> - Read status as a standard element

Troubleshooting

"Sync is still in progress" The worker is still running. Wait for it to finish, or delete sync.lock if it crashed.

Description
A high-performance metadata sync plugin for ComicRack Community Edition that writes ComicInfo.xml directly to your CBZ files.
Readme MIT 45 KiB
Release 1.0 Latest
2026-01-29 17:30:50 +01:00
Languages
Python 100%