celogeek / go-comic-converter

Convert CBZ/CBR/Dir into Epub for e-reader devices (Kindle Devices, ...)
MIT License
64 stars 8 forks source link

go-comic-converter

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

My goal is to make a simple, cross-platform, 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

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

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.6.9

# 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:tUFF2m/fGlOJOwC0/PlTopMfcBMprKvgr6TiQHQxEeo=
  Version          : v2.6.9
  Available Version: v2.6.9

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

Supported image files

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

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

The case for extensions doesn't matter.

Usage

Convert directory

Convert every supported image files found in the input directory:

$ go-comic-converter -profile SR -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 SR -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:

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

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

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

The ePub include as a first page:

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

Dry run

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

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

Options:
    Input                           : ~/Downloads/mymanga.cbr
    Output                          : ~/Downloads/mymanga.epub
    Author                          : GO Comic Converter
    Title                           : mymanga
    Workers                         : 20
    Profile                         : SR - Standard Resolution - 1200x1920
    Format                          : jpeg
    Quality                         : 85
    Grayscale                       : true
    Grayscale mode                  : normal
    Crop                            : true
    Crop ratio                      : 1 Left - 1 Up - 1 Right - 3 Bottom - Limit 0% - Skip false
    Auto contrast                   : true
    Auto rotate                     : true
    Auto split double page          : true
    Keep double page if split       : true
    No blank image                  : true
    Manga                           : true
    Has cover                       : true
    Limit                           : 200 Mb
    Strip first directory from toc  : false
    Sort path mode                  : path=alphanumeric, file=alpha
    Foreground color                : #000
    Background color                : #FFF
    Resize                          : true
    Aspect ratio                    : auto
    Portrait only                   : false
    Title page                      : always
    Apple book compatibility        : false

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

Dry verbose

You can choose different way to sort path and files, depending on 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 SR -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                         : 20
    Profile                         : SR - Standard Resolution - 1200x1920
    Format                          : jpeg
    Quality                         : 85
    Grayscale                       : true
    Grayscale mode                  : normal
    Crop                            : true
    Crop ratio                      : 1 Left - 1 Up - 1 Right - 3 Bottom - Limit 0% - Skip false
    Auto contrast                   : true
    Auto rotate                     : true
    Auto split double page          : true
    Keep double page if split       : true
    No blank image                  : true
    Manga                           : true
    Has cover                       : true
    Limit                           : 200 Mb
    Strip first directory from toc  : false
    Sort path mode                  : path=alphanumeric, file=alpha
    Foreground color                : #000
    Background color                : #FFF
    Resize                          : true
    Aspect ratio                    : auto
    Portrait only                   : false
    Title page                      : always
    Apple book compatibility        : false

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                         : SR - Standard Resolution - 1200x1920
    Format                          : jpeg
    Quality                         : 85
    Grayscale                       : true
    Grayscale mode                  : normal
    Crop                            : true
    Crop ratio                      : 1 Left - 1 Up - 1 Right - 3 Bottom - Limit 0% - Skip false
    Auto contrast                   : false
    Auto rotate                     : false
    Auto split double page          : false
    No blank image                  : true
    Manga                           : false
    Has cover                       : true
    Strip first directory from toc  : false
    Sort path mode                  : path=alphanumeric, file=alpha
    Foreground color                : #000
    Background color                : #FFF
    Resize                          : true
    Aspect ratio                    : auto
    Portrait only                   : false
    Title page                      : always
    Apple book compatibility        : false

Change default settings

$ go-comic-converter -manga -auto -profile SR -limitmb 200 -save

Go Comic Converter

Options:
    Profile                         : SR - Standard Resolution - 1200x1920
    Format                          : jpeg
    Quality                         : 85
    Grayscale                       : true
    Grayscale mode                  : normal
    Crop                            : true
    Crop ratio                      : 1 Left - 1 Up - 1 Right - 3 Bottom - Limit 0% - Skip false
    Auto contrast                   : true
    Auto rotate                     : true
    Auto split double page          : true
    Keep double page if split       : true
    Keep split double page aspect   : true
    No blank image                  : true
    Manga                           : true
    Has cover                       : true
    Limit                           : 200 Mb
    Strip first directory from toc  : false
    Sort path mode                  : path=alphanumeric, file=alpha
    Foreground color                : #000
    Background color                : #FFF
    Resize                          : true
    Aspect ratio                    : auto
    Portrait only                   : false
    Title page                      : always
    Apple book compatibility        : false

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

Options:
    Profile                         : SR - Standard Resolution - 1200x1920
    Format                          : jpeg
    Quality                         : 85
    Grayscale                       : true
    Grayscale mode                  : normal
    Crop                            : true
    Crop ratio                      : 1 Left - 1 Up - 1 Right - 3 Bottom - Limit 0% - Skip false
    Auto contrast                   : false
    Auto rotate                     : false
    Auto split double page          : false
    No blank image                  : true
    Manga                           : false
    Has cover                       : true
    Strip first directory from toc  : false
    Sort path mode                  : path=alphanumeric, file=alpha
    Foreground color                : #000
    Background color                : #FFF
    Resize                          : true
    Aspect ratio                    : auto
    Portrait only                   : false
    Title page                      : always
    Apple book compatibility        : false

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

Reset default

To reset all value to default:

$ go-comic-converter -reset
Go Comic Converter

Options:
    Profile                         : SR - Standard Resolution - 1200x1920
    Format                          : jpeg
    Quality                         : 85
    Grayscale                       : true
    Grayscale mode                  : normal
    Crop                            : true
    Crop ratio                      : 1 Left - 1 Up - 1 Right - 3 Bottom - Limit 0% - Skip false
    Auto contrast                   : false
    Auto rotate                     : false
    Auto split double page          : false
    No blank image                  : true
    Manga                           : false
    Has cover                       : true
    Strip first directory from toc  : false
    Sort path mode                  : path=alphanumeric, file=alpha
    Foreground color                : #000
    Background color                : #FFF
    Resize                          : true
    Aspect ratio                    : auto
    Portrait only                   : false
    Title page                      : always
    Apple book compatibility        : false

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

My own settings

After playing around with the options, I have my perfect settings for all my devices.

$ go-comic-converter -reset
$ go-comic-converter -profile SR -quality 90 -manga -aspect-ratio 1.6 -limitmb 200 -save

Options:
    Profile                         : SR - Standard Resolution - 1200x1920
    Format                          : jpeg
    Quality                         : 90
    Grayscale                       : true
    Grayscale mode                  : normal
    Crop                            : true
    Crop ratio                      : 1 Left - 1 Up - 1 Right - 3 Bottom - Limit 0% - Skip false
    Auto contrast                   : false
    Auto rotate                     : false
    Auto split double page          : false
    No blank image                  : true
    Manga                           : true
    Has cover                       : true
    Limit                           : 200 Mb
    Strip first directory from toc  : false
    Sort path mode                  : path=alphanumeric, file=alpha
    Foreground color                : #000
    Background color                : #FFF
    Resize                          : true
    Aspect ratio                    : 1:1.60
    Portrait only                   : false
    Title page                      : always
    Apple book compatibility        : false

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

Explanation:

$ 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 (default "SR")
        Profile to use: 
            - HR      ( 2400x3840 ) - High Resolution
            - SR      ( 1200x1920 ) - Standard Resolution
            - 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
            - RM1     ( 1404x1872 ) - reMarkable 1
            - RM2     ( 1404x1872 ) - reMarkable 2
  -quality int (default 85)
        Quality of the image
  -grayscale (default true)
        Grayscale image. Ideal for eInk devices.
  -grayscale-mode int
        Grayscale Mode
        0 = normal
        1 = average
        2 = luminance
  -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.
  -crop-limit int
        Crop limit: maximum number of cropping in percentage allowed. 0 mean unlimited.
  -crop-skip-if-limit-reached
        Crop skip if limit reached.
  -brightness int
        Brightness readjustment: between -100 and 100, > 0 lighter, < 0 darker
  -contrast int
        Contrast readjustment: between -100 and 100, > 0 more contrast, < 0 less contrast
  -autocontrast
        Improve contrast automatically
  -autorotate
        Auto Rotate page when width > height
  -autosplitdoublepage
        Auto Split double page when width > height
  -keepdoublepageifsplit (default true)
        Keep the double page if split
  -keepsplitdoublepageaspect (default true)
        Keep aspect of split part of a double page (best for landscape rendering)
  -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 = alphanumeric for path and alpha for file
        2 = alphanumeric for path and file
  -foreground-color string (default "000")
        Foreground color in hexadecimal format RGB. Black=000, White=FFF
  -background-color string (default "FFF")
        Background color in hexadecimal format RGB. Black=000, White=FFF, Light Gray=DDD, Dark Gray=777
  -noresize
        Do not reduce image size if exceed device size
  -format string (default "jpeg")
        Format of output images: jpeg (lossy), png (lossless)
  -aspect-ratio float
        Aspect ratio (height/width) of the output
         -1 = same as device
          0 = same as source
        1.6 = amazon advice for kindle
  -portrait-only
        Portrait only: force orientation to portrait only.
  -titlepage int (default 1)
        Title page
        0 = never
        1 = always
        2 = only if epub is split

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

Shortcut:
  -auto
        Activate all automatic options
  -nofilter
        Deactivate all filters
  -maxquality
        Max quality: color png + noresize
  -bestquality
        Max quality: color jpg q100 + noresize
  -greatquality
        Max quality: grayscale jpg q90 + noresize
  -goodquality
        Max quality: grayscale jpg q90

Compatibility:
  -applebookcompatibility
        Apple book compatibility

Other:
  -workers int (default number of CPUs)
        Number of workers
  -dry
        Dry run to show all options
  -dry-verbose
        Display also sorted files after the TOC
  -quiet
        Disable progress bar
  -json
        Output progression and information in Json format
  -version
        Show current and available version
  -help
        Show this help message

Credit

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