scripts/cbz2ebook.sh

46 lines
1.1 KiB
Bash
Executable File

#!/usr/bin/env cached-nix-shell
#!nix-shell -i zsh -p imagemagick unzip zip zsh
set -e
size="1440x1920" # Kobo Forma
#size="768x1024" # Amazon Kindle Paperwhite
vertical_size="$(cut -dx -f2 <<< $size)x$(cut -dx -f1 <<< $size)"
infile="$(realpath $1)"
outfile="$(realpath $2)"
tmpdir=$(mktemp -d)
function cleanup {
rm -rf "$tmpdir"
}
trap cleanup EXIT INT SIGTERM
cd "$tmpdir"
unzip "$infile"
# rename files to have a plain 4 digit filename
i=1
for file in **/*.???; do
mv -n "$file" "$(dirname $file)/$(printf %04d $i).${file##*.}"
i=$((i+1))
done
length=$(ls -1 **/*.??? | wc -l)
position=0
for image in **/*.???; do
width=$(identify -format "%W" "$image")
height=$(identify -format "%H" "$image")
if (($width > $height)); then
mogrify -resize "$vertical_size" -rotate 270 "$image"
else
mogrify -resize "$size" "$image"
fi
position=$(($position + 1))
echo -ne "$(printf '%3s' $((100 * $position / $length))) % "$(printf "%0*d" "$((72 * $position / $length))" 0 | tr '0' '#')'\r'
done
echo
zip "$outfile" **/*.???
cd -