Inhaltsverzeichnis aus den ID3-Tags

Datum: 2002-08-08
Quelle: suse-linux

Worum ging es?

Wie kann man sich aus den vorhandenen ID3-Tags der MP3-Sammlung ein Inhaltsverzeichnis basteln? Neben den diversen mehr oder weniger komfortablen grafischen Programmen gibt es ein schnuckeliges kleines Kommandozeilen-Tool namens mp3info, das man für diese Aufgabe perfekt nutzen kann. Im vorliegenden Fall sollte das Ergebnis auf einem Drucker erscheinen.

Code
# Inhalt eines Verzeichnisses / TOC of a single directory
for i in *.mp3; do
  mp3info -p "%02n %t %a\n" "$i"
done | sort | lpr
# Inhalt rekursiv ueber einen Verzeichnisbaum / content recursively for a directory tree
base_dir=`pwd`
find . -type d -mindepth 3 -print | while read d; do
  cd "$base_dir/$d"
  for i in *.mp3; do
    mp3info -p "%02n %t %a\n" "$i"
  done | sort | lpr
done
# das Gleiche, aber nur ein Durckauftrag / the same, but only one print job
base_dir=`pwd`
find . -type d -mindepth 3 -print | while read d; do
  cd "$base_dir/$d"
  basename "$d"
  for i in *.mp3; do
    mp3info -p "%02n %t %a\n" "$i" || break
  done | sort
  echo
done | lpr
Beschreibung

Die Schleife im ersten Beispiel durchsucht in einem Verzeichnis alle MP3-Dateien und gibt formatiert die Nummer des Tracks, den Titel und den Interpreten aus. Will man dies für eine ganze Verzeichnis-Hierarchie machen (bei mir gilt die Struktur Anfangsbuchstabe/Interpret/Album), dann geht das wie im 2. Beispiel.
Für jedes aufgefundene Verzeichnis wird eine Liste erstellt und als separater Druckauftrag zu Papier gebracht. Wenn Du eine andere Organisation auf Deiner Platte hast, musst Du unter Umständen den Parameter -mindepth 3 entsprechend anpassen.
Das dritte Schnipselchen verzichtet darauf, für jedes gefundene Verzeichnis einen eigenen Druckauftrag zu starten und baut stattdessen einen einzelnen Job auf. Wie zu sehen ist, werden nur die Pipes zum Weiterreichen der Ausgaben ein wenig anders angeordnet.