Files
shell_convert_comics/shell_convert_comics.sh
2025-01-06 21:01:45 +01:00

103 lines
2.6 KiB
Bash
Executable File

#!/bin/bash
if [[ $# -ne 2 ]]; then
echo "Usage: $0 <mode> <directory>"
echo "Modes:"
echo " cbz Convert CBR to CBZ"
echo " cbr Convert CBZ to CBR"
exit 1
fi
mode="$1"
input_dir="$2"
if [[ ! -d "$input_dir" ]]; then
echo "Fehler: Verzeichnis $input_dir existiert nicht."
exit 1
fi
if [[ "$mode" == "cbz" ]]; then
for cbr_file in "$input_dir"/*.cbr; do
if [[ ! -f "$cbr_file" ]]; then
echo "Keine CBR-Dateien im Verzeichnis $input_dir gefunden."
exit 0
fi
base_name="${cbr_file%.cbr}"
temp_dir="${base_name}_temp"
echo "Verarbeite: $cbr_file"
# Entpacken
mkdir -p "$temp_dir"
unrar x -inul "$cbr_file" "$temp_dir/"
if [[ $? -ne 0 ]]; then
echo "Fehler beim Entpacken von $cbr_file. Überspringe Datei."
rm -r "$temp_dir"
continue
fi
# ZIP erstellen
(
cd "$temp_dir" || exit
zip -r -q "${base_name}.cbz" ./*
)
mv "${temp_dir}/${base_name}.cbz" "$input_dir/"
if [[ $? -ne 0 ]]; then
echo "Fehler beim Erstellen der CBZ für $cbr_file. Überspringe Datei."
rm -r "$temp_dir"
continue
fi
# Aufräumen
rm -r "$temp_dir"
rm "$cbr_file"
echo "Erfolgreich umgewandelt: $cbr_file -> ${base_name}.cbz"
done
elif [[ "$mode" == "cbr" ]]; then
for cbz_file in "$input_dir"/*.cbz; do
if [[ ! -f "$cbz_file" ]]; then
echo "Keine CBZ-Dateien im Verzeichnis $input_dir gefunden."
exit 0
fi
base_name="${cbz_file%.cbz}"
temp_dir="${base_name}_temp"
echo "Verarbeite: $cbz_file"
# Entpacken
mkdir -p "$temp_dir"
unzip -q "$cbz_file" -d "$temp_dir/"
if [[ $? -ne 0 ]]; then
echo "Fehler beim Entpacken von $cbz_file. Überspringe Datei."
rm -r "$temp_dir"
continue
fi
# RAR erstellen
rar a -inul "${base_name}.cbr" "$temp_dir"/*
mv "${base_name}.cbr" "$input_dir/"
if [[ $? -ne 0 ]]; then
echo "Fehler beim Erstellen der CBR für $cbz_file. Überspringe Datei."
rm -r "$temp_dir"
continue
fi
# Aufräumen
rm -r "$temp_dir"
rm "$cbz_file"
echo "Erfolgreich umgewandelt: $cbz_file -> ${base_name}.cbr"
done
else
echo "Unbekannter Modus: $mode"
echo "Bitte 'cbz' oder 'cbr' angeben."
exit 1
fi
echo "Alle Dateien im Verzeichnis $input_dir wurden verarbeitet."