Create remove_english_audio.sh
This commit is contained in:
67
remove_english_audio.sh
Normal file
67
remove_english_audio.sh
Normal file
@@ -0,0 +1,67 @@
|
||||
#!/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 "=========================================="
|
||||
Reference in New Issue
Block a user