Skip to main content

Tool to create CBR or CBZ files, supports PDF, ZIP, RAR files.

Project description

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.
--motorPDF {pypdf} PDF library to use.
-c {rar,zip}, --compressor {rar,zip} Type of compressor to use.
--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.
$ comicpy --type f -p file.PDF --check -u kb
$
$ comicpy --type f -p file.rar --check
$
$ comicpy --type f -p file.zip --check --password PASS
$
$ comicpy --type f -p file.rar --check --resize small

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".
--motorPDF {pypdf} PDF library to use.
-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.
$ comicpy --type d -p rars_dir --filter rar -c rar --check --join -o prefix_final_ --password PASS
$ for i in $(ls -d Zip_Dir_*/); do
> comicpy --type d -p "$i" --filter zip -c zip --check -o ${i: 0:-1} --join
> done
$ comicpy --type d -p rars_dir --filter rar -c rar --check --join -o prefix_final_ --password PASS --resize preserve
$ comicpy --type d -p Comic_vol1/ --compress zip --filter images --check --progress --join

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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

comicpy-0.1.40.tar.gz (492.9 kB view details)

Uploaded Source

Built Distribution

comicpy-0.1.40-py3-none-any.whl (503.5 kB view details)

Uploaded Python 3

File details

Details for the file comicpy-0.1.40.tar.gz.

File metadata

  • Download URL: comicpy-0.1.40.tar.gz
  • Upload date:
  • Size: 492.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.1.1 CPython/3.12.5 Linux/6.8.0-1021-azure

File hashes

Hashes for comicpy-0.1.40.tar.gz
Algorithm Hash digest
SHA256 d262c0b5233771277544085af3ace59b0a5c94f58be24689e164eb8fd2fbac68
MD5 c9ad219340fc34a5f2a9be854ffde886
BLAKE2b-256 2a7e1e2f4da4bd43c84e7258de634b32594b7c062317dcf256edbc1503a12321

See more details on using hashes here.

File details

Details for the file comicpy-0.1.40-py3-none-any.whl.

File metadata

  • Download URL: comicpy-0.1.40-py3-none-any.whl
  • Upload date:
  • Size: 503.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.1.1 CPython/3.12.5 Linux/6.8.0-1021-azure

File hashes

Hashes for comicpy-0.1.40-py3-none-any.whl
Algorithm Hash digest
SHA256 3a97a1acde3bff50556347474fccc68fe9bbd0bdcec6741de4d81a4687cbe8ac
MD5 93502d768df9357d02956a308112db85
BLAKE2b-256 859753d9aaf42eafdcffc74caf6979575f34cf86e0d2f734a470f5e10c317c7c

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page