Webradio V3

Ein Versionsupdate hat sich eingeschlichen, und keiner hat’s gemerkt!

Als Weiterführung des Webradio V2, habe ich mich entschlossen einen neuen Blog-Eintrag zu erstellen…

Durch einige Funktionserweiterungen des Webradio V2 und ein paar notwendigen Bug-Fixes haben sich die Versionsnummern immer weiter erhöht, was dazu führte, dass Webradio V2 im Stillen und Leisen zu Webradio V3 wurde! … Keiner hats gemerkt. Auch ich nicht 😀

Hier eine Übersicht der bisherigen V3 Versionen:

UPDATE 12.07.2017 - Neues Shut-Down-Menü

Leider hat sich die Website bei der ich die Wetter-Daten abgreife dazu entschlossen seine Cookies zu ändern, was webradio.py durchaus in Probelme brachte.
Im Zuge der Reparatur dieses Problemes, habe ich die Gelegenheit gleich genutzt um ein neues Feature ins Shut-Down-Menü ein zu fügen. Ab sofort, gibt es zusätzlich die Möglichkeit, webradio.py zu beenden! 😉



0.3.0 12.07.2017 Feature-Update:
* Es gibt im Shut-Down-Menü nun neben der Funktion "Herunterfahren", "Neustarten" und "Standby" auch
eine weitere Option "Schließen", die das Programm beendet, allerdings den Rechner nicht herunterfährt.

Bugfix
*Weather-Widget funktionierte nicht mehr, da es mit den neu verwendeten Cookies des Wetterdienstes nicht
umgehen konnte. -> Fix

UPDATE 29.08.2017 - die Qt-Welt ändert sich langsam... der verlangt Anpassungen

Mit voranschreitender Zeit, gibt es natürlich immer wieder neue Versionen der Raspbian Distributionen und auch die Python-Welt entwickelt sich rasant weiter… Dies führt manchmal dazu, dass gewisse Teile und Librarys nicht mehr verfügbar sind. So war es auch mit der aktuelleren Version “Rasbian Stretch”, welches leider das Modul Qt-Webkit aus deren Repositorys entfernt hat.
Installiert man nun Webradio, mit der aktuellen Anleitung auf einem aktuellem Stretch, lässt sich das Programm leider nicht mehr öffnen und beklagt sich über eine fehlende Lib. Dies konnte Gott sei Dank, leicht behoben werden.


0.3.1 29.08.2017 Bug-Fix:
* das Modul "QT-Webkit" wird ab Debian8 bzw. "Stretch" nicht mehr ausgeliefert bzw. ist nicht mehr verfügbar.
da das Modul in diesem Fall nicht unbedingt verwendet werden muss, wurde der Code von "flickercharm.py"
entsprechend angepasst.

UPDATE 27.09.2017 - Ab jetzt kann webradio auch FLAC!

Ein Nutzer hat bei mir angefragt und erzählt, dass seine komlette Musik-Sammlung aus *.flac Dateien besteht, da diese weniger Qualitätsverlust mitbringen. Leider Musste er feststellen, dass sich diese Dateien mit webradio.py nicht abspielen lassen. Da der zugrunde liegende MPD (Music Player Daemon) allerdings Flac unterstützt, war eine Implementierung nicht schwer! Wer also auch Flac Dateinen in seiner Musiksammlung hat, sollte sich die neue Version installieren!


0.3.2 27.09.2017 Feature Update:
* FLAC Support includiert! Danke dafür an Paul Ritz!

UPDATE 09.11.2018 - IDv3 Unterstützung und ein 'Pause' Button

Nach langer Zeit ohne Updates (aber auch ohne Bugs!) war es wieder mal so weit! Diesmal hat mich ein Nutzer darauf hingewiesen, dass der Webradio keinerlei Möglichkeit bietet, einen Titel zu pausieren (im Media-Player). Außerdem besitzt der Nutzer eine gut gepflegte MP3 Sammlung die über eingebettete Album-Cover verfügt. Allerdings werden/wurden diese nicht von webradio.py verwendet, sondern immer eines aus dem Internet geladen…

Es wurde auch die Anzeige des Interpreten als Idee und Wunsch mit aufgenommen…


0.3.3 09.11.2018 Feature-Update:
* Verwendung von evtl. vorhandene IDv3 Embedded Front-Covers für die Anzeige von Albumart im MP3-Player
anstelle von Online-Downloads wenn die jeweilige MP3 Datei lokal abgelegt ist.
Benötigt wird eine zusatz-lib (sudo pip install eyeD3).
* Zusätzliche Anzeige des Interpreten bei der Wiedergabe im MP3-Player Modus.
* Verzerrungsfreie Darstellung des Album-Covers im MP3 Player Modus.
* Neue Funktion "Pause" in Media-Player möglich.
* kleinere Bug-Fixes

Wie geht es denn nun weiter mit Webradio.py ?

Mein Webradio läuft nun schon seit 3 Jahren in unterschiedlichen Versionen überraschend fehlerfrei und ohne größere Probleme, obwohl das Programm von vielen Web-Diensten abhängt und von daher naturgemäß instabil sein sollte. Von da her, kann man an dem Programm nur noch wenig verbessern.
Das einzig größere Thema, was noch ansteht, ist:

  • Bereinigung des Codes bzgl. Import nicht gebrauchter Bibliotheken
  • Konservierung der verwendeten Libs aus Qt4 und Python 2.7, um den weiteren Betrieb bei zukünftigen Raspbian Versionen zu gewährleisten
  • die Installation soll endlich mittels DEB-Paket möglich sein, bei der alle notwendigen Programme installiert, und alle Einstellungen getroffen werden.
  • Webradio soll als “Dienst” laufen und auch als solcher verwaltet werden können

Ich hoffe, dass ich diesen Winter wieder etwas Zeit finden um an all den Punkten arbeiten zu können.

12 Kommentare

  1. Respekt !!!!
    Ich habe auf der Suche nach einem geeigneten Webradio für unsere Werkstatt deinen Beitrag auf YouTube gefunden. Als absoluter Linux Anfänger war ich zuerst skeptisch ob ich das hin bekomme. Ein Raspberry Pi Zero W war noch vorhanden. Also habe ich mich am Samstag dran gemacht. Perfekt !!! Es läuft super. Der Start ist zwar etwas zähflüssig, ist aber sicherlich der abgespeckten Variante des Raspberry Pi W geschuldet. Schade, das man mit dem Display und der Auflösung so abhängig ist. Ich hätte da noch ein 3,5″ Display von KUMAN. Das hat aber leider nur 480x 320 Pixel. Da wäre auch gleich eine Idee von mir, vielleicht noch mal eine andere Oberfläche für kleinere Displays zu überdenken. Ich weis, das das viel Arbeit macht, aber es wäre auf jeden Fall überlegenswert. Eine weitere Idee von mir wäre, einen Webbrowser oder ähnliches zu integrieren, damit man über z.B. ein Smartphone das ganze bedienen kann. Dann könnte man auch das Webradio ohne Anzeige betreiben. Oder gibt es eine App für Android, um über den Terminalserver zugreifen zu können? Ich würde mich sehr freuen wenn das Projekt weiterlebt.

    1. Hallo Frank, danke für das Lob und schön, dass die mein Programm gefällt. Es gibt in der Tat reichlich bestehende Apps, die zur “Fernsteuerung” geeignet sind. Wenn du ein Android Handy hast, empfehle ich dir die App “MPD Control” aus dem Play-Store. Server angeben/auswählen und los gehts. Vielleicht sollte hier mal hierzu einen Wiki Eintrag schreiben 😀
      Den Wunsch nach Support für noch keinere/geringer auflösende Displays gab es schon häufiger, allerdings geht das aufgrund der Vielzahl der Bedienelemente und Funktionen nicht… Soetwas wird es leider nicht geben. Weiterhin viel Spaß damit! Matthias

      1. Hallo Matthias,
        Eigentlich schade. Aber da hätte ich doch noch eine Frage. Gibt es eigentlich einen grafischen Editor für die Bedienoberfläche des Webradios, so das man selber mit der Anordnung und der Größe der Bedienelemente experimentieren kann? Die App “MPD Control” habe ich schon ausprobiert. Sie begeistert mich aber nicht wirklich. Ich vermisse hier echte Steuerfunktionen wie runterfahren, beenden usw. Ich dachte da an eine APP, wo ich deine Oberfläche auf dem Smartphone angezeigt bekomme. (ähnlich wie Mirror Link) Dann könnte man sich das Display komplett sparen und auf die geringere Auflösung verzichten. Eigentlich würde es auch ausreichen, wenn man auf dem “kleineren Bildschirm” die Möglichkeit hätte, das angezeigte Bild zu scrollen, um an die im Moment nicht sichtbaren Funktionen zu gelangen. Denn eigentlich sind die Informationen für den laufenden Betrieb auf dem “kleineren Display” alle vorhanden. Es fehlen halt “nur” die Bedienelemente.

        1. Hallo Frank, webradio.py ist eine PyQt4 Anwendung. D.h. zur Bearbeitung der GUI kannst du den Qt4-Designer verwenden. Mit diesem, kannst du dann *.ui Dateien bearbeiten, welche ich im Repository auf Github hochgeladen habe. Nachdem die ui-Daten editiert wurden müssen diese allerdings noch in python-Code convertiert werden (dies geht mit dem Programm “pyuic4”) welche die entsprechenden Daten in dem ui-Ordner ersetzen. Bezüglich deiner zweiten Frage und der vollständigen Anzeige des “Display-Inhaltes” deines Webradios, kannst du natürlich VNC verwenden. Wie ein x11vnc Server installiert/verwendet wird, habe ich bereits im Wiki auf Github beschrieben. Als “Client” kann natürlich auch ein VNC-App auf dem Handy dienen, was dich dann in die Lage versetzen sollte, dass du das Radio vollumfänglich fernsteuern kannst, wenn die die bestehenden Apps nicht zusagen.
          Viele Grüße,
          Matthias

          1. Hallo Matthias,
            VNC habe ich probiert, bekomme aber einen Fehler 22 wenn ich mich richtig erinnere. (falsches Protokoll). Vielleicht mache ich ja auch etwas falsch. Ich werde mich noch mal daran versuchen. Danke für deine Tipps und weiter so.

    1. Hallo Marco, schön dass dir mein Projekt gefällt 🙂 Leider lässt sich Spotify nicht so einfach integrieren, allerdings möchte ich dir einen Schubs in die richtige Richtung geben. Du könntest ja rein theoretisch dafür sorgen, dass du mehrere virtuelle Desktops hast … sagen wir mal “nebeneinander”. Wenn du dann das programm Easy-Stroke installierst, und neben dem Webradio, der … sagen wir mal auf dem ersten Desktop gestartet wird, auch noch den nativen Spotify-Client auf dem 2ten Desktop startest, könntest du dir eine “Wisch-Geste” konfigurieren, mit der du zwischen den Desktops hin und her schalten könntest 😀 Manche Leute haben auch ihre Kalender-App oder einen Email-Client auf einem 3ten und 4ten Desktop laufen. Die Möglichkeiten sind mannigfaltig 😉 Viel Erfolg weiterhin, Matthias

  2. Hallöchen …
    mein Mann will ich ein Webradio zusammenbasteln (und ich und Sohnemann wollen ihre eigene Variante dann mal haben) und bei der Suche nach Anregungen sind wir auf deine Videos und dein Projekt gestoßen.
    Mein Mann, als Informatiker, will es eher mit Qt und C++ machen (was er sonst auch immer nutzt), daher kann er deinen Code nicht genau nutzen, aber er hofft auf Anregungen. Nun sollte, nachdem mpd sicher läuft, die Auswahlmöglichkeit dazu und da haben wir gehofft, dass wir das auch über Radio.de machen können. Wenn man sich aus den Code eine Adresse zusammenstückelt kommt allerdings die Meldung, dass es ohne Passwort nicht geht.
    Hast du da Infos dazu? Oder gibt es gar eine Dokumentation zu der Radio.de-Api?
    Danke und viele Grüße, Birgit

    1. Hallo Birgit,
      ich benutze mit webradio.py das Python-Binding zu Qt(4) nämlich PyQt4. Allerdings ist dies natürlich nicht 1:1 übertragbar auf C++. So wie sich das anhört, macht das dein Mann auch nicht um “irgend einen Webradio zu bauen”, sondern um “seinen Webradio” zu bauen 😉
      Die Api von radio.de ist meines Wissens nicht (öffentlich) beschrieben, sondern man erhält die Beschreibung wohl erst beim (kommerziellen) Erwerb eines gültigen API-Keys, welcher für jede Anfrage an den Server benötigt wird und als Header in den Request übergeben werden muss.
      Am besten, man sucht sich Api-Bibliotheken aus anderen (open Source) Projekten und schnitzt sie seinen Bedürfnissen entsprechend um. Der Api-Key ist hier z.B. “USER-AGENT” genannt, funktioniert allerdings leider nicht mehr…

  3. Hallo Mattias,
    das Web Radio funktioniert nach wie vor problemlos. Jetzt zur Weihnachtszeit hat meine Frau
    einen Stick mit ca. 70 Weihnachtsliedern von verschiedenen Interpreten abgespielt und festgestellt, dass alle Lieder vom gleichen Interpreten hintereinander abgespielt werden, was sie nicht so schön fand. Nun meine Frage: Könnte man nicht einen Botton für eine Zufallswiedergabe machen? Vielleicht dazu den Wiederholen-Button verwenden!
    MfG
    Holger

    1. Hallo Holger, prinzipiell ist MPD fähig eine Playliste im “Random” Mode ab zu spielen, bei dem einfach mal “durchgemischt” wird… Leider habe ich diese Funktionalität nie für das UI vorgesehen und daher auch keinen Platz für einen zusätzlichen Button eingeplant (das GUI soll ja auch bei einer minimalen Auflösung von 640×480 noch bedienbar sein).
      Daher meine Lösungsvorschläge:
      (1) Du nummerierst die 70 Dateien in der Reihenfolge wie du sie abspielen willst
      (2) Du aktivierst den “Random-Mode” über das Terminal via “mpc random”
      (3) Du sortierst die Titel nach dem importieren über den Playlist-Editor… was allerdings recht umständlich sein wird
      Auf die schnelle kann ich diese zusätzliche Funktionalität leider nicht implementieren.

      Mfg
      Matthias

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.