Skip to main content

comicpy

Tool to create CBR or CBZ files.

Extracts images from PDF, ZIP, CBR files, generating comic files respecting their original order.

[!Important]

The original files are not altered.

Features

  • Convert PDF file to CBR or CBZ files (by default).
  • Convert RAR files to CBR files.
  • Convert ZIP files to CBZ files.
  • Scan in given directory and filter PDF, ZIP, RAR files depending on the given extension, convert them into CBR or CBZ files, generating individual files or consolidated into one.
  • Scan in the given directory and filter CBR, CBZ files allowing to merge them all into one.
  • Extract CBR or CBZ files from RAR or ZIP archives.
  • Support for password protected RAR or ZIP archives.
  • Convert image directories (jpeg, png, jpg) to CBR or CBZ files.

[!Important]

  1. For full operation of comicpy when using RAR files, you must have available the rar command, download and install it from the official site, rarlab - rar/unrar command.
  1. Some PDF files contain multiple images on the same page, which may be repeated within the same file; converting the PDF file will remove all duplicate images. This is due to the original construction and layout of the source PDF file. Therefore, as a result, there may be fewer or more pages compared to the original PDF file, this does not necessarily indicate that the work of this tool (comicpy) is flawed or faulty.

Any problem, suggestion, doubt, leave it in Issues of the repository.

Installation

pip install comicpy

Usage

CLI - usage

Command help.

$ comicpy -h

File usage

Command Description
--type f File.
-p PATH, --path PATH Path of file.
-c {rar,zip}, --compressor {rar,zip} Type of compressor to use. Default is "zip".
--check Check the CBR or CBZ files created.
-u {b,kb,mb,gb}, --unit {b,kb,mb,gb} Unit of measure of data size. Default is "mb".
--password PASSWORD Password of file protected.
--resize {preserve,small,medium,large} Resize images.
--progress Shows file in progress.
--version Show comicpy version
$ comicpy --type f -p file.pdf -u kb --check
$
$ comicpy --type f -p file.rar --check
$
$ comicpy --type f -p file.zip --password PASS --check
$
$ comicpy --type f -p file.rar --resize small --check

Directory usage

Command Description
--type d Directory.
-p PATH, --path PATH Path of directory.
--filter {pdf,rar,zip,cbr,cbz,images} Filter files on directory. Default is "zip".
-c {rar,zip}, --compressor {rar,zip} Type of compressor to use. Default is "zip".
--check Check the CBR or CBZ files created.
--join Join or does not files thath are in the directory. Default is "False".
-u {b,kb,mb,gb}, --unit {b,kb,mb,gb} Unit of measure of data size. Default is "mb".
--password PASSWORD Password of file protected.
--resize {preserve,small,medium,large} Resize images.
--progress Shows file in progress.
--version Show comicpy version
$ comicpy --type d -p rars_dir --filter rar -c rar --join -o prefix_final_ --password PASS --check
$
$ for i in $(ls -d Zip_Dir_*/); do
> comicpy --type d -p "$i" --filter zip -c zip -o ${i: 0:-1} --join --check
> done
$
$ comicpy --type d -p rars_dir --filter rar -c rar --join -o prefix_final_ --password PASS --resize preserve --check
$
$ comicpy --type d -p Comic_vol1/ --compress zip --filter images --progress --join --check

Development - usage

path='.' parameter indicates that files will be written by default to the current directory. It can be changed.

Single PDF, RAR, ZIP file -> CBZ or CBR

>>> from comicpy import ComicPy
>>>
>>> file = "fileComic.pdf"
>>>
>>> comic = ComicPy(unit='mb')
>>>
>>> metadata = comic.process_pdf(
...             filename=file,
...             compressor='zip'
...         )
>>>
>>> print(metadata)
[{'name': './Converted_comicpy/fileComic/fileComic.cbz', 'size': '193.24 MB'}]
>>>
>>> comic.check_integrity(filename=metadata[0]['name'])
File "fileComic.cbz" is valid?:  "True"
True
>>>

Directory with PDFs, RARs, ZIPs files -> CBZ or CBR

The join parameter indicates whether all found files are merged or treated as individual files.

  • Example, directory with RAR files - join=False
>>> from comicpy import ComicPy
>>>
>>> dir = 'ComicVol1'
>>>
>>> comic = ComicPy(unit='GB')
>>>
>>> metadata = comic.process_dir(
...     directory_path=dir,
...     extension_filter='rar',
...     compressor='rar',
...     password=None,
...     join=False
... )

>>> print(metadata)
[{'name': './Converted_comicpy/ComicVol1/chapter_1.cbr', 'size': '0.03 GB'}, {'name': './Converted_comicpy/ComicVol1/chapter_2.cbr', 'size': '0.02 GB'}]
>>>
>>>
>>> for item in metadata:
...     comic.check_integrity(
...             filename=item['name'],
...             show=True
...     )
...
File "chapter_1.cbr" is valid?:  "True"
True
File "chapter_2.cbr" is valid?:  "True"
True
>>>
  • Example, directory with RAR files - join=True
>>> from comicpy import ComicPy
>>>
>>> dir = 'ComicVol1'
>>>
>>> comic = ComicPy(unit='GB')
>>>
>>> metadata = comic.process_dir(
...     directory_path=dir,
...     extension_filter='rar',
...     compressor='rar',
...     password=None,
...     join=True
... )
>>>
>>> print(metadata)
[{'name': './Converted_comicpy/ComicVol1/chapter_1.cbr', 'size': '0.09 GB'}]
>>>
>>> for item in metadata:
...     comic.check_integrity(
...             filename=item['name'],
...             show=True
...     )
...
File "chapter_1.cbr" is valid?:  "True"
True
>>>

Cloning, preparing the environment and running the tests

Linux environment.

git clone https://github.com/kurotom/comicpy.git

cd comicpy

poetry shell

poetry install

./run_tests.sh

Release files for comicpy 0.1.42

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for comicpy 0.1.42
File Size Uploaded
comicpy-0.1.42.tar.gz 492.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for comicpy 0.1.42
File Interpreter ABI Platform
comicpy-0.1.42-py3-none-any.whl Python 3 none any Details

Total release size: 996.2 kB

Release files / comicpy-0.1.42.tar.gz

Download URL comicpy-0.1.42.tar.gz
Size 492.8 kB
Tags Source
SHA-256 checksum
How to use checksums
8932dc0a7cf2ab063a570c4e8b3eeb8050afab9d873dfdbff036c3e1bc1b4e59
BLAKE2b-256 checksum
How to use checksums
c2c3ab9a6c389bd619ca709155b716699f7db8733889fdef8c5eadb9e8be4710
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/2.2.1 CPython/3.12.5 Linux/6.11.0-1018-azure

Release files / comicpy-0.1.42-py3-none-any.whl

Download URL comicpy-0.1.42-py3-none-any.whl
Size 503.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
1d6e7dfb6f386fef7d84cb200066d14aee901bee42e1d1254e40a7b86ba48392
BLAKE2b-256 checksum
How to use checksums
0f0345e5974b892e5e8c66ca429bb3d49a34d3542258de8a2f07a96fc82f29f6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/2.2.1 CPython/3.12.5 Linux/6.11.0-1018-azure

Release history Release notifications | RSS feed

This release

0.1.42 This release

2 release files

0.1.41

2 release files

0.1.33

2 release files

0.1.23

2 release files

0.1.22

2 release files

0.1.21

2 release files

0.1.20

2 release files

0.1.19

2 release files

0.1.18

2 release files

0.1.17

2 release files

0.1.11

2 release files

0.1.10

2 release files

0.1.9

2 release files

0.1.8

2 release files

0.1.7

2 release files

0.1.6

2 release files

0.1.5

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page