go-comic-converter

command module
v2.0.0-...-c09f89d Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 5, 2023 License: MIT Imports: 7 Imported by: 0

README

go-comic-converter

Convert CBZ/CBR/Dir into EPUB for e-reader devices (Kindle Devices, ...)

My goal is to make a simple, crossplatform, and fast tool to convert comics into EPUB.

EPUB is now support by Amazon through SendToKindle, by Email or by using the App. So I've made it simple to support the size limit constraint of those services.

Features

  • Support input from zip, cbz, rar, cbr, pdf, directory
  • Support all Kindle devices and kobo
  • Support Landscape and Portrait mode
  • Customize output image quality
  • Intelligent cropping (support removing even page numbers)
  • Customize brightness and contrast
  • Auto rotate (if reader mainly read on portrait)
  • Auto split double page (for easy read on portrait)
  • Remove blank image (empty image is removed)
  • Manga or Normal mode
  • Support cover page or not (first page will be taken in that case)
  • Split EPUB size for easy upload
  • 3 sorting methods (depending on your source, you can ensure the page go in the right order)
  • Save and reuse your own perfect settings
  • Multi tasks for fast conversion

When you read the comic on a Kindle, you can customize how you read it with the Aa button:

  • Landscape / Portrait
  • Activate panel view for small device

Installation

First ensure to have a working version of GO: Installation

Then install the last version of the tool:

$ go install github.com/celogeek/go-comic-converter/v2

To force install a specific version:

# specific version
$ go install github.com/celogeek/go-comic-converter/v2@v2.4.0

# main branch
$ go install github.com/celogeek/go-comic-converter/v2@main

# specific commit
$ go install github.com/celogeek/go-comic-converter/v2@141aeae

Add GOPATH to your PATH

$ export PATH=$(go env GOPATH)/bin:$PATH

Check last version

You can check if a new version is available with:

$ go-comic-converter -version
go-comic-converter
  Path             : github.com/celogeek/go-comic-converter/v2
  Sum              : h1:qOYGRpdT4t6fPksFHHrMmg+AvKSliNL6JfNWcvLGesU=
  Version          : v2.4.0
  Available Version: v2.4.0

To install the latest version:
$ go install github.com/celogeek/go-comic-converter/v2@v2.4.0

Supported image files

The supported image files are jpeg and png from the sources.

The extensions can be: jpg, jpeg, png, webp.

The case for extensions doesn't matter.

Usage

Convert directory

Convert every supported image files found in the input directory:

$ go-comic-converter -profile KS -input ~/Download/MyComic

By default it will output: ~/Download/MyComic.epub

Convert CBZ, ZIP, CBR, RAR, PDF

Convert every supported image files found in the input directory:

$ go-comic-converter -profile KS -input ~/Download/MyComic.[CBZ,ZIP,CBR,RAR,PDF]

By default it will output: ~/Download/MyComic.epub

Convert with size limit

If you send your ePub through Amazon service, you have some size limitation:

  • Email : 50Mb (including encoding, so 40Mb for RAW file)
  • App : 50Mb
  • Website: 200Mb

You can split your file using the "-limitmb MB" option:

go-comic-converter -profile KS -input ~/Download/MyComic.[CBZ,ZIP,CBR,RAR,PDF] -limitmb 200

If you have more than 1 file the output will be:

  • ~/Download/MyComic Part 01 of 03.epub
  • ~/Download/MyComic Part 02 of 03.epub
  • ...

The ePub include as a first page:

  • Title
  • Part NUM / TOTAL

If the total is above 1, then the title of the EPUB include:

  • Title [part/total]

Dry run

If you want to preview what will be set during the convertion without running the conversion, then you can use the -dry option.

$ go-comic-converter -input ~/Downloads/mymanga.cbr -profile KS -auto -manga -limitmb 200 -dry
Go Comic Converter

Options:
    Input                     : ~/Downloads/mymanga.cbr
    Output                    : ~/Downloads/mymanga.epub
    Author                    : GO Comic Converter
    Title                     : mymanga
    Workers                   : 8
    Profile                   : KS - Kindle Scribe - 1860x2480
    ViewRatio                 : 1:1.5
    View                      : 1653x2480
    Quality                   : 85
    Crop                      : true
    CropRatio                 : 1 Left - 1 Up - 1 Right - 3 Bottom
    Brightness                : 0
    Contrast                  : 0
    AutoRotate                : true
    AutoSplitDoublePage       : true
    NoBlankImage              : true
    Manga                     : true
    HasCover                  : true
    LimitMb                   : 200 Mb
    StripFirstDirectoryFromToc: true
    SortPathMode              : path=alphanum, file=alpha

TOC:
  - mymanga
  - Chapter 1
  - Chapter 2
  - Chapter 3

Dry verbose

You can choose different way to sort path and files, depending of your source. You can preview the sorted result with the option dry-verbose associated with dry.

The option sort allow you to change the sorting order.

$ go-comic-converter -input ~/Downloads/mymanga.cbr -profile KS -auto -manga -limitmb 200 -dry -dry-verbose -sort 2
Go Comic Converter

Options:
    Input                     : ~/Downloads/mymanga.cbr
    Output                    : ~/Downloads/mymanga.epub
    Author                    : GO Comic Converter
    Title                     : mymanga
    Workers                   : 8
    Profile                   : KS - Kindle Scribe - 1860x2480
    ViewRatio                 : 1:1.5
    View                      : 1653x2480
    Quality                   : 85
    Crop                      : true
    CropRatio                 : 1 Left - 1 Up - 1 Right - 3 Bottom
    Brightness                : 0
    Contrast                  : 0
    AutoRotate                : true
    AutoSplitDoublePage       : true
    NoBlankImage              : true
    Manga                     : true
    HasCover                  : true
    LimitMb                   : 200 Mb
    StripFirstDirectoryFromToc: true
    SortPathMode              : path=alphanum, file=alphanum

TOC:
  - mymanga
  - Chapter 1
  - Chapter 2
  - Chapter 3

Cover:
  - Chapter 1
    - img1.jpg

Files:
  - Chapter 1
    - img2.jpg
    - img10.jpg
  - Chapter 2
    - img01.jpg
    - img02.jpg
    - img03.jpg
  - Chapter 3
    - img1.jpg
    - img2-3.jpg
    - img4.jpg

Change default settings

Show current default option
$ go-comic-converter -show

Go Comic Converter

Options:
    Profile                   :
    ViewRatio                 : 1:1.5
    View                      :
    Quality                   : 85
    Crop                      : true
    CropRatio                 : 1 Left - 1 Up - 1 Right - 3 Bottom
    Brightness                : 0
    Contrast                  : 0
    AutoRotate                : false
    AutoSplitDoublePage       : false
    NoBlankImage              : true
    Manga                     : false
    HasCover                  : true
    LimitMb                   : nolimit
    StripFirstDirectoryFromToc: false
    SortPathMode              : path=alphanum, file=alpha
Change default settings
$ go-comic-converter -manga -auto -profile KS -limitmb 200 -save

Go Comic Converter

Options:
    Profile                   : KS - Kindle Scribe - 1860x2480
    ViewRatio                 : 1:1.5
    View                      : 1653x2480
    Quality                   : 85
    Crop                      : true
    CropRatio                 : 1 Left - 1 Up - 1 Right - 3 Bottom
    Brightness                : 0
    Contrast                  : 0
    AutoRotate                : true
    AutoSplitDoublePage       : true
    NoBlankImage              : true
    Manga                     : true
    HasCover                  : true
    LimitMb                   : 200 Mb
    StripFirstDirectoryFromToc: false
    SortPathMode              : path=alphanum, file=alpha

Saving to ~/.go-comic-converter.yaml

If you want to change a setting, you can change only one of them

$ go-comic-converter -manga=0 -save

Go Comic Converter

Options:
    Profile                   : KS - Kindle Scribe - 1860x2480
    ViewRatio                 : 1:1.5
    View                      : 1653x2480
    Quality                   : 85
    Crop                      : true
    CropRatio                 : 1 Left - 1 Up - 1 Right - 3 Bottom
    Brightness                : 0
    Contrast                  : 0
    AutoRotate                : true
    AutoSplitDoublePage       : true
    NoBlankImage              : true
    Manga                     : false
    HasCover                  : true
    LimitMb                   : 200 Mb
    StripFirstDirectoryFromToc: false
    SortPathMode              : path=alphanum, file=alpha

Saving to ~/.go-comic-converter.yaml

### Reset default To reset all value to default:

$ go-comic-converter -reset
Go Comic Converter

Options:
    Profile                   :
    ViewRatio                 : 1:1.5
    View                      :
    Quality                   : 85
    Crop                      : true
    CropRatio                 : 1 Left - 1 Up - 1 Right - 3 Bottom
    Brightness                : 0
    Contrast                  : 0
    AutoRotate                : false
    AutoSplitDoublePage       : false
    NoBlankImage              : true
    Manga                     : false
    HasCover                  : true
    LimitMb                   : nolimit
    StripFirstDirectoryFromToc: false
    SortPathMode              : path=alphanum, file=alpha

Reset default to ~/.go-comic-converter.yaml

My own settings

After playing around with the options, I have my perfect settings for a Kindle Scribe.

$ go-comic-converter -reset
$ go-comic-converter -profile KS -quality 90 -autosplitdoublepage -manga -limitmb 200 -strip -save

Go Comic Converter

Options:
    Profile                   : KS - Kindle Scribe - 1860x2480
    ViewRatio                 : 1:1.5
    View                      : 1653x2480
    Quality                   : 90
    Crop                      : true
    CropRatio                 : 1 Left - 1 Up - 1 Right - 3 Bottom
    Brightness                : 0
    Contrast                  : 0
    AutoRotate                : false
    AutoSplitDoublePage       : true
    NoBlankImage              : true
    Manga                     : true
    HasCover                  : true
    LimitMb                   : 200 Mb
    StripFirstDirectoryFromToc: true
    SortPathMode              : path=alphanum, file=alpha

Saving to ~/.go-comic-converter.yaml

Explanation:

  • -profile KS: Kindle Scribe
  • -quality 90: JPEG output quality of images
  • -autosplitdoublepage: split double page into 2 images after displaying in full quality. Perfect render in landscape, great in portrait
  • -manga: manga mode, read right to left
  • -limitmb 200: size limit to 200MB allowing upload from SendToKindle website
  • -strip: remove first level if alone on TOC, as offen comics include a main directory with the title

Help

$ go-comic-converter -h

Usage of go-comic-converter:

Output:
  -input string
    	Source of comic to convert: directory, cbz, zip, cbr, rar, pdf
  -output string
    	Output of the EPUB (directory or EPUB): (default [INPUT].epub)
  -author string (default "GO Comic Converter")
    	Author of the EPUB
  -title string
    	Title of the EPUB

Config:
  -profile string
    	Profile to use:
    	    - K1      (   600x670 ) - Kindle 1
    	    - K11     ( 1072x1448 ) - Kindle 11
    	    - K2      (   600x670 ) - Kindle 2
    	    - K34     (   600x800 ) - Kindle Keyboard/Touch
    	    - K578    (   600x800 ) - Kindle
    	    - KDX     (  824x1000 ) - Kindle DX/DXG
    	    - KPW     (  758x1024 ) - Kindle Paperwhite 1/2
    	    - KV      ( 1072x1448 ) - Kindle Paperwhite 3/4/Voyage/Oasis
    	    - KPW5    ( 1236x1648 ) - Kindle Paperwhite 5/Signature Edition
    	    - KO      ( 1264x1680 ) - Kindle Oasis 2/3
    	    - KS      ( 1860x2480 ) - Kindle Scribe
    	    - KoMT    (   600x800 ) - Kobo Mini/Touch
    	    - KoG     (  768x1024 ) - Kobo Glo
    	    - KoGHD   ( 1072x1448 ) - Kobo Glo HD
    	    - KoA     (  758x1024 ) - Kobo Aura
    	    - KoAHD   ( 1080x1440 ) - Kobo Aura HD
    	    - KoAH2O  ( 1080x1430 ) - Kobo Aura H2O
    	    - KoAO    ( 1404x1872 ) - Kobo Aura ONE
    	    - KoN     (  758x1024 ) - Kobo Nia
    	    - KoC     ( 1072x1448 ) - Kobo Clara HD/Kobo Clara 2E
    	    - KoL     ( 1264x1680 ) - Kobo Libra H2O/Kobo Libra 2
    	    - KoF     ( 1440x1920 ) - Kobo Forma
    	    - KoS     ( 1440x1920 ) - Kobo Sage
    	    - KoE     ( 1404x1872 ) - Kobo Elipsa
  -quality int (default 85)
    	Quality of the image
  -crop (default true)
    	Crop images
  -crop-ratio-left int (default 1)
    	Crop ratio left: ratio of pixels allow to be non blank while cutting on the left.
  -crop-ratio-up int (default 1)
    	Crop ratio up: ratio of pixels allow to be non blank while cutting on the top.
  -crop-ratio-right int (default 1)
    	Crop ratio right: ratio of pixels allow to be non blank while cutting on the right.
  -crop-ratio-bottom int (default 3)
    	Crop ratio bottom: ratio of pixels allow to be non blank while cutting on the bottom.
  -brightness int
    	Brightness readjustement: between -100 and 100, > 0 lighter, < 0 darker
  -contrast int
    	Contrast readjustement: between -100 and 100, > 0 more contrast, < 0 less contrast
  -autorotate
    	Auto Rotate page when width > height
  -auto
    	Activate all automatic options
  -autosplitdoublepage
    	Auto Split double page when width > height
  -noblankimage (default true)
    	Remove blank image
  -manga
    	Manga mode (right to left)
  -hascover (default true)
    	Has cover. Indicate if your comic have a cover. The first page will be used as a cover and include after the title.
  -limitmb int
    	Limit size of the ePub: Default nolimit (0), Minimum 20
  -strip
    	Strip first directory from the TOC if only 1
  -sort int (default 1)
    	Sort path mode
    	0 = alpha for path and file
    	1 = alphanum for path and alpha for file
    	2 = alphanum for path and file

Default config:
  -show
    	Show your default parameters
  -save
    	Save your parameters as default
  -reset
    	Reset your parameters to default

Other:
  -workers int (default CPU)
    	Number of workers
  -dry
    	Dry run to show all options
  -dry-verbose
    	Display also sorted files after the TOC
  -quiet
    	Disable progress bar
  -version
    	Show current and available version
  -help
    	Show this help message

Credit

This project is largely inspired from KCC (Kindle Comic Converter). Thanks:

Documentation

Overview

Convert CBZ/CBR/Dir into EPUB for e-reader devices (Kindle Devices, ...)

My goal is to make a simple, crossplatform, and fast tool to convert comics into EPUB.

EPUB is now support by Amazon through [SendToKindle](https://www.amazon.com/gp/sendtokindle/), by Email or by using the App. So I've made it simple to support the size limit constraint of those services.

Directories

Path Synopsis
internal
converter
Converter Helper to parse and prepare options for go-comic-converter.
Converter Helper to parse and prepare options for go-comic-converter.
converter/options
Manage options with default value from config.
Manage options with default value from config.
converter/profiles
Manage supported profiles for go-comic-converter.
Manage supported profiles for go-comic-converter.
epub
Tools to create EPUB from images.
Tools to create EPUB from images.
epub/image
Image helpers to transform image.
Image helpers to transform image.
epub/imageprocessor
Extract and transform image into a compressed jpeg.
Extract and transform image into a compressed jpeg.
epub/options
Options for EPUB creation.
Options for EPUB creation.
epub/progress
create a progress bar with custom settings.
create a progress bar with custom settings.
epub/templates
Templates use to create xml files of the EPUB.
Templates use to create xml files of the EPUB.
epub/tree
Organize a list of filename with their path into a tree of directories.
Organize a list of filename with their path into a tree of directories.
epub/zip
Helper to write EPUB files.
Helper to write EPUB files.
sortpath
sortpath support sorting of path that may include number.
sortpath support sorting of path that may include number.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL