Seit geraumer Zeit beschäftige ich mich mit tmux. Neben den vielen Vorteilen, die ich ggf. mal in einem anderen Post erkläre, hat man in tmux auch eine Statusbar. Diese zeigt mir verschieden Informationen an z.B. über die aktuelle Session und die Windows. Allerdings kann man diese Statusbar auch selber gestalten.
SWR3 API
Ich höre bei der Arbeit quasi immer Radio. Ich greife dazu den SWR3 Webstream ab und kann so mittels VLC mein lieblings Radio direkt über das Terminal steuern. Nun wäre es aber schön, wenn ich auch im Terminal direkt den Titel sehen könnte, der gerade gespielt wird.
Auf der SWR3 Webseite kann man immer sehen, was gerade im Radio läuft. Ich habe mir mal den Source Code angeguckt und siehe da, es gibt eine API die abgefragt wird. Die API liefert mir die letzten 13 Songs zurück (chronologisch sortiert) mit Titel, Interpret, Cover URL, Zeitstempel. Sowie den Namen des aktuellen Radiosprechers + Bild und den Namen und die Zeitspanne der aktuellen Show.
Ich brauche davon nur 2 Werte: Letzer Titel + letzer Interpret.
API im Terminal auslesen
Mit der API habe ich nun genau die Informationen die ich haben will. Mittels etwas Terminal-Magic kann ich mir nun diese Information in der Statusbar anzeigen lassen.
$ curl -s https://www.swr3.de/ext/cf\=42/actions/feed/onair.json | python -mjson.tool | grep -m 1 "artist" | cut -d '"' -f 4
Mit curl
hole ich mich erstmal den JSON String, der die Daten enthält. Dann „pipe“ ich das ganze durch python
damit ich die JSON Repräsentation schön lesbar bekomme. Das hat den Vorteil, dass jetzt jeder Wert in einer eigenen Zeile steht. So kann ich einfach mit grep
nach dem ersten Treffer „artist“ (bzw. „title“) suche. Somit habe ich die Zeile, aber hier ist noch das Key-Value Pair. Das trenne ich einfach anhand des Doppeltenanführungszeichen auf und hole mir die 4. Spalte.
Theoretisch relative einfach, wenn man das erstmal verstanden hat. Aber es hat doch etwas gedauert bis ich die Richtige Lösung gefunden habe. Und so sieht das ganze in tmux aus:
Servus,
hab mir bis vor ein paar Tagen die Titel und Interpreten per Raspberry von der SWR3 Webseite gektratzt und auf einem Arduino angezeigt. Jetzt haben die die Webseite umgebaut und ich bekomme aus der Definitionsliste die Werte nicht gelesen. (Im DOM-Explorer sehe ich die Werte. Im Quelltext fehlen die Werte). Da Dein Beitrag sich mit dem Thema befasst, frage ich Dich um einen php Codeschnippel, der den aktuellen Interpreten und den aktuellen Titel „ausspuckt“. Dein onair.json geht nicht mehr. 🙁
Viele GRüße
Sigi
Servus,
ich verwende gar kein PHP, sondern nur den oben genannten CURL befehl. Ich greife direkt die JSON API von SWR3 ab und das Snippet von oben funktioniert nach wie vor. Also das onair.json von SWR3 hat sich meines erachtens nicht geändert.
Hm,
danke für die Antwort.
Da muss ich mich mal in Deine Komandozeile einarbeiten und das meinem Raspi beibringen. So auf klick-klack hatte es bei mir nicht funktioniert.
Mal sehen. Auf alle Fälle vielen Dank!
Viele Grüße
Sigi
Super, it Works.
Ich kann zwar, selbst wenn ich weis was ich suche, den Zusamenhang auf der swr3-Seite nicht herausfinden (So wie Du offensichtlich.), aber es funktioniert perfekt.
Vielen dank für Deine Vorarbeit.
Sigi
Servus,
SWR3 hat offensichtlich die Playliste umgebaut. Mit der OnAir.json kommt immer das gleiche, alte Ergebniss. Hast Du einen neuen Weg gefunden?.
Vg Sigi
Ist mir auch schon aufgefallen. Ich hatte aber noch keine Zeit genauer reinzugucken. Sobald ich mehr weiß, werde ich den Post updaten.
Habe mir das auch mal angeschaut. Leider liefert SWR3 keine Titel mehr.
Aber hierüber könnte man noch an den Titel rankommen:
https://scraper.onlineradiobox.com/de.swr3live
Das ist der Text, def auf dieser Seite zuletzt angezeigt wird:
https://onlineradiobox.com/de/swr3live/playlist/?cs=de.swr3live
Gruß,
Michael
Interessante Seite. Ich hab allerdings auch schon rausgefunden, dass die einfach die API geändert haben und der neue Endpoint liefert auch immer die aktuellen Infos aus. Aber ich kam einfach noch nicht dazu hier mehr zu unternehmen.
Hallo Hans,
ich konnte die neue API finden.
‚https://api.lab.swr.de/radiohub/v2/track/live/swr3/‘
Doku: https://docs.radiohub.swr.digital/
Allerdings kommt jetzt seit 3 Tagen ein Error zurück.
Hab SWR3 schon angeschrieben was los ist…
VG Sigi
Cool danke für den Hinweis, die API kannte ich nicht.
Ich bekomme einen 400er zurück, aber das liegt eher daran, dass ich keinen API Key habe. In der Dokumentation steht, dass man einen Key per Mail anfragen kann. Das habe ich mal gemacht und wenn das funktioniert würde ich den Blogs Post aktualisieren.
Hallo Helge,
ja, ich habe auch schon angefragt. Als Homie bekommt man aber noch keinen Zugang. Das ist jetzt genau für 8 Tage Super gegangen und dann wurden die Anmeldedaten scharf geschaltet. Ist schon ärgerlich … ich bleib dran.