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

DownloadAllImages

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 :)

Streaming mit CLIs

5. November 2023

dotfiles

6. April 2023

Screenshots nach PDF

9. Dezember 2021