Initial commit
This commit is contained in:
commit
0dbef3fa0e
2 files changed
+185
No files matched your search
@@ -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.
|
||||
@@ -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
|
||||
Reference in new issue
Block a user