Blog Digitalgesellschaft Verwaltungsbetrieb Textarchiv Textarchiv Walter Kirk (✝) Impressum
UniqueID, UMID und TLEN als Tag ergänzen
In einigen Fällen ist es sinnvoll, die Angaben zu einer Uniqu ID, zur Unique Material ID (UMID) und zur Länge eines Tracks (TLEN) den Metadaten der Audiodatei hinzu zu fügen. Unter dem Betriebssystem Linux lassen sich hierfür Bash-Scripte nutzen. Alle Scripte sind den eigenen Bedürfnissen anzupassen (ext) und ausführbar einzustellen mit:
xxxxxxxxxx
test@geraet:~$ chmod -R 0777 *.*
Folgende Programme sind zu installieren:
xxxxxxxxxx
test@geraet:~$ sudo apt install id3tag ffmpeg
SHA checksum ist in den coreutils enthalten und muss daher nicht gesondert installiert werden.
Zur Ermittlung das folgende Script als get-uniqueid.sh speichern:
xxxxxxxxxx
# Loop through all mp3 files in the current directory
for file in *.mp3; do
if [[ -f "$file" ]]; then
# Generate a unique ID (SHA256 hash) for each MP3 file
unique_id=$(sha256sum "$file" | awk '{print $1}')
echo "File: $file, Unique ID: $unique_id"
fi
done
Zur Ermittlung das folgende Script als get-umid.sh speichern:
xxxxxxxxxx
# Funktion zur Generierung einer UMID für eine M4B-Datei
generate_umid_for_file() {
# Pfad zur M4B-Datei
file=$1
# Berechne den SHA-512-Hash der Datei
file_hash=$(sha512sum "$file" | awk '{print $1}')
# 1. Präfix gemäß SMPTE-Standard (16 Byte)
prefix="060A2B3401010101"
# 2. Zeitstempel (48 Bit), aktuelles Datum und Uhrzeit in Sekunden
timestamp=$(date +%s) # Zeitstempel in Sekunden
timestamp_hex=$(printf "%012X" $timestamp) # Umwandlung in Hexadezimal (12-stellig)
# 3. Seriennummer (32 Bit), basierend auf dem Dateihash
serial=$(echo -n "$file_hash" | head -c 8) # Die ersten 8 Zeichen des Hash als Seriennummer
# UMID zusammenbauen
umid="${prefix}${timestamp_hex}${serial}"
# Ausgabe der UMID
echo "$file -> UMID: $umid"
}
# Durchlaufe alle M4B-Dateien im Verzeichnis
for file in *.m4b; do
if [ -f "$file" ]; then
# Generiere eine UMID für jede M4B-Datei
generate_umid_for_file "$file"
fi
done
Zur Ermittlung das folgende Script als get-length.sh speichern:
xxxxxxxxxx
# Check if id3tag is installed
if ! command -v id3tag &> /dev/null; then
echo "Error: id3tag is not installed. Install it using: sudo apt install id3tool"
exit 1
fi
# Process all MP3 files in the current directory
for MP3_FILE in ./*.mp3; do
# Skip if no MP3 files are found
[ -e "$MP3_FILE" ] || continue
echo "Processing: $MP3_FILE"
# Get duration in seconds using ffprobe
DURATION=$(ffprobe -i "$MP3_FILE" -show_entries format=duration -v quiet -of csv="p=0")
# Convert duration to milliseconds
DURATION_MS=$(awk -v dur="$DURATION" 'BEGIN {printf "%.0f", dur * 1000}')
# Add TLEN tag without removing existing metadata
id3v2 --TLEN ="$DURATION_MS" "$MP3_FILE"
echo "TLEN set to $DURATION_MS ms for $MP3_FILE"
done
echo "Processing complete!"
Wer selbst Audiodateien erstellt, wird mit den aufgezeigten Möglichkeiten die notwendigen Ergänzungen vereinfacht vornehmen können.
Wolfgang Kirk
Veröffentlicht: 2025-03-10, 16:00 Uhr aktualisiert: