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:
- Es gibt für fast alles ein einfaches Linux Tool.
- Es gibt ein OpenSource PowerShell Projekt. Leider sieht das Projekt ziemlich tot aus.
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…