Initial commit

This commit is contained in:
Thorsten committed 2026-05-12 15:50:26 +02:00
commit 0dbef3fa0e
2 files changed
+185

No files matched your search

+77
View File
@@ -0,0 +1,77 @@
# Convert Comics Script
Dieses Skript ermöglicht die Umwandlung von Comic-Dateien zwischen den Formaten **CBR** und **CBZ**. Nach erfolgreicher Konvertierung wird die Originaldatei automatisch gelöscht.
## Features
- **CBR zu CBZ:** Konvertiert `.cbr`-Dateien in `.cbz`.
- **CBZ zu CBR:** Konvertiert `.cbz`-Dateien in `.cbr`.
- **Automatisches Löschen:** Die Originaldatei wird nach erfolgreicher Konvertierung entfernt.
- **Batch-Verarbeitung:** Verarbeitet alle Dateien in einem angegebenen Verzeichnis.
## Voraussetzungen
Das Skript benötigt folgende Programme:
`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
Unter Linux können die benötigten Tools mit den folgenden Befehlen installiert werden:
**Debian/Ubuntu:**
```bash
sudo apt update
sudo apt install p7zip p7zip-plugins unzip zip unrar
```
**Fedora:**
```bash
sudo dnf install p7zip p7zip-plugins unzip zip unrar
```
**Arch Linux:**
```bash
sudo pacman -S p7zip p7zip-plugins unzip zip unrar
```
## Installation
1. Speichere das Skript als `convert_comics.sh`.
2. Script ausführbar machen:
**Arch Linux:**
```bash
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.
## 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.
## 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.
## Hinweis
- Die Konvertierung ist **verlustfrei**, da nur die enthaltenen Bilddateien verarbeitet werden.
- Es werden keine zusätzlichen Metadaten in den Dateien gespeichert.
+108
View File
@@ -0,0 +1,108 @@
#!/bin/bash
# Prüfen, ob der richtige Modus (cbz oder cbr) und ein Verzeichnis angegeben wurden
if [[ $# -ne 2 ]]; then
echo "Verwendung: $0 <cbz|cbr> <Verzeichnis>"
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 Konvertieren von CBR nach CBZ
convert_cbr_to_cbz() {
local file=$1
local base_name="${file%.cbr}"
local temp_dir="${base_name}_tmp"
mkdir -p "$temp_dir"
extract_with_fallback "$file" "$temp_dir"
if [[ $? -ne 0 ]]; then
echo "Fehler beim Entpacken von $file"
rm -rf "$temp_dir"
return
fi
# Erstellen des neuen CBZ-Archivs
zip -r "${base_name}.cbz" "$temp_dir" > /dev/null
if [[ $? -eq 0 ]]; then
rm "$file"
echo "Erfolgreich konvertiert: $file -> ${base_name}.cbz"
else
echo "Fehler beim Erstellen von ${base_name}.cbz"
fi
rm -rf "$temp_dir"
}
# Funktion zum Konvertieren von CBZ nach CBR
convert_cbz_to_cbr() {
local file=$1
local base_name="${file%.cbz}"
local temp_dir="${base_name}_tmp"
mkdir -p "$temp_dir"
unzip -q "$file" -d "$temp_dir"
if [[ $? -ne 0 ]]; then
echo "Fehler beim Entpacken von $file"
rm -rf "$temp_dir"
return
fi
# Erstellen des neuen CBR-Archivs
rar a -r "${base_name}.cbr" "$temp_dir" > /dev/null
if [[ $? -eq 0 ]]; then
rm "$file"
echo "Erfolgreich konvertiert: $file -> ${base_name}.cbr"
else
echo "Fehler beim Erstellen von ${base_name}.cbr"
fi
rm -rf "$temp_dir"
}
# Dateien je nach Modus rekursiv finden und konvertieren
if [[ "$mode" == "cbz" ]]; then
find "$directory" -type f -name "*.cbr" | while read -r file; do
convert_cbr_to_cbz "$file"
done
elif [[ "$mode" == "cbr" ]]; then
find "$directory" -type f -name "*.cbz" | while read -r file; do
convert_cbz_to_cbr "$file"
done
else
echo "Fehler: Ungültiger Modus. Verwenden Sie 'cbz' oder 'cbr'."
exit 1
fi