manhwa-compressor 0.1.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Jayprakash Pal
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,167 @@
1
+ Metadata-Version: 2.4
2
+ Name: manhwa-compressor
3
+ Version: 0.1.0
4
+ Summary: Ultra-Fast Manhwa & Comic Compression Engine (CBZ & PDF) with SIMD Acceleration and L3-Cache Tiling
5
+ Author-email: Jayprakash Pal <jaypal1046@gmail.com>
6
+ License-Expression: MIT
7
+ Project-URL: Homepage, https://github.com/jaypal1046/manhwa-compressor
8
+ Project-URL: Repository, https://github.com/jaypal1046/manhwa-compressor
9
+ Project-URL: Issues, https://github.com/jaypal1046/manhwa-compressor/issues
10
+ Classifier: Programming Language :: Python :: 3
11
+ Classifier: Programming Language :: Python :: 3.8
12
+ Classifier: Programming Language :: Python :: 3.9
13
+ Classifier: Programming Language :: Python :: 3.10
14
+ Classifier: Programming Language :: Python :: 3.11
15
+ Classifier: Programming Language :: Python :: 3.12
16
+ Classifier: Operating System :: OS Independent
17
+ Classifier: Topic :: Multimedia :: Graphics
18
+ Classifier: Topic :: System :: Archiving :: Compression
19
+ Requires-Python: >=3.8
20
+ Description-Content-Type: text/markdown
21
+ License-File: LICENSE
22
+ Requires-Dist: Pillow>=10.0.0
23
+ Requires-Dist: numpy>=1.24.0
24
+ Requires-Dist: opencv-python>=4.8.0
25
+ Requires-Dist: pymupdf>=1.23.0
26
+ Dynamic: license-file
27
+
28
+ # Manhwa & Comic Compressor (`manhwa-compressor`)
29
+
30
+ An ultra-high-speed, hardware-accelerated compression engine designed specifically for digital **Manhwa, Webtoons, and Comics**.
31
+
32
+ Processes raw, high-resolution continuous vertical strips ($720 \times 10,000+$ pixels) at **over 90 MB/second**, cutting file sizes by **~75% to 85%** while keeping dialogue text razor-sharp.
33
+
34
+ ---
35
+
36
+ ## โšก Key Innovations
37
+
38
+ 1. **Hardware-Accelerated C++ SIMD Engine (`simd_adaptive`):**
39
+ * Processes an entire 66,600-pixel manhwa chapter in **~0.4 seconds** (over **100 mobile panels per second**).
40
+ 2. **Adaptive Hybrid Chroma (4:4:4 Text vs. 4:2:0 Art):**
41
+ * Uses fast computer vision to detect dialogue bubbles.
42
+ * Encodes dialogue panels with **4:4:4 Full Chroma** to completely eliminate fuzzy JPEG/WebP ringing around text.
43
+ * Encodes pure action/art panels with **4:2:0 Chroma** to save an extra 15โ€“20% file size.
44
+ 3. **L3-Cache-Aware Slicing:**
45
+ * Slices continuous vertical strips into viewport tiles sized to fit **100% inside the CPU L3 Cache** (~300 GB/s bandwidth), eliminating RAM bus stalls.
46
+ 4. **Content-Aware Gutter Slicing:**
47
+ * Automatically scans for whitespace/black gutters between panels.
48
+ * Cuts **only at safe gutter centers**, ensuring character faces and dialogue bubbles are never sliced in half.
49
+ 5. **Universal Compatibility:**
50
+ * Outputs standard **`.cbz`** (supported by Mihon, Tachiyomi, CDisplayEx, Panels) and **`.pdf`** (with proper coordinate scaling for Adobe Acrobat).
51
+
52
+ ---
53
+
54
+ ## ๐Ÿš€ Installation
55
+
56
+ ```bash
57
+ # Clone the repository
58
+ git clone https://github.com/jaypal1046/manhwa-compressor.git
59
+ cd manhwa-compressor
60
+
61
+ # Install dependencies
62
+ pip install -r requirements.txt
63
+
64
+ # (Optional) Install as system-wide CLI tool:
65
+ pip install -e .
66
+ ```
67
+
68
+ ---
69
+
70
+ ## ๐Ÿ“– Usage Guide
71
+
72
+ You can run the engine directly using `compress.py` or the `manhwa-compress` command.
73
+
74
+ ### 1. Single Chapter / Files Compression
75
+ Compress an entire chapter folder or loose images into a `.cbz` archive:
76
+ ```bash
77
+ python compress.py "path/to/chapter_folder" -o "chapter.cbz"
78
+ ```
79
+
80
+ ### 2. PDF-to-PDF Re-compression (Extract -> Adaptive SIMD Compress -> Recreate PDF)
81
+ Take an existing heavy comic/manhwa PDF, extract pages, compress with Adaptive SIMD, and recreate a clean, high-efficiency PDF:
82
+ ```bash
83
+ # Squeezes heavy PDF down by 80-95% in milliseconds:
84
+ python compress.py "bloated_comic.pdf" -o "optimized_comic.pdf"
85
+
86
+ # Or convert a PDF directly into a mobile CBZ archive:
87
+ python compress.py "bloated_comic.pdf" -o "mobile_chapter.cbz"
88
+ ```
89
+
90
+ ### 3. Batch Library Compression (`--batch`)
91
+ Process an entire library of 50+ chapter subfolders or archives in one go (supports target `--format cbz` or `--format pdf`):
92
+ ```bash
93
+ # Batch compress to CBZ
94
+ python compress.py --batch "path/to/manga_library" -o "path/to/compressed_library" --format cbz
95
+
96
+ # Batch compress to PDF
97
+ python compress.py --batch "path/to/manga_library" -o "path/to/compressed_library" --format pdf
98
+ ```
99
+
100
+ ### 4. Automated Background Server Watcher (`--watch`)
101
+ Ideal for self-hosted comic servers (**Komga, Kavita, Suwayomi**) and scanlation drop-boxes. Automatically monitors an incoming folder and compresses new folders, `.zip`, `.cbz`, or `.pdf` files instantly into target format:
102
+ ```bash
103
+ python compress.py --watch "path/to/incoming_folder" -o "path/to/library_folder" --format cbz
104
+ ```
105
+
106
+ ### 5. Instant Decompression (`--decompress`)
107
+ Extract all full-resolution panels from a `.cbz` archive in milliseconds:
108
+ ```bash
109
+ python compress.py "chapter.cbz" --decompress -o "extracted_panels"
110
+ ```
111
+
112
+ ---
113
+
114
+ ## ๐ŸŽ›๏ธ Presets
115
+
116
+ | Preset | Speed | Quality | Best Used For |
117
+ | :--- | :--- | :--- | :--- |
118
+ | `simd_adaptive` *(Default)* | **~0.38s/ch** โšกโšก | Adaptive 4:4:4/4:2:0 | **Recommended:** Max speed with crisp text |
119
+ | `simd_turbo` | **~0.90s/ch** | Fixed 4:4:4 | Maximum text outline protection |
120
+ | `balanced` | ~3.5s/ch | WebP Method 3 (Q=80) | Traditional WebP mobile distribution |
121
+ | `turbo` | ~1.3s/ch | WebP Method 0 (Q=78) | Fast WebP packaging |
122
+ | `lossless` | ~1.5s/ch | 100% Exact Bit-for-Bit | Archival master copy (zero quality loss) |
123
+
124
+ ---
125
+
126
+ ## ๐Ÿ“‚ Project Structure
127
+
128
+ ```text
129
+ pdf_manwha_compress_zip/
130
+ โ”œโ”€โ”€ compress.py # Root execution runner
131
+ โ”œโ”€โ”€ pyproject.toml # PEP 621 modern build configuration
132
+ โ”œโ”€โ”€ setup.py # Setuptools packaging with CLI entry point
133
+ โ”œโ”€โ”€ requirements.txt # Dependencies (Pillow, numpy, opencv-python, pymupdf)
134
+ โ”œโ”€โ”€ README.md # Quickstart guide & documentation
135
+ โ”œโ”€โ”€ .github/workflows/ci.yml # Multi-platform GitHub Actions CI test suite
136
+ โ”œโ”€โ”€ src/
137
+ โ”‚ โ”œโ”€โ”€ cli.py # CLI & batch orchestrator
138
+ โ”‚ โ”œโ”€โ”€ watcher.py # Automated background folder watcher daemon
139
+ โ”‚ โ”œโ”€โ”€ core/
140
+ โ”‚ โ”‚ โ”œโ”€โ”€ adaptive_simd_encoder.py # L3 cache + adaptive chroma SIMD engine
141
+ โ”‚ โ”‚ โ”œโ”€โ”€ fast_encoder.py # Multi-threaded preset encoder
142
+ โ”‚ โ”‚ โ”œโ”€โ”€ gutter_detector.py # Whitespace scanner & safe slicer
143
+ โ”‚ โ”‚ โ”œโ”€โ”€ pdf_processor.py # C-speed PDF extraction and assembly
144
+ โ”‚ โ”‚ โ””โ”€โ”€ stride_filter_2d.py # 100% Lossless 2D spatial delta filter
145
+ โ”‚ โ””โ”€โ”€ packagers/
146
+ โ”‚ โ”œโ”€โ”€ cbz_packager.py # Standard CBZ builder
147
+ โ”‚ โ””โ”€โ”€ pdf_packager.py # High-efficiency PDF builder
148
+ โ”œโ”€โ”€ tests/
149
+ โ”‚ โ””โ”€โ”€ test_engine.py # Automated unit test suite
150
+ โ””โ”€โ”€ docs/ # Full research documentation
151
+ โ”œโ”€โ”€ README.md
152
+ โ”œโ”€โ”€ 01-pdf-compression-internals.md
153
+ โ”œโ”€โ”€ 02-manhwa-compression-challenges.md
154
+ โ”œโ”€โ”€ 03-storage-level-solutions.md
155
+ โ”œโ”€โ”€ 04-implementation-roadmap.md
156
+ โ”œโ”€โ”€ 05-1d-vs-2d-spatial-compression.md
157
+ โ””โ”€โ”€ 06-novel-manhwa-compression-engine.md
158
+ ```
159
+
160
+ ---
161
+
162
+ ## ๐Ÿงช Running Unit Tests
163
+
164
+ Verify mathematical lossless exactness, gutter detection, and packaging:
165
+ ```bash
166
+ python -m unittest tests/test_engine.py
167
+ ```
@@ -0,0 +1,140 @@
1
+ # Manhwa & Comic Compressor (`manhwa-compressor`)
2
+
3
+ An ultra-high-speed, hardware-accelerated compression engine designed specifically for digital **Manhwa, Webtoons, and Comics**.
4
+
5
+ Processes raw, high-resolution continuous vertical strips ($720 \times 10,000+$ pixels) at **over 90 MB/second**, cutting file sizes by **~75% to 85%** while keeping dialogue text razor-sharp.
6
+
7
+ ---
8
+
9
+ ## โšก Key Innovations
10
+
11
+ 1. **Hardware-Accelerated C++ SIMD Engine (`simd_adaptive`):**
12
+ * Processes an entire 66,600-pixel manhwa chapter in **~0.4 seconds** (over **100 mobile panels per second**).
13
+ 2. **Adaptive Hybrid Chroma (4:4:4 Text vs. 4:2:0 Art):**
14
+ * Uses fast computer vision to detect dialogue bubbles.
15
+ * Encodes dialogue panels with **4:4:4 Full Chroma** to completely eliminate fuzzy JPEG/WebP ringing around text.
16
+ * Encodes pure action/art panels with **4:2:0 Chroma** to save an extra 15โ€“20% file size.
17
+ 3. **L3-Cache-Aware Slicing:**
18
+ * Slices continuous vertical strips into viewport tiles sized to fit **100% inside the CPU L3 Cache** (~300 GB/s bandwidth), eliminating RAM bus stalls.
19
+ 4. **Content-Aware Gutter Slicing:**
20
+ * Automatically scans for whitespace/black gutters between panels.
21
+ * Cuts **only at safe gutter centers**, ensuring character faces and dialogue bubbles are never sliced in half.
22
+ 5. **Universal Compatibility:**
23
+ * Outputs standard **`.cbz`** (supported by Mihon, Tachiyomi, CDisplayEx, Panels) and **`.pdf`** (with proper coordinate scaling for Adobe Acrobat).
24
+
25
+ ---
26
+
27
+ ## ๐Ÿš€ Installation
28
+
29
+ ```bash
30
+ # Clone the repository
31
+ git clone https://github.com/jaypal1046/manhwa-compressor.git
32
+ cd manhwa-compressor
33
+
34
+ # Install dependencies
35
+ pip install -r requirements.txt
36
+
37
+ # (Optional) Install as system-wide CLI tool:
38
+ pip install -e .
39
+ ```
40
+
41
+ ---
42
+
43
+ ## ๐Ÿ“– Usage Guide
44
+
45
+ You can run the engine directly using `compress.py` or the `manhwa-compress` command.
46
+
47
+ ### 1. Single Chapter / Files Compression
48
+ Compress an entire chapter folder or loose images into a `.cbz` archive:
49
+ ```bash
50
+ python compress.py "path/to/chapter_folder" -o "chapter.cbz"
51
+ ```
52
+
53
+ ### 2. PDF-to-PDF Re-compression (Extract -> Adaptive SIMD Compress -> Recreate PDF)
54
+ Take an existing heavy comic/manhwa PDF, extract pages, compress with Adaptive SIMD, and recreate a clean, high-efficiency PDF:
55
+ ```bash
56
+ # Squeezes heavy PDF down by 80-95% in milliseconds:
57
+ python compress.py "bloated_comic.pdf" -o "optimized_comic.pdf"
58
+
59
+ # Or convert a PDF directly into a mobile CBZ archive:
60
+ python compress.py "bloated_comic.pdf" -o "mobile_chapter.cbz"
61
+ ```
62
+
63
+ ### 3. Batch Library Compression (`--batch`)
64
+ Process an entire library of 50+ chapter subfolders or archives in one go (supports target `--format cbz` or `--format pdf`):
65
+ ```bash
66
+ # Batch compress to CBZ
67
+ python compress.py --batch "path/to/manga_library" -o "path/to/compressed_library" --format cbz
68
+
69
+ # Batch compress to PDF
70
+ python compress.py --batch "path/to/manga_library" -o "path/to/compressed_library" --format pdf
71
+ ```
72
+
73
+ ### 4. Automated Background Server Watcher (`--watch`)
74
+ Ideal for self-hosted comic servers (**Komga, Kavita, Suwayomi**) and scanlation drop-boxes. Automatically monitors an incoming folder and compresses new folders, `.zip`, `.cbz`, or `.pdf` files instantly into target format:
75
+ ```bash
76
+ python compress.py --watch "path/to/incoming_folder" -o "path/to/library_folder" --format cbz
77
+ ```
78
+
79
+ ### 5. Instant Decompression (`--decompress`)
80
+ Extract all full-resolution panels from a `.cbz` archive in milliseconds:
81
+ ```bash
82
+ python compress.py "chapter.cbz" --decompress -o "extracted_panels"
83
+ ```
84
+
85
+ ---
86
+
87
+ ## ๐ŸŽ›๏ธ Presets
88
+
89
+ | Preset | Speed | Quality | Best Used For |
90
+ | :--- | :--- | :--- | :--- |
91
+ | `simd_adaptive` *(Default)* | **~0.38s/ch** โšกโšก | Adaptive 4:4:4/4:2:0 | **Recommended:** Max speed with crisp text |
92
+ | `simd_turbo` | **~0.90s/ch** | Fixed 4:4:4 | Maximum text outline protection |
93
+ | `balanced` | ~3.5s/ch | WebP Method 3 (Q=80) | Traditional WebP mobile distribution |
94
+ | `turbo` | ~1.3s/ch | WebP Method 0 (Q=78) | Fast WebP packaging |
95
+ | `lossless` | ~1.5s/ch | 100% Exact Bit-for-Bit | Archival master copy (zero quality loss) |
96
+
97
+ ---
98
+
99
+ ## ๐Ÿ“‚ Project Structure
100
+
101
+ ```text
102
+ pdf_manwha_compress_zip/
103
+ โ”œโ”€โ”€ compress.py # Root execution runner
104
+ โ”œโ”€โ”€ pyproject.toml # PEP 621 modern build configuration
105
+ โ”œโ”€โ”€ setup.py # Setuptools packaging with CLI entry point
106
+ โ”œโ”€โ”€ requirements.txt # Dependencies (Pillow, numpy, opencv-python, pymupdf)
107
+ โ”œโ”€โ”€ README.md # Quickstart guide & documentation
108
+ โ”œโ”€โ”€ .github/workflows/ci.yml # Multi-platform GitHub Actions CI test suite
109
+ โ”œโ”€โ”€ src/
110
+ โ”‚ โ”œโ”€โ”€ cli.py # CLI & batch orchestrator
111
+ โ”‚ โ”œโ”€โ”€ watcher.py # Automated background folder watcher daemon
112
+ โ”‚ โ”œโ”€โ”€ core/
113
+ โ”‚ โ”‚ โ”œโ”€โ”€ adaptive_simd_encoder.py # L3 cache + adaptive chroma SIMD engine
114
+ โ”‚ โ”‚ โ”œโ”€โ”€ fast_encoder.py # Multi-threaded preset encoder
115
+ โ”‚ โ”‚ โ”œโ”€โ”€ gutter_detector.py # Whitespace scanner & safe slicer
116
+ โ”‚ โ”‚ โ”œโ”€โ”€ pdf_processor.py # C-speed PDF extraction and assembly
117
+ โ”‚ โ”‚ โ””โ”€โ”€ stride_filter_2d.py # 100% Lossless 2D spatial delta filter
118
+ โ”‚ โ””โ”€โ”€ packagers/
119
+ โ”‚ โ”œโ”€โ”€ cbz_packager.py # Standard CBZ builder
120
+ โ”‚ โ””โ”€โ”€ pdf_packager.py # High-efficiency PDF builder
121
+ โ”œโ”€โ”€ tests/
122
+ โ”‚ โ””โ”€โ”€ test_engine.py # Automated unit test suite
123
+ โ””โ”€โ”€ docs/ # Full research documentation
124
+ โ”œโ”€โ”€ README.md
125
+ โ”œโ”€โ”€ 01-pdf-compression-internals.md
126
+ โ”œโ”€โ”€ 02-manhwa-compression-challenges.md
127
+ โ”œโ”€โ”€ 03-storage-level-solutions.md
128
+ โ”œโ”€โ”€ 04-implementation-roadmap.md
129
+ โ”œโ”€โ”€ 05-1d-vs-2d-spatial-compression.md
130
+ โ””โ”€โ”€ 06-novel-manhwa-compression-engine.md
131
+ ```
132
+
133
+ ---
134
+
135
+ ## ๐Ÿงช Running Unit Tests
136
+
137
+ Verify mathematical lossless exactness, gutter detection, and packaging:
138
+ ```bash
139
+ python -m unittest tests/test_engine.py
140
+ ```
@@ -0,0 +1,167 @@
1
+ Metadata-Version: 2.4
2
+ Name: manhwa-compressor
3
+ Version: 0.1.0
4
+ Summary: Ultra-Fast Manhwa & Comic Compression Engine (CBZ & PDF) with SIMD Acceleration and L3-Cache Tiling
5
+ Author-email: Jayprakash Pal <jaypal1046@gmail.com>
6
+ License-Expression: MIT
7
+ Project-URL: Homepage, https://github.com/jaypal1046/manhwa-compressor
8
+ Project-URL: Repository, https://github.com/jaypal1046/manhwa-compressor
9
+ Project-URL: Issues, https://github.com/jaypal1046/manhwa-compressor/issues
10
+ Classifier: Programming Language :: Python :: 3
11
+ Classifier: Programming Language :: Python :: 3.8
12
+ Classifier: Programming Language :: Python :: 3.9
13
+ Classifier: Programming Language :: Python :: 3.10
14
+ Classifier: Programming Language :: Python :: 3.11
15
+ Classifier: Programming Language :: Python :: 3.12
16
+ Classifier: Operating System :: OS Independent
17
+ Classifier: Topic :: Multimedia :: Graphics
18
+ Classifier: Topic :: System :: Archiving :: Compression
19
+ Requires-Python: >=3.8
20
+ Description-Content-Type: text/markdown
21
+ License-File: LICENSE
22
+ Requires-Dist: Pillow>=10.0.0
23
+ Requires-Dist: numpy>=1.24.0
24
+ Requires-Dist: opencv-python>=4.8.0
25
+ Requires-Dist: pymupdf>=1.23.0
26
+ Dynamic: license-file
27
+
28
+ # Manhwa & Comic Compressor (`manhwa-compressor`)
29
+
30
+ An ultra-high-speed, hardware-accelerated compression engine designed specifically for digital **Manhwa, Webtoons, and Comics**.
31
+
32
+ Processes raw, high-resolution continuous vertical strips ($720 \times 10,000+$ pixels) at **over 90 MB/second**, cutting file sizes by **~75% to 85%** while keeping dialogue text razor-sharp.
33
+
34
+ ---
35
+
36
+ ## โšก Key Innovations
37
+
38
+ 1. **Hardware-Accelerated C++ SIMD Engine (`simd_adaptive`):**
39
+ * Processes an entire 66,600-pixel manhwa chapter in **~0.4 seconds** (over **100 mobile panels per second**).
40
+ 2. **Adaptive Hybrid Chroma (4:4:4 Text vs. 4:2:0 Art):**
41
+ * Uses fast computer vision to detect dialogue bubbles.
42
+ * Encodes dialogue panels with **4:4:4 Full Chroma** to completely eliminate fuzzy JPEG/WebP ringing around text.
43
+ * Encodes pure action/art panels with **4:2:0 Chroma** to save an extra 15โ€“20% file size.
44
+ 3. **L3-Cache-Aware Slicing:**
45
+ * Slices continuous vertical strips into viewport tiles sized to fit **100% inside the CPU L3 Cache** (~300 GB/s bandwidth), eliminating RAM bus stalls.
46
+ 4. **Content-Aware Gutter Slicing:**
47
+ * Automatically scans for whitespace/black gutters between panels.
48
+ * Cuts **only at safe gutter centers**, ensuring character faces and dialogue bubbles are never sliced in half.
49
+ 5. **Universal Compatibility:**
50
+ * Outputs standard **`.cbz`** (supported by Mihon, Tachiyomi, CDisplayEx, Panels) and **`.pdf`** (with proper coordinate scaling for Adobe Acrobat).
51
+
52
+ ---
53
+
54
+ ## ๐Ÿš€ Installation
55
+
56
+ ```bash
57
+ # Clone the repository
58
+ git clone https://github.com/jaypal1046/manhwa-compressor.git
59
+ cd manhwa-compressor
60
+
61
+ # Install dependencies
62
+ pip install -r requirements.txt
63
+
64
+ # (Optional) Install as system-wide CLI tool:
65
+ pip install -e .
66
+ ```
67
+
68
+ ---
69
+
70
+ ## ๐Ÿ“– Usage Guide
71
+
72
+ You can run the engine directly using `compress.py` or the `manhwa-compress` command.
73
+
74
+ ### 1. Single Chapter / Files Compression
75
+ Compress an entire chapter folder or loose images into a `.cbz` archive:
76
+ ```bash
77
+ python compress.py "path/to/chapter_folder" -o "chapter.cbz"
78
+ ```
79
+
80
+ ### 2. PDF-to-PDF Re-compression (Extract -> Adaptive SIMD Compress -> Recreate PDF)
81
+ Take an existing heavy comic/manhwa PDF, extract pages, compress with Adaptive SIMD, and recreate a clean, high-efficiency PDF:
82
+ ```bash
83
+ # Squeezes heavy PDF down by 80-95% in milliseconds:
84
+ python compress.py "bloated_comic.pdf" -o "optimized_comic.pdf"
85
+
86
+ # Or convert a PDF directly into a mobile CBZ archive:
87
+ python compress.py "bloated_comic.pdf" -o "mobile_chapter.cbz"
88
+ ```
89
+
90
+ ### 3. Batch Library Compression (`--batch`)
91
+ Process an entire library of 50+ chapter subfolders or archives in one go (supports target `--format cbz` or `--format pdf`):
92
+ ```bash
93
+ # Batch compress to CBZ
94
+ python compress.py --batch "path/to/manga_library" -o "path/to/compressed_library" --format cbz
95
+
96
+ # Batch compress to PDF
97
+ python compress.py --batch "path/to/manga_library" -o "path/to/compressed_library" --format pdf
98
+ ```
99
+
100
+ ### 4. Automated Background Server Watcher (`--watch`)
101
+ Ideal for self-hosted comic servers (**Komga, Kavita, Suwayomi**) and scanlation drop-boxes. Automatically monitors an incoming folder and compresses new folders, `.zip`, `.cbz`, or `.pdf` files instantly into target format:
102
+ ```bash
103
+ python compress.py --watch "path/to/incoming_folder" -o "path/to/library_folder" --format cbz
104
+ ```
105
+
106
+ ### 5. Instant Decompression (`--decompress`)
107
+ Extract all full-resolution panels from a `.cbz` archive in milliseconds:
108
+ ```bash
109
+ python compress.py "chapter.cbz" --decompress -o "extracted_panels"
110
+ ```
111
+
112
+ ---
113
+
114
+ ## ๐ŸŽ›๏ธ Presets
115
+
116
+ | Preset | Speed | Quality | Best Used For |
117
+ | :--- | :--- | :--- | :--- |
118
+ | `simd_adaptive` *(Default)* | **~0.38s/ch** โšกโšก | Adaptive 4:4:4/4:2:0 | **Recommended:** Max speed with crisp text |
119
+ | `simd_turbo` | **~0.90s/ch** | Fixed 4:4:4 | Maximum text outline protection |
120
+ | `balanced` | ~3.5s/ch | WebP Method 3 (Q=80) | Traditional WebP mobile distribution |
121
+ | `turbo` | ~1.3s/ch | WebP Method 0 (Q=78) | Fast WebP packaging |
122
+ | `lossless` | ~1.5s/ch | 100% Exact Bit-for-Bit | Archival master copy (zero quality loss) |
123
+
124
+ ---
125
+
126
+ ## ๐Ÿ“‚ Project Structure
127
+
128
+ ```text
129
+ pdf_manwha_compress_zip/
130
+ โ”œโ”€โ”€ compress.py # Root execution runner
131
+ โ”œโ”€โ”€ pyproject.toml # PEP 621 modern build configuration
132
+ โ”œโ”€โ”€ setup.py # Setuptools packaging with CLI entry point
133
+ โ”œโ”€โ”€ requirements.txt # Dependencies (Pillow, numpy, opencv-python, pymupdf)
134
+ โ”œโ”€โ”€ README.md # Quickstart guide & documentation
135
+ โ”œโ”€โ”€ .github/workflows/ci.yml # Multi-platform GitHub Actions CI test suite
136
+ โ”œโ”€โ”€ src/
137
+ โ”‚ โ”œโ”€โ”€ cli.py # CLI & batch orchestrator
138
+ โ”‚ โ”œโ”€โ”€ watcher.py # Automated background folder watcher daemon
139
+ โ”‚ โ”œโ”€โ”€ core/
140
+ โ”‚ โ”‚ โ”œโ”€โ”€ adaptive_simd_encoder.py # L3 cache + adaptive chroma SIMD engine
141
+ โ”‚ โ”‚ โ”œโ”€โ”€ fast_encoder.py # Multi-threaded preset encoder
142
+ โ”‚ โ”‚ โ”œโ”€โ”€ gutter_detector.py # Whitespace scanner & safe slicer
143
+ โ”‚ โ”‚ โ”œโ”€โ”€ pdf_processor.py # C-speed PDF extraction and assembly
144
+ โ”‚ โ”‚ โ””โ”€โ”€ stride_filter_2d.py # 100% Lossless 2D spatial delta filter
145
+ โ”‚ โ””โ”€โ”€ packagers/
146
+ โ”‚ โ”œโ”€โ”€ cbz_packager.py # Standard CBZ builder
147
+ โ”‚ โ””โ”€โ”€ pdf_packager.py # High-efficiency PDF builder
148
+ โ”œโ”€โ”€ tests/
149
+ โ”‚ โ””โ”€โ”€ test_engine.py # Automated unit test suite
150
+ โ””โ”€โ”€ docs/ # Full research documentation
151
+ โ”œโ”€โ”€ README.md
152
+ โ”œโ”€โ”€ 01-pdf-compression-internals.md
153
+ โ”œโ”€โ”€ 02-manhwa-compression-challenges.md
154
+ โ”œโ”€โ”€ 03-storage-level-solutions.md
155
+ โ”œโ”€โ”€ 04-implementation-roadmap.md
156
+ โ”œโ”€โ”€ 05-1d-vs-2d-spatial-compression.md
157
+ โ””โ”€โ”€ 06-novel-manhwa-compression-engine.md
158
+ ```
159
+
160
+ ---
161
+
162
+ ## ๐Ÿงช Running Unit Tests
163
+
164
+ Verify mathematical lossless exactness, gutter detection, and packaging:
165
+ ```bash
166
+ python -m unittest tests/test_engine.py
167
+ ```
@@ -0,0 +1,23 @@
1
+ LICENSE
2
+ README.md
3
+ pyproject.toml
4
+ setup.py
5
+ manhwa_compressor.egg-info/PKG-INFO
6
+ manhwa_compressor.egg-info/SOURCES.txt
7
+ manhwa_compressor.egg-info/dependency_links.txt
8
+ manhwa_compressor.egg-info/entry_points.txt
9
+ manhwa_compressor.egg-info/requires.txt
10
+ manhwa_compressor.egg-info/top_level.txt
11
+ src/__init__.py
12
+ src/cli.py
13
+ src/watcher.py
14
+ src/core/__init__.py
15
+ src/core/adaptive_simd_encoder.py
16
+ src/core/fast_encoder.py
17
+ src/core/gutter_detector.py
18
+ src/core/pdf_processor.py
19
+ src/core/stride_filter_2d.py
20
+ src/packagers/__init__.py
21
+ src/packagers/cbz_packager.py
22
+ src/packagers/pdf_packager.py
23
+ tests/test_engine.py
@@ -0,0 +1,2 @@
1
+ [console_scripts]
2
+ manhwa-compress = src.cli:main
@@ -0,0 +1,4 @@
1
+ Pillow>=10.0.0
2
+ numpy>=1.24.0
3
+ opencv-python>=4.8.0
4
+ pymupdf>=1.23.0
@@ -0,0 +1,43 @@
1
+ [build-system]
2
+ requires = ["setuptools>=61.0.0", "wheel"]
3
+ build-backend = "setuptools.build_meta"
4
+
5
+ [project]
6
+ name = "manhwa-compressor"
7
+ version = "0.1.0"
8
+ description = "Ultra-Fast Manhwa & Comic Compression Engine (CBZ & PDF) with SIMD Acceleration and L3-Cache Tiling"
9
+ readme = "README.md"
10
+ authors = [
11
+ { name = "Jayprakash Pal", email = "jaypal1046@gmail.com" }
12
+ ]
13
+ license = "MIT"
14
+ classifiers = [
15
+ "Programming Language :: Python :: 3",
16
+ "Programming Language :: Python :: 3.8",
17
+ "Programming Language :: Python :: 3.9",
18
+ "Programming Language :: Python :: 3.10",
19
+ "Programming Language :: Python :: 3.11",
20
+ "Programming Language :: Python :: 3.12",
21
+ "Operating System :: OS Independent",
22
+ "Topic :: Multimedia :: Graphics",
23
+ "Topic :: System :: Archiving :: Compression"
24
+ ]
25
+ requires-python = ">=3.8"
26
+ dependencies = [
27
+ "Pillow>=10.0.0",
28
+ "numpy>=1.24.0",
29
+ "opencv-python>=4.8.0",
30
+ "pymupdf>=1.23.0"
31
+ ]
32
+
33
+ [project.urls]
34
+ Homepage = "https://github.com/jaypal1046/manhwa-compressor"
35
+ Repository = "https://github.com/jaypal1046/manhwa-compressor"
36
+ Issues = "https://github.com/jaypal1046/manhwa-compressor/issues"
37
+
38
+ [project.scripts]
39
+ manhwa-compress = "src.cli:main"
40
+
41
+ [tool.setuptools.packages.find]
42
+ where = ["."]
43
+ include = ["src*"]
@@ -0,0 +1,4 @@
1
+ [egg_info]
2
+ tag_build =
3
+ tag_date = 0
4
+
@@ -0,0 +1,4 @@
1
+ from setuptools import setup
2
+
3
+ setup()
4
+
@@ -0,0 +1,3 @@
1
+ """Fast Manhwa & Comic Compression Engine"""
2
+ __version__ = "0.1.0"
3
+