M4A zu MP3 Massenumwandlung
Dieser IP Logger loggt die eigene IP-Adresse in eine CSV-Datei. Dies hat den Grund, dass man Vorwürfe jeder Art durch Vorlage der zu der Zeit genutzten IP-Adresse vorweisen könnte.Nützlich in Verbindung mit einem Cronjob.
Das Script holtwandelt viarekursiv "icanhazip.com"beginnend dieab aktuelleeinem IP-AdressePfad und($1) speichert sieM4A-Audiodateien in dieMP3 CSV-Datei.um. WennDie viaQualität Cronjobbleibt dasnahezu Scriptgleich. ausgeführtDer wird,Pfad empfehleist ichdem den Intervall auf stündlich$1-Argument zu setzen. Eine Zeit von-bis einzubauen halte ich für nicht sinnvoll, da das Internet zu dieser Zeit auch ausfallen könnte. Daher halte ich es für nicht sinnvoll, die IP-Adresse zu speichern und erst bei Änderung erneut zu schreiben.
übergeben.
🧾 Was macht das Script?Skript?
📁 1. AllgemeineEingabeparameter Initialisierung:prüfen
-
BestimmeErwartetdeneinaktuellenVerzeichnisBenutzerals erstes Argument -
Wenn kein Argument oder kein Verzeichnis → Fehlermeldung + Exit
🔍 2. Suche nach .m4a
-Dateien
-
Durchsucht rekursiv das Verzeichnis
-
Ignoriert Groß-/Kleinschreibung (
)whoami-iname -
SetzeLiefert eine Liste aller.m4a
-Dateien
🔁 3. Verarbeitung jeder Datei
Für jede .m4a
-Datei:
a. Bestimme Zieldateiname .mp3
:
b. Überspringen, wenn .mp3
auf:
bereits existiert:
c. Umwandlung per ffmpeg
:
-
Eingabe: M4A-Datei
-
Ausgabe: MP3 mit LAME-Codec (
libmp3lame
) -
guteSetzeQualität:$ippage-qscale:a 4auf=icanhazip.comVBR-Qualität Hole(~160aktuelle öffentliche IP viacurl
📬 Benötigte Tools:
kbps)curl-
= automatische Überschreibung (nc-ynetcat)falls Datei entstehen würde) -
sed< /dev/null,= verhindert interaktive Prompts
d. Erfolgskontrolle
uniq
✅ Ausgabe:
-
Gibt für jede Datei an, ob sie:
-
übersprungen wurde
-
Basherfolgreich>=konvertiert4wurde -
einen Fehler erzeugt hat
-
🧰 Benötigte Pakete / Tools
Tool | Zweck | Installationsbefehl (Debian/Ubuntu) |
---|---|---|
find |
Datei-Suche | in findutils enthalten (Standard) |
ffmpeg |
Konvertierung M4A → MP3 | sudo apt install ffmpeg |
Script:
#!/bin/bash
user=DIR="$(whoami)1"
data="/home/$user/script-data/$(basenameif [ -z "$0")"DIR" ippage="icanhazip.com"] ipneu=$(curl -s "$ippage")
if|| [ ! -d "$data"DIR" ]; then
mkdirecho -p"Usage: $0 /pfad/zum/verzeichnis"
exit 1
fi
find "$data"DIR" fi-type f -iname "*.m4a" | while read -r M4A; do
MP3="${M4A%.m4a}.mp3"
# Nur umwandeln, wenn mp3 nicht schon existiert
if [ -nf "$1" ] && [ "$1" = "suche"MP3" ]; then
catecho "Überspringe (bereits vorhanden): $MP3"
continue
fi
echo "Wandle um: $M4A → $MP3"
ffmpeg -i "$data/ipdb.csv"M4A" |-codec:a sedlibmp3lame 's/;/-qscale:a /g' | sed 's/\([0-9]\{4\}\)-\([0-9]\{2\}\)-\([0-9]\{2\}\)/\3.\2.\1/' | grep4 "$2"MP3" |-y awk< '{print $1, "", "", $3}' | uniq
exit
else/dev/null
if nc[ $? -zeq -w0 1 "$ippage" 443 2>/dev/null;]; then
echo "$(date +"%Y-%m-%d;%H:%M");$ipneu" >> "$data/ipdb.csv"
echo "OK:Erfolg: $ipneu"
else
if nc -z -w 1 "google.de" 443 2>/dev/null; then
echo "Fehler, $ippage nicht erreichbar."
echo "$(date +"%Y-%m-%d;%H:%M");$ippage nicht erreichbar" >> "$data/ipdb.csv"MP3"
else
echo "KeinFehler Internet."bei: echo "$(date +"%Y-%m-%d;%H:%M");offline" >> "$data/ipdb.csv"M4A"
fi
fi
fidone