Liederliste aus Radiostream extrahieren
22. November 2019
Nach kurzer Zeit ging mir die ständige Werbung auf RockAntenne ziemlich schnell auf den Zeiger. Daher stellte sich mir die Frage, ob ich nicht irgendwie die Liederliste extrahieren könnte. Das geht relativ einfach. Man schnappe sich einen Audiostream und die Ausgabe von mpv muss dann nur noch in eine Datei geschrieben werden.
$ mpv http://www.rockantenne.de/webradio/rockantenne.m3u | tee >> Liederliste_Rockantenne.txt
In der Textdatei sammeln sich so die ganzen Lieder und das was man nicht haben möchte wie Nachrichten und die ständige Eigenwerbung. Das sieht dann so aus.
$ head -n 20 Liederliste_Rockantenne.txt
Playing: http://mp3channels.webradio.rockantenne.de/rockantenne
(+) Audio --aid=1 (mp3 2ch 44100Hz)
AO: [pulse] 44100Hz stereo 2ch float
File tags:
icy-title:
File tags:
icy-title: Extreme - More than words
File tags:
icy-title: ROCK ANTENNE - Rock Nonstop
File tags:
icy-title: Def Leppard - Pour some sugar on me
File tags:
icy-title: ROCK ANTENNE - Rock Nonstop
File tags:
icy-title: Green Day - Father of all...
File tags:
icy-title: ROCK ANTENNE - Rock Nonstop
File tags:
icy-title: Queen - I want to break free
Ein passendes Skript mit dem man die Interpreten mit ihren Liedern herausfiltern kann, sieht so aus.
$ cat extractSongs.sh
#!/bin/sh
sed '/^ icy-title: ROCK ANTENNE/d' $1 | sed '/^ icy-title: Wetter/d' | sed '/^ icy-title: Nachrichten/d' | sed '/^File tags/d' | grep '^ icy-title:' | sed -e 's/^ icy-title: //g' | sed '/^[[:space:]]*$/d' | uniq
Man kann das Skript relativ leicht modifizieren, dann bekommt man aufgelistet welche Lieder wie häufig gespielt werden.
$ cat extractSongs.sh
#!/bin/sh
sed '/^ icy-title: ROCK ANTENNE/d' $1 | sed '/^ icy-title: Wetter/d' | sed '/^ icy-title: Nachrichten/d' | sed '/^File tags/d' | grep '^ icy-title:' | sed -e 's/^ icy-title: //g' | sed '/^[[:space:]]*$/d' | sort | uniq -c
Jetzt braucht es noch ein Skript, das die Musik irgendwo besorgt…
666
Neben dem “Mitlauschen” bieten sich auch Abstimmungen an. Eine war bis vor kurzem noch online, aber in einem behinderten Format. Sprich die ganzen Lieder lagen nur in Form von Bildern vor.
Die Bilder ließen sich dann auch alles andere als einfach herunterladen. Mit dem Firefox-Addon
kommt man dann trotzdem ran. Die Bilder jagt man dann einfach durch tesseract.
$ for i in *.jpg; do tesseract "$i" "$i.txt"; done
Anschließend verwirft man ein paar unsaubere Einträge
$ cat *.txt.txt | sed 's/^[ \t]*//;s/[ \t]*$//' | sed 's/”//g' | sed 's/“//g' | sed -r '/^.{,7}$/d' > 666.txt
und geht dann letztlich doch manuell durch die Liste, um offensichtliche Fehler auszubügeln.
Dazu gehören z.B. ein einzelnes l
oder |
die richtigerweise einem I
entsprechen sollen.
Das sollten fürs Erste genügend gute Lieder sein :)