diverse fallbacks eingebaut
This commit is contained in:
31
README.md
31
README.md
@@ -13,8 +13,19 @@ Dieses Skript ermöglicht die Umwandlung von Comic-Dateien zwischen den Formaten
|
||||
|
||||
Das Skript benötigt folgende Programme:
|
||||
|
||||
- `p7zip`: Zum verarbeiten von `.cbz`-Dateien.
|
||||
- `p7zip-plugins`: Zum verarbeiten von `.cbr`-Dateien.
|
||||
`unrar`
|
||||
- Zum Entpacken von `.cbr`-Dateien.
|
||||
- Wird als erster Fallback verwendet.
|
||||
|
||||
`7z (p7zip)`
|
||||
- Zum Entpacken von .`cbr`-Dateien, falls unrar nicht verfügbar ist.
|
||||
- Zum Erstellen von `.cbr`-Dateien (als RAR-Archive).
|
||||
|
||||
`unzip`
|
||||
- Zum Entpacken von `.cbz`-Dateien.
|
||||
- Diese Abhängigkeit ist auf den meisten Linux-Distributionen standardmäßig installiert.
|
||||
`zip`
|
||||
- Zum Erstellen von `.cbz`-Dateien.
|
||||
|
||||
|
||||
## Installation der benötigten Programme
|
||||
@@ -23,15 +34,15 @@ Unter Linux können die benötigten Tools mit den folgenden Befehlen installiert
|
||||
**Debian/Ubuntu:**
|
||||
```bash
|
||||
sudo apt update
|
||||
sudo apt install p7zip p7zip-plugins
|
||||
sudo apt install p7zip p7zip-plugins unzip zip unrar
|
||||
```
|
||||
**Fedora:**
|
||||
```bash
|
||||
sudo dnf install p7zip p7zip-plugins
|
||||
sudo dnf install p7zip p7zip-plugins unzip zip unrar
|
||||
```
|
||||
**Arch Linux:**
|
||||
```bash
|
||||
sudo pacman -S p7zip p7zip-plugins
|
||||
sudo pacman -S p7zip p7zip-plugins unzip zip unrar
|
||||
```
|
||||
|
||||
## Installation
|
||||
@@ -44,21 +55,21 @@ chmod +x convert_comics.sh
|
||||
```
|
||||
|
||||
## Verwendung
|
||||
Das Skript benötigt zwei Parameter: den Modus ('cbz' oder 'cbr') und den Pfad zu einem Verzeichnis, das die Dateien enthält.
|
||||
Das Skript benötigt zwei Parameter: den Modus (`cbz` oder `cbr`) und den Pfad zu einem Verzeichnis, das die Dateien enthält.
|
||||
|
||||
## Beispiel 1: CBR zu CBZ konvertieren
|
||||
```bash
|
||||
./convert_comics.sh cbz /pfad/zum/verzeichnis
|
||||
```
|
||||
- Konvertiert alle '.cbr'-Dateien im angegebenen Verzeichnis in '.cbz'.
|
||||
- Die Original-'.cbr'-Dateien werden gelöscht.
|
||||
- Konvertiert alle `.cbr`-Dateien im angegebenen Verzeichnis in `.cbz`.
|
||||
- Die Original-`.cbr`-Dateien werden gelöscht.
|
||||
|
||||
## Beispiel 2: CBZ zu CBR konvertieren
|
||||
```bash
|
||||
./convert_comics.sh cbr /pfad/zum/verzeichnis
|
||||
```
|
||||
- Konvertiert alle '.cbz'-Dateien im angegebenen Verzeichnis in '.cbr'.
|
||||
- Die Original-'.cbz'-Dateien werden gelöscht.
|
||||
- Konvertiert alle `.cbz`-Dateien im angegebenen Verzeichnis in `.cbr`.
|
||||
- Die Original-`.cbz`-Dateien werden gelöscht.
|
||||
|
||||
## Hinweis
|
||||
|
||||
|
||||
@@ -15,23 +15,63 @@ if [[ ! -d "$directory" ]]; then
|
||||
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)
|
||||
# CBR -> CBZ konvertieren
|
||||
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 ..."
|
||||
7z x "$cbr_file" -o"$temp_dir" > /dev/null 2>&1
|
||||
if [[ $? -eq 0 ]]; then
|
||||
if extract_with_fallback "$cbr_file" "$temp_dir"; then
|
||||
echo "Erstelle ${base_name}.cbz ..."
|
||||
7z a -tzip "${base_name}.cbz" "$temp_dir"/* > /dev/null 2>&1
|
||||
(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
|
||||
@@ -43,20 +83,19 @@ case $mode in
|
||||
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 "Entpacke $cbz_file ..."
|
||||
7z x "$cbz_file" -o"$temp_dir" > /dev/null 2>&1
|
||||
unzip -q "$cbz_file" -d "$temp_dir/"
|
||||
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
|
||||
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
|
||||
|
||||
Reference in New Issue
Block a user