ID3-Tags

Wer über ein Archiv von Audio-Daten verfügt, kennt das Problem, flink den richtige Sound-Schnipsel wiederzufinden. Eine Struktur der Dateien nach Genre oder Künstler und das entsprechende Einsortieren in passend benannte Verzeichnisse sorgt für eine erste Orientierung. Viele Programme sortieren anhand der Tags, die Sie in den Musikdateien hinterlegt haben. Bei MP3 sind das unter anderem Titel, Interpret, Album, Jahr, Genre, Kommentar, Nummer des Titels, Komponist, Originalinterpret, Copyright und URL.

Für die Recherche auf der Kommandozeile steht Taggrepper [8] bereit. Es unterstützt bislang die Formate MP3, Ogg Vorbis und FLAC. Taggrepper akzeptiert ein oder mehrere Suchwörter, die Sie über eine Option dem entsprechenden Tag in der Datei zuordnen. Die Optionen gibt es jeweils in einer Kurz- und einer Langvariante: So dient -a als Äquivalent für --artist und führt zu einem Vergleich mit dem Interpreten. Eine Ausnahme bildet --any-tag, welches das Suchwort mit jedem Tag in der Datei vergleicht.

Alle Suchwörter behandelt Taggrepper als Perl-kompatible reguläre Ausdrücke (PCRE, [9]) und gestattet somit maximale Flexibilität in der Anfrage. Die Ausgabe des Programms beinhaltet normalerweise nur die Namen der Musikdateien, bei denen es einen Treffer gab. Worauf der Treffer beruht, erfahren Sie, indem Sie den Aufruf um weitere Parameter ergänzen, beispielsweise um --display-artist für den Interpreten (Listing 3). Diese Option lässt sich für alle oben genannten Tags nutzen.

Listing 3

$ taggrepper --display-artist -a NDR *20*.mp3
stenkelfeld200.mp3
    Artist: NDR 2 - Neues aus Stenkelfeld
tenkelfeld204.mp3
    Artist: NDR 2 - Neues aus Stenkelfeld

Für die rekursive Suche über mehrere Verzeichnisebenen hinweg bietet Taggrepper die Option -r an (Listing 4). Kombinieren Sie die verschiedenen Optionen miteinander, finden Sie schnell die gewünschte Musikdatei – vorausgesetzt natürlich, dass die Tags in den Audio-Daten vollständig eingetragen sind.

Listing 4

$ taggrepper -r --any-tag "Redaktion" --display-artist --display-title .
./hr2/derTag_20101125.mp3
    Title: Der Papst im Beichtstuhl - Aus dem Inneren des Vatikans
    Artist: Redaktion Der Tag
./hr2/derTag_20101209.mp3
    Title: Das Empire schlägt zurück - Assange und die verratene Freiheit
    Artist: Redaktion Der Tag
./hr2/derTag_20110902.mp3
    Title: Wo der Bodden blubbert... Unbekanntes Mecklenburg-Vorpommern
    Artist: Redaktion Der Tag

Genügt der Funktionsumfang von Taggrepper Ihren Ansprüchen nicht, stehen etliche grafische Alternativen bereit, beispielsweise Easytag [10] und Ex falso [11]. Diese bieten nicht nur die Möglichkeit, die Inhalte der Tags zu verändern, sondern ermitteln bei Bedarf auch die Details zu Bitrate, Länge des Audio-Stücks und dessen MPEG-Stufe (Abbildung 3).

Abbildung 3: Ex Falso kitzelt aus einer MP3-Datei neben den Tags auch noch weitere Informationen heraus.

XML-Daten

Bei XML-Dateien handelt es sich um Textdateien mit einer definierten Struktur, am einfachsten zu vergleichen mit HTML. Der Unterschied besteht darin, dass Sie bei der Vergabe der Tags mehr Möglichkeiten haben. Im hierarchischen XML-Baum bezeichnet jedes Element einen Knoten. Wenden Sie Grep auf eine XML-Datei an, findet es alle Zeilen im Dokument, die das Suchwort enthalten. Die Suche mittels Grep ist kontextunabhängig, sofern Sie diese nicht mit Hilfe eines regulären Ausdrucks an eine bestimmten Zeichenfolge binden.

Um aber eine Anfrage der Form "Finde alle Unterknoten mit dem Namen Name von Knoten und gebe deren Inhalt aus" zu beantworten, bedarf es anderer Werkzeuge. Das Formulieren einer solchen auf Knoten oder die Hierarchie bezogenen, kontextabhängigen Suche gelingt nur in Kombination mit Sed und Awk oder in Form einer Folge von XSLT-Anweisungen.

Das World Wide Web-Konsortium W3C [12] hat die Positionsangabe eines Knotens im XML-Strukturbaum seit längerem unter dem Begriff XPath standardisiert. Die Pfadangabe ähnelt der von Linux-Verzeichnissen, die Hierarchie-Ebenen trennt jeweils ein Schrägstrich.

Im Laufe der Zeit gab es mehrfach den Versuch, unter dem Namen Xmlgrep ein Grep-Analogon für die Suche in XML-Daten zu etablieren. Es existieren verschiedene Pakete, die ein solches oder ähnliches Kommando beinhalten. Dazu zählen das Perl-Modul XML::Twig [13], das Paket XMLStar [14], die XML-coreutils [15] und XMLclitools [16]. Xgrep [17] steht für Ubuntu bereit, XML_grep2 [18] hingegen nur im Quellcode.

Das Perl-Modul XML::Twig bietet unter anderem die Werkzeuge XML_grep und XML_spellcheck (bei Debian und Ubuntu im Paket xml-twig-tools) an. XML_grep verwendet zur Suche von Mustern in XML-Dateien eine Untermenge von XPath. Als Aufrufparameter akzeptiert XML_grep verschiedene Optionen, eine XPath-Angabe und die XML-Datei.

Listing 5 zeigt ein Beispiel für ein kurzes XML-Format zum Speichern von Buchtiteln. Die Option --text_only bei der Abfrage in Listing 6 sorgt dafür, dass das Tool nur der Inhalt der Knoten ausgibt. Die XPath-Angabe benennt einen Knoten in der dritten Ebene der Hierarchie, der mit <isbn> bezeichnet ist.

Listing 5

<?xml version="1.0" encoding="UTF-8"?>
<sortiment>
 <buch>
  <titel>XML</titel>
  <autor>Elizabeth Castro</autor>
  <isbn>3-8272-5994-0</isbn>
 </buch>
 <buch>
  <titel>Reif für die Insel. England für Anfänger und Fortgeschrittene</titel>
  <autor>Bill Bryson</autor>
  <isbn>9-783442-46596-5</isbn>
 </buch>
</sortiment>

Listing 6

$ xml_grep --text_only "//sortiment/buch/isbn" buch.xml
3-8272-5994-0
9-783442-46596-5
$

Das Paket XMLStar bezeichnet sich als XML-Werkzeugsatz für die Kommandozeile und ermöglicht das Transformieren, Abfragen, Validieren und Modifizieren von XML-Dateien in der Shell. Es steht als Debian/Ubuntu-Paket bereit (xmlstarlet), welches das gleichnamige Tool mitbringt.

Die Tests für diesen Artikel erfolgten auf der Basis der von den Entwicklern zuletzt freigegebenen Version 1.3.1 aus dem Januar 2012, da dieses Release stark fehlerbereinigt ist und stabiler als die bislang in Debian 6.0 "Squeeze" oder Ubuntu 11.10 "Oneiric" verfügbaren Pakete läuft. Die Programmaufrufe in den Beispielen erfolgten mit der lokal aus dem Quellcode übersetzten Version.

Der Aufruf zur Suche nach Unterknoten ähnelt dem von XML_grep, es kommen nur noch einige Parameter dazu (Abbildung 4). Der Parameter sel steht für "select" und bewirkt das Auswählen der Knoten, -t für die Einsatz eines (zur Laufzeit erzeugten) XSLT-Templates und -v als Kurzform für --value-of, auf den der XPath-Ausdruck für den gewünschten Knoten folgt. Am Schluss des Aufrufs steht die zu verarbeitende XML-Datei. Abbildung 4 zeigt den Inhalt der verwendeten XML-Datei und das Suchergebnis – die Inhalte der beiden Knoten <isbn> mit den ISBN-Nummern.

Abbildung 4: XMLStarlet gibt zeilenweise den Inhalt eines Knotens aus.

Falls Sie sich für das zur Laufzeit erzeugte XSLT-Template interessieren, machen Sie es mit dem Parameter -C sichtbar. Dabei zeigt die Applikation nur das Template an, sucht jedoch nicht (Abbildung 5). Das hilft einerseits, zu verstehen, wie das Programm funktioniert und wie das Suchergebnis zustande kommt. Andererseits erleichtert es die Suche nach möglichen Fehler. Nebenbei erhöht es das Verständnis für das Verarbeiten von XML-Formaten mit XSLT und XPath, was sich sicherlich auch an anderer Stelle als nützlich erweist.

Abbildung 5: Ausgabe des on-the-fly erzeugten XSLT-Templates.

In die gleiche Kategorie sortiert sich Sgrep [19] ein. Es sucht nach ineinander verschachtelten Strukturen und Mustern, benutzt dabei aber eine eigene Abfragesprache, die deutlich von Format der regulären Ausdrücke abweicht. Listing 7 zeigt eine Suche nach allen Knoten <isbn> im Dokument.

Listing 7

$ sgrep '"<isbn>" .. "</isbn>"' buch.xml
<isbn>3-8272-5994-0</isbn><isbn>9-783442-46596-5</isbn>

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 4 Heftseiten

Preis € 0,99
(inkl. 19% MwSt.)

LinuxCommunity kaufen

Einzelne Ausgabe
 
Abonnements
 

Ähnliche Artikel

Kommentare

Infos zur Publikation

LU 01/2015: E-Books im Griff

Digitale Ausgabe: Preis € 4,95
(inkl. 19% MwSt.)

Mit der Zeitschrift LinuxUser sind Sie als Power-User, Shell-Guru oder Administrator im kleinen Unternehmen monatlich auf dem aktuelle Stand in Sachen Linux und Open Source.

Sie sind sich nicht sicher, ob die Themen Ihnen liegen? Im Probeabo erhalten Sie drei Ausgaben zum reduzierten Preis. Einzelhefte, Abonnements sowie digitale Ausgaben erwerben Sie ganz einfach in unserem Online-Shop.

NEU: DIGITALE AUSGABEN FÜR TABLET & SMARTPHONE

HINWEIS ZU PAYPAL: Die Zahlung ist auch ohne eigenes Paypal-Konto ganz einfach per Kreditkarte oder Lastschrift möglich!       

Tipp der Woche

Ubuntu 14.10 und VirtualBox
Ubuntu 14.10 und VirtualBox
Tim Schürmann, 08.11.2014 18:45, 0 Kommentare

Wer Ubuntu 14.10 in einer virtuellen Maschine unter VirtualBox startet, der landet unter Umständen in einem Fenster mit Grafikmüll. Zu einem korrekt ...

Aktuelle Fragen

PCLinuxOS Version 2014.08 "FullMonty" Umstellung auf deutsch
Karl-Heinz Welz, 19.12.2014 09:55, 3 Antworten
Hallo, liebe Community, ich bin 63 Jahre alt und möchte jetzt nach Jahrzehnten Windows zu Linux...
ICEauthority
Thomas Mann, 17.12.2014 14:49, 2 Antworten
Fehlermeldung beim Start von Linux Mint: Could not update ICEauthority file / home/user/.ICEauth...
Linux einrichten
Sigrid Bölke, 10.12.2014 10:46, 5 Antworten
Hallo, liebe Community, bin hier ganz neu,also entschuldigt,wenn ich hier falsch bin. Mein Prob...
Externe USB-Festplatte mit Ext4 formatiert, USB-Stick wird nicht mehr eingebunden
Wimpy *, 02.12.2014 16:31, 0 Antworten
Hallo, ich habe die externe USB-FP, die nur für Daten-Backup benutzt wird, mit dem YaST-Partition...
Steuern mit Linux
Siegfried Markner, 01.12.2014 11:56, 2 Antworten
Welches Linux eignet sich am besten für Steuerungen.