go-comic-converter/README.md
2023-04-29 11:54:32 +02:00

477 lines
14 KiB
Markdown
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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](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.
# 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](https://go.dev/doc/install)
Then install the last version of the tool:
```
$ go install github.com/celogeek/go-comic-converter/v2
```
To force install a specific version:
```
$ go install github.com/celogeek/go-comic-converter/v2@V2TAG
```
Example:
```
$ go install github.com/celogeek/go-comic-converter/v2@v2.0.6
```
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:9xYksu1PlJ6QkAL/5U2ZbufEb1tavpdRcpTPPcAjiNs=
Version : v2.3.3
Available Version: v2.3.3
To install the latest version:
$ go install github.com/celogeek/go-comic-converter/v2@v2.3.3
```
# 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:
- [ciromattia](https://github.com/ciromattia/kcc)
- [darodi fork](https://github.com/darodi/kcc)