[Archiv][Modul] Squeezebox (Testversion)

Funktioniert LSQ_SaveTempPlaylist und LSQ_LoadTempPlaylist schon richtig?

Sind leider noch nicht in der Doku vermerkt, oder?


LSQ_SaveTempPlaylist(<objektID>);
LSQ_LoadPlaylist(<objektId>,"media/musik/sprachdurchsage.mp3");
LSQ_LoadTempPlaylist(<objetktID>);


soll das so funktionieren oder muss ich noch mit Set und Get Postion arbeiten? Um den Aktuellen Titel zu unterbrechen und nach der durchsage wieder weiter abspielen zu lassen?

Sollte so gehen. Habe aber noch nicht getestet, darum noch nicht in der Doku.

Der alte Track wird (sollte) auch beim Load angesprungen werden, aber die alte Zeit nicht. Somit musst du diese mit SetPosition neu setzen und dann auch Play aufrufen.

Du kannst es im Script aber nicht direkt hintereinander aufrufen, sonst wird die Durchsage gleich durch die alte Playlist überschrieben.

Wenn ich so weit bin, kann ich versuchen das anders zu lösen.
Die Besonderheit bei der TempPlayList ist, dass diese nach dem laden vom Server gelöscht wird.

Aktuell habe ich aber keine Zeit zum testen oder einbauen neuer Funktionen :frowning:

Michael

Du kannst es im Script aber nicht direkt hintereinander aufrufen, sonst wird die Durchsage gleich durch die alte Playlist überschrieben.

Ja Ok logisch. Ich lese jetzt die Länge des mp3 files aus . und setzte nach dem LSQ_LoadPlaylist ein IPS_Sleep().

Das klappt auch!

Aber Save / Load TempPlaylist scheint noch nicht zu funktioniern . Bekomme immer eine FALSE zurück und das Radio zeigt eine leere Wiedergabeliste an.

Kann durchaus sein :slight_smile:

Ich komme erst nächste Woche dazu hier weiter zu machen.

Michael

Gibt es schon neue Erkenntnisse? Wahrscheinlich nicht, sonst hättest du es kund getan, oder?

Ich habe eine Menge am Modul umgebaut.

Eigentlich sollte das mit den Playlisten nun funktionieren, aber der Test steht noch aus.
Werde ich heute aber noch nachholen.

Letztens war dann der Akku meiner SqueezeBox leer, und ich hatte kein Bock bei dem schönen Wetter im Haus zu hocken.

Abfallprodukt war eine Akku Überwachung für die Geräte (Wenn sie denn einen haben könnten).

Die komplette Doku und natürlich das Modul, ist jetzt auf GitHub vorhanden:

Nall-chan/IPSSqueezeBox · GitHub

Eine Idee wie man das mit den Benachrichtigungen machen könnte, habe ich auch schon.

Michael

So ich habe die SaveTemp und LoadTempPlaylist mal gefixt :slight_smile:

Nun geht es an das Bearbeiten von Playlisten. Mal sehen was ich da so bauen kann.

Das sind dann alles LMS_* Befehle, welche auf die Instanz des Logitech Media Server zeigen müssen.

Aktuell sind schon ein paar enthalten, wie z.B. LMS_CreateAllPlayer, dieser legt alle bekannten SqueezeBoxen an :slight_smile:

Michael,
der endlich auf ein BugFix für die Settings hofft :rolleyes:

So wieder ein größeres Update.

Es sind jetzt diverse Playlist und SongInfo Befehle fertig geworden.
U.a.:

[ul]
[li]LMS_GetSongInfoByFileID[/li][li]LMS_GetSongInfoByFileURL[/li][li]LSQ_LoadPlaylistByAlbumID[/li][li]LSQ_LoadPlaylistByGenreID[/li][li]LSQ_LoadPlaylistByArtistID[/li][li]LSQ_LoadPlaylistByPlaylistID[/li][li]LSQ_GetPlaylistInfo[/li][/ul]
Funktionsreferenz wie gehabt auf GitHub.

Ebenso wie die Darstellung der aktuellen Playlist eines Players im Webfront.
Es kann durch ein Klick auf eine Zeile direkt zum Track gesprungen werden, funktioniort auch in den Apps.
Und dank des neuen Webhook sogar ohne Script im User Ordner. :smiley:
Das Aussehen der Playlist kann in dem jeweiligen Script ‚Playlist Config‘ angepaßt werden.

Playlisten bearbeiten ist noch in Arbeit, und noch nicht endgültig getestet und dokumentiert.
Die Befehle stehen aber schon fest:

[ul]
[li]LMS_CreatePlaylist[/li][li]LMS_DeletePlaylist[/li][li]LMS_AddFileToPlaylist[/li][li]LMS_DeleteFileFromPlaylist[/li][/ul]

so long…

Michael

Edit: Oh, fast den Screenshot vergessen :wink:

Moin Michael,

prinzipiell weiterhin begeistert, aber das Neukonfigurieren nach dem Updaten ist nervig, da sich mit LMS_CreateAllPlayer die IDs ändern. Könntest du da nicht auch ein Update versuchen? Am Besten in dem Baum wo der Aufruf liegt die entsprechenden Instanzen suchen und aktualisieren.

Außerdem funktioniert die Cover Anzeige bei mir wieder nicht. Die notwendige Änderung hatte ich herausgefunden, aber gerade zum Upaten blöderweise mein Modul gelöscht, sonst geht das Update ja nicht. Ich suche das am Wochenende noch mal raus.

Weiter so :cool:, ich warte noch auf die Weckerunterstützung :D.

Kleine Ergänzung:
Sollte nach dem Wechsel von einer Playlist zu einem Radiostream keine korrekte Playlist oder Stilrichtung geliefert werden, dann bleiben die alten Werte stehen. Eventuell wäre das Löschen aller Variablen beim Wechsel sinnvoll.

Ja, bei den Streams habe ich (wieder) eine Baustelle.

Das mit den fehlenden Settings nervt mich auch. Aber wo nix ist, kann ich nix automatisch updaten :frowning:

Der Wecker ist auch auf meiner ToDo… vorgestern schon mal mit rumgespielt.

Das mit dem Cover würde mich sehr intressieren.

Michael

Moin Ralf,

dieses Problem habe ich auch mit meinen Modulen.
So wie ich es verstehe, werden die ID’s in die settings.json eingetragen, und wenn ein Update kommt werden die mit den „standard Werten“ vom Modul überschrieben.

Ahhhh. Danke für den Schubs.
Jetzt habe ich tatsächlich eine Idee für einen Workaround.
Auch wenn es bestimmt besser wäre Paresy fixt das ‚weiter oben‘ im System.
Michael

So jetzt etwas mehr Details :slight_smile:

Ich könnte es versuchen am Namen festzumachen.
Aktuell prüfe ich auf die Mac-Adresse in den Settings… das ist aber durch den Bug mit den Settings genau das Problem :frowning:
Siehe weiter unten.

Ich frage mich, was da nicht funktioniert ?
Welche Version vom LMS hast du installiert ?
Ich hole direkt das aktuelle Bild welches dem Player zugeordnet ist vom WebServer des LMS.
Dies schreibe ich dann in ein Media-Objekt, damit es auch in den Apps angezeigt wird.

Ich frage diese Werte jetzt (wieder) gezielt ab, sollte also mit der Version von heute funktionieren :slight_smile:
Der Playlistname ist bei einem Stream auch häufig der Sender-Name. Siehe Screenshot.
Leider liefern einige Streams auch ihren Namen als Album und dann als Titel den Song + den Sendernamen.
Aber das liegt außerhalb meines Einflussbereiches.

Und ich weiß nun auch warum…
Weil die Werte der Setting beim Aufruf von Create immer leer seind.
Darum funktioniert auch meine Ideee mit dem Workaround nicht.
Außer ich lagere diese Daten auch noch in eine IPS-Variable aus.
Aber ehrlich gesagt… nö.
Hier muss endlich ein Fix seitens IPS-Team her :stuck_out_tongue:

Michael

Hier der Screenshot von einem Radio-Stream:

Sehe ich auch so.
Hatte auch überlegt in IPS-Variable auszulagern.

Mal abwarten …

Wenn das gefixt ist, macht es mit den Modulen richtig Spass…

Hallo Michael,

habe dein Modul gerade mal probiert.
Da ich keine Squeezebox habe, kurz den Server und Player von „http://www.max2play.com/max2play-image/“ auf einen Pi geworfen.
Geht recht gut und fix. :smiley:

Die Möglichkeiten der „Squeeze Technik“ sind schon sehr gut.

Ich habe 2 Squeeze Radios, 2 PIs mit News - piCorePlayer und auf zwei Windows Rechnern bei Bedarf Softsqueeze 3.9b2.

Auch die Tests auf einem alten HTC HD2 mit Android (CM) und einem entsprechenden Player klappen gut.

Moin Ralf,

den piCorePlayer hatte ich auch mal schnell probiert, ging auch.
max2play hat für mich den Vorteil, Online zwischen Player und Server umzuschalten.
Was bei mir jetzt reinkommt, ist ein Pi Server mit Player, und ein Client.

Da hat Michael was gutes gebaut, weiter so…

ps einen Nachteil sehe ich noch, es muss immer der Server rennen, mal sehen …

Bei mir läuft ein Nightly Build „Logitech Media Server Version: 7.8.1 - 1437980708“.

Außerdem sitzt zumindest ein Fehler vor dem Bildschirm, da du immer den Webport auf 9000 stellst, bei mir aber 9001 eingestellt ist und ich die Korrektur immer vergesse.

So, mal wieder den Code hergestellt, mit dem ich ein Bild bekomme.


        if (!($ParentID === false))
        {
            $Host = IPS_GetProperty($ParentID, 'Host') . ":" . IPS_GetProperty($ParentID, 'Webport');
            $Size = $this->ReadPropertyString("CoverSize");
            $PlayerID = rawurlencode($this->Address);
            $CoverRAW = @Sys_GetURLContent("http://" . $Host . "/music/current/cover.png?player=" . $PlayerID);
//            $CoverRAW = @Sys_GetURLContent("http://" . $Host . "/music/current/" . $Size . ".png?player=" . $PlayerID);
            if (!($CoverRAW === false))
            {
                IPS_SetMediaContent($CoverID, base64_encode($CoverRAW));
            }
        }

Die auskommentierte Zeile ist dein Original, ich verstehe nicht, was an der Stelle bei dir $Size soll.

Laut CLI Doku ist der Aufruf eigentlich

In addition, there is a shortcut URL to return the artwork of the currently playing song for a player:

http://&lt;server&gt;:&lt;port&gt;/music/current/cover.jpg?player=&lt;playerid&gt;

where:

&lt;server&gt; is the ip address or name of the server.
&lt;port&gt; is the HTTP port of the server (not the same as the CLI port).
&lt;playerid&gt; is the unique identifier for the player, as above. If omitted, the server will use a random player.

Der Aufruf mit „.png“ funktioniert bei mir ebenfalls.

Size ist ein String der aus den Settings kommt. Dort steht ab Werk auch cover.
Also sollte es gehen.
Wobei die Originalcover bei mir verschiedene Größen haben.
Darum stelle ich immer auf cover300x300 um.
Michael

Seit dem letzten Update ;logi1.png