#!/bin/bash # Prüfen, ob der richtige Modus (cbz oder cbr) und ein Verzeichnis angegeben wurden if [[ $# -ne 2 ]]; then echo "Verwendung: $0 " exit 1 fi mode=$1 directory=$2 # Überprüfen, ob das Verzeichnis existiert if [[ ! -d "$directory" ]]; then echo "Fehler: Das angegebene Verzeichnis existiert nicht." exit 1 fi # Funktion zum Entpacken mit Fallback auf 7z extract_with_fallback() { local archive_file=$1 local output_dir=$2 # Versuch mit unrar if command -v unrar &> /dev/null; then unrar x -inul "$archive_file" "$output_dir/" if [[ $? -eq 0 ]]; then return 0 fi echo "Warnung: Entpacken mit 'unrar' fehlgeschlagen, versuche '7z'..." fi # Fallback auf 7z if command -v 7z &> /dev/null; then 7z x "$archive_file" -o"$output_dir/" > /dev/null 2>&1 if [[ $? -eq 0 ]]; then return 0 fi echo "Fehler: Entpacken mit '7z' fehlgeschlagen." fi return 1 } # Funktion zum Packen mit 7z (für RAR und CBZ) pack_with_7z() { local output_file=$1 local input_dir=$2 7z a -r "$output_file" "$input_dir"/* > /dev/null 2>&1 if [[ $? -eq 0 ]]; then return 0 else echo "Fehler: Erstellen von $output_file fehlgeschlagen." return 1 fi } # Abhängig vom Modus die Konvertierung durchführen case $mode in cbz) for cbr_file in "$directory"/*.cbr; do if [[ -f "$cbr_file" ]]; then base_name="${cbr_file%.cbr}" temp_dir=$(mktemp -d) echo "Entpacke $cbr_file ..." if extract_with_fallback "$cbr_file" "$temp_dir"; then echo "Erstelle ${base_name}.cbz ..." (cd "$temp_dir" && zip -r "${base_name}.cbz" ./* > /dev/null 2>&1) if [[ $? -eq 0 ]]; then echo "Lösche Originaldatei: $cbr_file" rm "$cbr_file" mv "${base_name}.cbz" "$directory/" else echo "Fehler beim Erstellen von ${base_name}.cbz" fi else echo "Fehler beim Entpacken von $cbr_file" fi rm -rf "$temp_dir" fi done ;; cbr) for cbz_file in "$directory"/*.cbz; do if [[ -f "$cbz_file" ]]; then base_name="${cbz_file%.cbz}" temp_dir=$(mktemp -d) echo "Entpacke $cbz_file ..." unzip -q "$cbz_file" -d "$temp_dir/" if [[ $? -eq 0 ]]; then echo "Erstelle ${base_name}.cbr ..." if pack_with_7z "${base_name}.cbr" "$temp_dir"; then echo "Lösche Originaldatei: $cbz_file" rm "$cbz_file" mv "${base_name}.cbr" "$directory/" else echo "Fehler beim Erstellen von ${base_name}.cbr" fi else echo "Fehler beim Entpacken von $cbz_file" fi rm -rf "$temp_dir" fi done ;; *) echo "Ungültiger Modus. Bitte 'cbz' oder 'cbr' verwenden." exit 1 ;; esac