68 lines
1.7 KiB
Bash
68 lines
1.7 KiB
Bash
#!/bin/bash
|
|
|
|
# Script zum Entfernen der englischen Audiospur aus MKV-Dateien
|
|
# Benötigt: mkvmerge (Teil von mkvtoolnix)
|
|
|
|
set -euo pipefail
|
|
|
|
# Prüfen ob mkvmerge installiert ist
|
|
if ! command -v mkvmerge &> /dev/null; then
|
|
echo "Fehler: mkvmerge ist nicht installiert."
|
|
echo "Installiere es mit: sudo apt install mkvtoolnix"
|
|
exit 1
|
|
fi
|
|
|
|
# Zähler für verarbeitete Dateien
|
|
count=0
|
|
skipped=0
|
|
|
|
echo "Starte Verarbeitung aller MKV-Dateien..."
|
|
echo ""
|
|
|
|
# Alle MKV-Dateien im aktuellen Verzeichnis verarbeiten
|
|
shopt -s nullglob
|
|
files=(*.mkv)
|
|
|
|
if [ ${#files[@]} -eq 0 ]; then
|
|
echo "Keine MKV-Dateien gefunden."
|
|
exit 0
|
|
fi
|
|
|
|
# Deaktiviere 'exit on error' für die Schleife
|
|
set +e
|
|
|
|
for file in "${files[@]}"; do
|
|
echo "Verarbeite: $file"
|
|
|
|
# Temporäre Ausgabedatei
|
|
temp_file="${file%.mkv}_temp.mkv"
|
|
|
|
# Entferne Track ID 1 (die englische Audiospur)
|
|
# --audio-tracks !1 bedeutet: behalte alle Audio-Tracks außer Track 1
|
|
mkvmerge -o "$temp_file" --audio-tracks '!1' "$file" 2>&1
|
|
exit_code=$?
|
|
|
|
# Prüfe ob die Ausgabedatei erfolgreich erstellt wurde
|
|
if [ -f "$temp_file" ] && [ $exit_code -eq 0 -o $exit_code -eq 1 ]; then
|
|
# Ersetze Original mit neuer Datei
|
|
mv "$temp_file" "$file"
|
|
echo "✓ Erfolgreich: $file"
|
|
((count++))
|
|
else
|
|
echo "✗ Fehler bei: $file (Exit-Code: $exit_code)"
|
|
[ -f "$temp_file" ] && rm -f "$temp_file"
|
|
((skipped++))
|
|
fi
|
|
|
|
echo ""
|
|
done
|
|
|
|
# Aktiviere 'exit on error' wieder
|
|
set -e
|
|
|
|
echo "=========================================="
|
|
echo "Fertig!"
|
|
echo "Erfolgreich verarbeitet: $count Datei(en)"
|
|
[ $skipped -gt 0 ] && echo "Übersprungen (Fehler): $skipped Datei(en)"
|
|
echo "=========================================="
|