XML auf der Kommandozeile parsen

Den heutigen Abend habe ich unter Anderem damit zugebracht, von der arte Webseite eine Anzahl Videos herunterladen zu wollen. Normalerweise nehme ich dazu MediathekView, aber diese Videos waren leider nicht drin. Nach einiger Suche habe ich dann auch die Playlist gefunden – eine XML Datei, in der sowohl die niedrige als auch die hohe Qualität der Filme vermerkt waren.

      

Mir ging es jetzt also darum, die einzelnen HD-URLs rauszuparsen. Da ich auf Arbeit gerade viel mit Microsoft PowerShell hantiere, fiel mir ein, wie einfach das jetzt wäre:

$videos = [XML] (Get-Content -Path video-playlist-46.xml)
$urls = Select-XML -Content $videos -XPath "//urlHd" | % {$_.node.InnerXML}

Den Umweg über Get-Content könnte man sich sogar noch sparen …

Tja, nun habe ich zu Hause aber Linux. Die üblichen Verdächtigen habe ich dann gleich mal drauf angesetzt.
grep liefert die Tags mit. awk – zumindest so, wie ich es auf die Schnelle geschrieben habe, liefert auch die ganze Zeile, also mit Tags. Bevor ich weiter mit egrep versucht habe, bzw. meine Perl Kenntnisse ausgegraben habe, befragte ich die große Datenhalde.

Rausgekommen sind zwei Erkenntnisse:

Das Tool xml_grep liefert dann auch schnell die gewünschten Ergebnisse:

xml_grep urlHd video-playlist-46.xml --text_only

Am Runterladen der Videos bin ich trotzdem gescheitert, flvstreamer fehlt wohl noch eine Option, dass es klappt. So findet er keinen Mediastream…

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.