Damn.. and I just write a code to convert CBR/CBZ/ZIP/RAR comics to PDF
I can even batch mode on them with:
Code:
ls | while read comic; do cb2pdf "$comic"; done
here goes the code
Code:
#!/bin/bash
FILE="$@"
DEBUG="TRUE"
#DRY="echo"
TMPDIR=".tmp$RANDOM$RANDOM"
# Unconment to transform to PB
#PB902="yes"
function detect_source() {
SOURCE="$@"
if [ -d "$SOURCE" ]; then
SOURCETYPE="dir"
else
EXTENSION="$( echo ${SOURCE##*.} | tr [:upper:] [:lower:] )"
[ -n "$DEBUG" ] && echo "Extension --$EXTENSION--"
case $EXTENSION in
cbr|rar) SOURCETYPE="rar" ;;
cbz|zip) SOURCETYPE="zip" ;;
esac
fi
[ -n "$DEBUG" ] && echo Source detected "$SOURCETYPE"
}
function create_tmpdir() {
mkdir -p $TMPDIR
}
function extract_rar() {
RARFILE="$@"
cd "$TMPDIR"
$DRY unrar e ../"${RARFILE}"
}
function extract_zip() {
ZIPFILE="$@"
cd "$TMPDIR"
$DRY unzip -j ../"${ZIPFILE}"
}
function mirror_dir() {
ZIPFILE="$@"
cp -rav "$FILE"* "$TMPDIR"
cd "$TMPDIR"
}
function convert_dir_to_tiff() {
SOURCEDIR="$@"
[ -n "$DEBUG" ] && echo "Converting dir ${SOURCEDIR}"
for IMAGE in *; do
IMGEXT="${IMAGE##*.}"
if [ "$IMGEXT" != "jpg" -a "$IMGEXT" != "jpeg" -a "$IMGEXT" != "png" -a "$IMGEXT" != "tiff" -a "$IMGEXT" != "tif" ]; then
[ -n "$DEBUG" ] && echo "... $IMAGE not a image file. Skipping..."
continue
fi
[ -n "$DEBUG" ] && echo "... $IMAGE"
$DRY convert "$IMAGE" "${IMAGE%.*}.tiff"
done
}
convert_dir_to_pb902() {
# Convert to right size and colorspace
[ -n "$DEBUG" ] && echo "Converting to PocketBook Pro 902 "
for IMAGE in *.tiff; do
[ -n "$DEBUG" ] && echo "... $IMAGE"
$DRY convert -colorspace Gray "$IMAGE" "gray-${IMAGE%.*}"
$DRY convert -colors 16 "gray-${IMAGE%.*}" "gr16-${IMAGE%.*}"
rm "gray-${IMAGE%.*}"
mv "gr16-${IMAGE%.*}" "$IMAGE"
done
}
function create_mtiff_from_dir() {
SOURCEDIR="$@"
[ -n "$DEBUG" ] && echo "Creating MTIFF from ${SOURCEDIR}"
[ -n "$DEBUG" ] && echo tiffcp *.tiff MULTI.tiff
$DRY tiffcp *.tiff MULTI.tiff
}
function convert_mtiff_to_pdf() {
SOURCEDIR="$@"
[ -n "$DEBUG" ] && echo "Converting MTIFF to PDF on ${SOURCEDIR}"
DESTINATIONFILE="${FILE%.*}.pdf"
convert MULTI.tiff ../"$DESTINATIONFILE"
}
function cleanup_tmp() {
[ -n "$DEBUG" ] && echo "Cleaninup $TMPDIR"
$DRY cd -
$DRY rm -rf $TMPDIR
}
function show_files() {
ls -lh "${FILE%.*}"*
}
function ajuda() {
cat << EOF
Under GNU/GPL v2 or grater. Distributed AS IS.
Usage: $0 [SOURCE]
Where source can be a dir containing images, a CBR or CBZ file.
EOF
exit 0
}
[ "$#" -ne 1 ] && ajuda
detect_source "$FILE"
create_tmpdir "$TMPDIR"
case $SOURCETYPE in
rar)
extract_rar "$FILE"
;;
zip)
extract_zip "$FILE"
;;
dir)
mirror_dir "$FILE"
;;
*)
echo "Cannot detect source type. Leaving..."
exit 0
;;
esac
convert_dir_to_tiff "$FILE"
[ -n "$PB902" ] && convert_dir_to_pb902 "$FILE"
create_mtiff_from_dir "$FILE"
convert_mtiff_to_pdf "$FILE"
cleanup_tmp
show_files