using 7zip for both filetypes
This commit is contained in:
13
README.md
13
README.md
@@ -13,10 +13,9 @@ Dieses Skript ermöglicht die Umwandlung von Comic-Dateien zwischen den Formaten
|
|||||||
|
|
||||||
Das Skript benötigt folgende Programme:
|
Das Skript benötigt folgende Programme:
|
||||||
|
|
||||||
`unrar`: Zum Entpacken von `.cbr`-Dateien.
|
- `p7zip`: Zum verarbeiten von `.cbz`-Dateien.
|
||||||
`rar`: Zum Erstellen von `.cbr`-Dateien.
|
- `p7zip-plugins`: Zum verarbeiten von `.cbr`-Dateien.
|
||||||
`zip`: Zum Erstellen von `.cbz`-Dateien.
|
|
||||||
`unzip`: Zum Entpacken von `.cbz`-Dateien.
|
|
||||||
|
|
||||||
## Installation der benötigten Programme
|
## Installation der benötigten Programme
|
||||||
|
|
||||||
@@ -24,15 +23,15 @@ Unter Linux können die benötigten Tools mit den folgenden Befehlen installiert
|
|||||||
**Debian/Ubuntu:**
|
**Debian/Ubuntu:**
|
||||||
```bash
|
```bash
|
||||||
sudo apt update
|
sudo apt update
|
||||||
sudo apt install unrar rar zip unzip
|
sudo apt install p7zip p7zip-plugins
|
||||||
```
|
```
|
||||||
**Fedora:**
|
**Fedora:**
|
||||||
```bash
|
```bash
|
||||||
sudo dnf install unrar rar zip unzip
|
sudo dnf install p7zip p7zip-plugins
|
||||||
```
|
```
|
||||||
**Arch Linux:**
|
**Arch Linux:**
|
||||||
```bash
|
```bash
|
||||||
sudo pacman -S unrar rar zip unzip
|
sudo pacman -S p7zip p7zip-plugins
|
||||||
```
|
```
|
||||||
|
|
||||||
## Installation
|
## Installation
|
||||||
|
|||||||
@@ -1,102 +1,74 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Prüfen, ob der richtige Modus (cbz oder cbr) und ein Verzeichnis angegeben wurden
|
||||||
if [[ $# -ne 2 ]]; then
|
if [[ $# -ne 2 ]]; then
|
||||||
echo "Usage: $0 <mode> <directory>"
|
echo "Verwendung: $0 <cbz|cbr> <Verzeichnis>"
|
||||||
echo "Modes:"
|
|
||||||
echo " cbz Convert CBR to CBZ"
|
|
||||||
echo " cbr Convert CBZ to CBR"
|
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
mode="$1"
|
mode=$1
|
||||||
input_dir="$2"
|
directory=$2
|
||||||
|
|
||||||
if [[ ! -d "$input_dir" ]]; then
|
# Überprüfen, ob das Verzeichnis existiert
|
||||||
echo "Fehler: Verzeichnis $input_dir existiert nicht."
|
if [[ ! -d "$directory" ]]; then
|
||||||
|
echo "Fehler: Das angegebene Verzeichnis existiert nicht."
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ "$mode" == "cbz" ]]; then
|
# Abhängig vom Modus die Konvertierung durchführen
|
||||||
for cbr_file in "$input_dir"/*.cbr; do
|
case $mode in
|
||||||
if [[ ! -f "$cbr_file" ]]; then
|
cbz)
|
||||||
echo "Keine CBR-Dateien im Verzeichnis $input_dir gefunden."
|
# CBR -> CBZ konvertieren
|
||||||
exit 0
|
for cbr_file in "$directory"/*.cbr; do
|
||||||
fi
|
if [[ -f "$cbr_file" ]]; then
|
||||||
|
|
||||||
base_name="${cbr_file%.cbr}"
|
base_name="${cbr_file%.cbr}"
|
||||||
temp_dir="${base_name}_temp"
|
temp_dir=$(mktemp -d)
|
||||||
|
|
||||||
echo "Verarbeite: $cbr_file"
|
echo "Entpacke $cbr_file ..."
|
||||||
|
7z x "$cbr_file" -o"$temp_dir" > /dev/null 2>&1
|
||||||
# Entpacken
|
if [[ $? -eq 0 ]]; then
|
||||||
mkdir -p "$temp_dir"
|
echo "Erstelle ${base_name}.cbz ..."
|
||||||
unrar x -inul "$cbr_file" "$temp_dir/"
|
7z a -tzip "${base_name}.cbz" "$temp_dir"/* > /dev/null 2>&1
|
||||||
if [[ $? -ne 0 ]]; then
|
if [[ $? -eq 0 ]]; then
|
||||||
echo "Fehler beim Entpacken von $cbr_file. Überspringe Datei."
|
echo "Lösche Originaldatei: $cbr_file"
|
||||||
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"
|
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
|
else
|
||||||
echo "Unbekannter Modus: $mode"
|
echo "Fehler beim Erstellen von ${base_name}.cbz"
|
||||||
echo "Bitte 'cbz' oder 'cbr' angeben."
|
|
||||||
exit 1
|
|
||||||
fi
|
fi
|
||||||
|
else
|
||||||
|
echo "Fehler beim Entpacken von $cbr_file"
|
||||||
|
fi
|
||||||
|
rm -rf "$temp_dir"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
;;
|
||||||
|
cbr)
|
||||||
|
# CBZ -> CBR konvertieren
|
||||||
|
for cbz_file in "$directory"/*.cbz; do
|
||||||
|
if [[ -f "$cbz_file" ]]; then
|
||||||
|
base_name="${cbz_file%.cbz}"
|
||||||
|
temp_dir=$(mktemp -d)
|
||||||
|
|
||||||
echo "Alle Dateien im Verzeichnis $input_dir wurden verarbeitet."
|
echo "Entpacke $cbz_file ..."
|
||||||
|
7z x "$cbz_file" -o"$temp_dir" > /dev/null 2>&1
|
||||||
|
if [[ $? -eq 0 ]]; then
|
||||||
|
echo "Erstelle ${base_name}.cbr ..."
|
||||||
|
7z a -ttar "${base_name}.cbr" "$temp_dir"/* > /dev/null 2>&1
|
||||||
|
if [[ $? -eq 0 ]]; then
|
||||||
|
echo "Lösche Originaldatei: $cbz_file"
|
||||||
|
rm "$cbz_file"
|
||||||
|
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
|
||||||
|
|||||||
Reference in New Issue
Block a user