NEWS
Test/Support Adapter SqueezeboxRPC
-
Ok zunächst hier eine Information, warum es diesen Schalter gibt
https://wiki.slimdevices.com/index.php/Various_Artists_logic.html
Der LMS hat wohl einen Mechanismus anhand er erkennt ob ein Album eine Compilation ist oder nicht. Der Schalter beeinflusst also nur das einsortieren eines Albums in irgendein Menü.
Mir ist das nie aufgefallen, da ich die Sortierung bei mir über Ordner mache und eigentlich auch immer nur über die Ordner drauf zugreife.Zum eigentlichen Problem.
Nach dem umstellen des Schalters habe ich ebenfalls feststellen können, das der Artist nicht gefüllt ist, da der in diesem Fall vom lms mit einem anderen Feldnamen gesendet wird.
Das zu beheben ist wahrscheinlich einfach und werde ich heute gegen später umsetzen. -
Neue Version 1.3.10
- Der Adapter registriert nun das Attribut albumartist als Artist, wenn die TPE2/TPE3-Option im LMS entsprechend eingestellt ist
-
Hi,
hier mal ganz kurz meine Lösung den Sleep Timer über den Adapter zu steuern.
Nicht schön, aber funktioniertÜber die
sleep_duration_sec
, die ich mir aus dem UI angle, wird bestimmt, ob nach einer bestimmten Zeit abgeschalten wird, oder am Ende des aktuellen Track.Danke und Kudos @oliverio
Quelle:
https://github.com/oweitman/ioBroker.squeezeboxrpc/issues/56 -
@evilels
Als Ergänzung:
Es geht hier um eine Steuerung des Sleeptimers zum Ende des aktuellen Liedes. -
@oliverio
Ok, erst mal danke das Du dich der Sache so schnell angenommen hast und sorry das ich noch einmal nerven muss.Ich habe das Update jetzt installiert und die Einstellung im LMS zunächst auf
„TPE2 MP3-Tag als Band behandeln“ belassen.Nun wird im ioBroker im Datenpunk „Artist“ überhaupt nichts mehr angezeigt. Egal wie die Felder TPE1 & TPE2 im id3-Tag ausgefüllt sind.
Das wird dem eine oder anderen der diese Einstellung nutzt sicher nicht gefallen.Nachdem ich die Einstellung im LMS dann wieder auf
„TPE2 MP3-Tag als Interpreten des Albums behandeln“ zurück gestellt habe wird der Datenpunkt „Artist“ im ioBroker wieder befüllt.Allerdings besteht nun das Problem das, wenn ich einen Sampler abspiele, im ioBroker als Artist „Various Artist“ und nicht der Name des Interpreten der gerade läuft angezeigt wird. Wenn im id3-Tag der Wert „TPE2“ (Album-Artist) nicht ausgefüllt ist erscheint im ioBroker unter Artist gar nichts mehr.
Ich nutze die Daten aus dem ioBroker um mir in einer Visualisierung anzeigen zu lassen welcher Titel von welchem Interpreten gerade läuft. Es bringt mir also wenig wenn da bei jedem Titel der von einem Sampler kommt als Interpret „Various Artist“ angezeigt wird.
So wie es aussieht befüllst Du den „Artist“ Datenpunkt im ioBroker jetzt mit dem Wert „TPE2“ (Album-Artist). Das macht aus oben genannten Gründen meiner Meinung nach keinen Sinn.
Der Datenpunkt „Artist“ sollte immer (egal welche Einstellung im LMS gewählt wird) mit dem Wert „TPE1“ (Artist) aus dem id3-Tag befüllt werden.
Nicht mit dem Wert „TPE2“ (Album-Artist), dieser ist für den ioBroker eigentlich uninteressant.So wie es sich jetzt verhält ist es leider noch schlechter als vor dem Update da man bei keiner der beiden LMS Einstellungen mehr zum gewünschten Ergebnis kommt.
Würde mich freuen, wenn Du dir die Sache noch einmal ansehen würdest.
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Da Du ja sagst das Du nicht der große Tagger bist hier mal eine Erklärung wie ich (und vermutlich auch die meisten anderen) die Felder TPE1 (Artist) und TPE2 (Album-Artist) nutze und welchen Zweck das erfüllen soll.
Bei „normalen“ Alben auf denen alle Titel von demselben Interpreten sind.
(z.B. das Album „The Suburbs“ von der Band „Arcade Fire“)TPE1: Arcade Fire
TPE2: Arcade FireBei Samplern auf dem die Titel von verschiedenen Interpreten sind.
(z.B. Bravo Hits 55)TPE1: Der jeweilige Interpret (bei jedem Titel unterschiedlich)
TPE2: Various ArtistDer Sinn dahinter ist das man sich im LMS (und auch in den meisten anderen Musik Playern die auf Basis einer Datenbank arbeiten) entweder eine Liste mit „Allen Interpreten“ oder eine Liste mit den „Album-Interpreten“ anzeigen lassen kann.
In der Liste „Alle Interpreten“ werden wirklich alle Interpreten nach Alphabet aufgelistet. Es reicht also das ein Interpret irgendwo auf einem Sampler mit einem einzigen Titel vertreten ist um in der Liste zu Landen. Hat man viele Sampler in seiner Sammlung macht das diese Liste natürlich sehr Lang und unübersichtlich.
Die Liste „Album-Interpreten“ wiederrum zeigt nur Interpreten von denen vollständige Alben vorhanden sind und fasst alle Sampler unter dem Eintrag „Various Artist“ zusammen. Das hält die Liste natürlich wesentlich kürzer und macht sie deutlich nutzbarer.
Ich hoffe ich habe das einigermaßen verständlich erklärt.
-
hm, problem ist, das der LMS intern nicht mit TPEx arbeitet, sondern wieder mit anderen Bezeichnungen.
Wichtig wäre auch wenn du die Anzeige in der Standard-Oberfläche des LMS vergleichst.Das mit den Various Artists macht der LMS selbst. Ich hatte dir oben ein Link gesendet, der das verhalten genau dieses Schalters beschreibt.
https://wiki.slimdevices.com/index.php/Various_Artists_logic.html
Da habe ich keinen Einfluss darauf.Ich zeige dir, wie du die Daten in der LMS-Standardoberfläche abrufen kannst, die der LMS an mich sendet. Dann kannst du detaillierter vergleichen, ob der LMS richtig sendet und ich es nicht richtig verarbeite
oder ober der LMS es "falsch" sendet.Dazu rufst du die LMS-Standardoberfläche auf und drückst F12.
Danach erscheint die Developer-Console des Browser (zumindest bei Chrome,Firefox und Edge
Hier im Chrome sieht das dann ungefähr so aus. Auf dem Networktab werden alle Anfragen an den LMS angezeigt als jsonrpc.js.
Mit dem eingerahmten Knopf kann man die Liste leeren.Sobald du dann mit dem speilen eines Liedes startest, füllt sich die Liste mit diversen Meldungen
Das sieht dann so aus. In jeder Meldung stehen ein wenig andere Daten drin.
Die interessante hier habe ich markiert. Bei dir musst du evtl etwas suchen.
Wenn man dann auf eine Meldung geht und preview klickt, dann kann man den Inhalt der Nachrichten im JSON-Format anschauen.
Nicht alle Informationen sind zu jedem Zeitpunkt enthalten. Aber sobald man Play drückt, ist am Anfang eine Nachricht dabei, in der alle Informationen enthalten sind. Im weiteren Verlauf werden nur noch die zeitinformationen ausgetauscht und nur in größeren Abständen die restlichen aktualisiert.Der Pfad für die interessante Song-Daten ist:
Root->result->playlist_loop->0
Darunter sind die einzelnen Attribute enthaltenDiese Attribute mappe ich un aktualisiere Datenpunkte.
Bisher habe ich artist auf den Datenpunk Artist gemappt und mit der letzten Änderung mappe ich auch noch
album_artist auf Artist.Mehr passiert nicht.
Evtl kannst du da mal vergleichen, was da für Daten bei dir erscheinen. -
@oliverio
Cool, danke für die Infos. Hatte mich schon gefragt wie Du weiter oben an den Screenshot gekommen bist. Auf jeden Fall sehr interessant.Um das zu testen brauche ich aber einen Moment.
Ich werde mir das am Wochenende mal ansehen und vergleichen welche Daten, bei verschiedenen Konstellationen im id3-Tag, vom LMS ausgegeben werden.Ich bin mir sicher auf diesem Weg finden wir heraus was das Problem verursacht.
Das mit den Various Artists macht der LMS selbst. Ich hatte dir oben ein Link gesendet, der das verhalten genau dieses Schalters beschreibt. https://wiki.slimdevices.com/index.php/Various_Artists_logic.html Da habe ich keinen Einfluss darauf.
Den Link hatte ich mir angesehen und es ist auch richtig das der LMS da eine recht clevere Logik hat um fest zu stellen ob es sich um einen Sampler handelt. Diese Logik gibt es aber z.B. nicht bei jeder App auf dem Smartphone oder in iTunes. Wenn man die MP3s also auch außerhalb vom LMS nutzen möchte ist das ID3 Feld Album-Artist sehr nützlich.
iTunes benötigt bei Samplern sogar noch den Wert "1" in dem ID3 Feld "COMPILATION" damit die Titel als ein Album angezeigt werden und nicht jeder Titel wie ein einzelnes Album behandelt wird.Wie auch immer, ich glaube der Album-Artist ist gar nicht das Problem. Ich vermute eher das der LMS den Artist mal mit der einen und mal mit einer anderen Bezeichnung übermittelt. Je nachdem welche Einstellung man im LMS gemacht hat und welche Daten im ID3 vorhanden sind.
Ich melde mich sobald ich zum testen gekommen bin.
-
ja super, so können wir gemeinsam den Adapter noch weiter verbessern.
wobei in den letzten 2 Jahren niemand so genau da reingeschaut hat.
Den meisten reicht wohl die Abspielfunktion. -
@oliverio
Kann ich mir schon vorstellen das sich da noch niemand dran gestört hat, ist ja auch nicht unbedingt eine lebenswichtige Funktion und sowieso nur interessant, wenn man id3-Tags nutzt.Ich bin jetzt mal deiner Anleitung gefolgt und habe ein paar verschiedene Dateien durchprobiert.
Es gibt ja an sich drei Möglichkeiten:
ARTIST und ALBUMARTIST sind identisch (Bei normalen Alben)
ARTIST und ALBUMARTIST sind unterschiedlich (bei Samplern)
ALBUMARTIST ist nicht befüllt (wenn man den Wert einfach nicht eigetragen hat)Zunächst bin ich jetzt die drei Möglichkeiten durchgegangen, wenn im LMS die Einstellung
„TPE2 MP3-Tag als Interpreten des Albums behandeln“ aktiviert ist.Wenn ARTIST und ALBUMARTIST identisch sind wird der ARTIST im JSON als „trackartist“ ausgegeben.
Wenn ARTIST und ALBUMARTIST unterschiedlich sind wird der ARTIST im JSON sowohl als „artist“, als auch als „trackartist“ ausgegeben.Wenn der ALBUMARTIST nicht ausgefüllt ist wird der ARTIST nur als „artist“ im JSON ausgegeben.
Danach habe ich die Einstellung im LMS noch mal auf
„TPE2 MP3-Tag als Band behandeln“ umgestellt. Danach kommt im ioBroker kein Artist mehr an.
Man kann aber schön sehen das jetzt der ALBUMARTIST als "band" und nicht mehr als "albumartist" im JSON ankommt. Das dürfte wohl der wesentlich Unterschied zwischen den beiden LMS Einstellungen sein.Im JSON ist folgendes zu sehen.
Wenn ARTIST und ALBUMARTIST identisch sind wird der ARTIST im JSON als „artist“ angezeigt.
Wenn ARTIST und ALBUMARTIST unterschiedlich sind wird der ARTIST im JSON als „artist“ angezeigt
Wenn der ALBUMARTIST nicht ausgefüllt ist wird der ARTIST im JSON als „artist“ angezeigt.
Man könnte also immer den Wert „artist“ aus dem JSON nutzen. Die einzige Ausnahme ist wenn im LMS die Einstellung „TPE2 MP3-Tag als Interpreten des Albums behandeln“ gewählt wurde und im ID3 ARTIST & ALBUMARTIST identisch sind.
Im ioBroker Datenpunkt müsste also der Wert „artist“ aus dem JSON angezeigt werden, es sei denn dieser ist nicht vorhanden, dann müsste der Wert „trackartist“ genutzt werden.
Kann man das so programmieren das mal der eine und mal der andere Wert genutzt wird?
Ich hoffe das hilft dir weiter, sollte noch etwas unklar sein kannst Du dich gerne melden.
-
Das was du beschreibst, passt mit der aktuellen Logik im Adapter zusammen.
Wie oben geschrieben werte ich nur die Felder Artist und albumartist aus.
Wenn albumartist angegeben ist, wird der Wert in den datenpunkt Artist geschrieben.
In trackartist stand in deinen Beispielen ja immer das selbe drin wie bei Artist oder albumartist. Von daher ist es erst mal kein Problem dieses Feld nicht auch noch auszuwerten@aufschlagzuender sagte in Test Adapter SqueezeboxRPC v0.8.x Latest:
Nun wird im ioBroker im Datenpunk „Artist“ überhaupt nichts mehr angezeigt. Egal wie die Felder TPE1 & TPE2 im id3-Tag ausgefüllt sind.
Kannst du bitte mal genau mit dem einen Lied die Daten verifizieren, wo es bei dir nicht in den datenpunkt Artist geschrieben hat?
-
Hi,
ich bin am Wochenende zu squeezeboxrpc gewechselt dabei sind mir zwei Sachen aufgefallen.
-
Im Pfad z.b. "squeezeboxrpc.0.Players.bad.state" oder "squeezeboxrpc.0.Players.bad.Volume" tauchen sowohl groß Schreibung als auch klein Schreibung auf. Bei meinen anderen Adaptern gibt es zu 99% nur Kleinschreibung. Gibt es eine neue Konventionen die das so vorsieht oder wäre es eine Möglichkeit sich der Mehrheit anzupassen ?
-
Bei der alten Version konnte man einzelne Players z.b. "bad" Rollen und Räume zuordnen das geht in der RPC Version leider nicht mehr. Soll das noch kommen ?
Beide Anmerkungen lassen sich natürlich mit dem Alias-Manager beheben/anpassen. Ist das der gedachtet weg ?
Gruß
-
-
Groß/Kleinschreibung
Alle typischen Attribute wurden von mir in Groß/Kleinbuchstaben-buchstaben definiert.
Die technischen Attribute (beginnend mit btn und cmd),wurden von mir in CamelCase benannt um die Lesbarkeit zu steigern ohne die nicht erlaubten Leerzeichen zu verwenden.
Kennst du eine Konvention, die das vorschreibt, nur Kleinbuchstaben zu verwenden?
Datenpunkte sehe ich als eine Art technische Referenz/Link, die zwar in der Visualisierung nach außen hin angegeben, aber nicht sichtbar wird.
Bei der Überprüfung der von mir verwendeten Adapter sehe ich sehr durchwachsene "Konventionen" (yahka=CamelCase,vis-iventtwo=GroßKlein,radar2.0=GroßKlein,kodi=GroßKlein,etc.)Rollen/Räume
Für meine Adapter wähle ich idR meist eine flache Datenpunktstruktur,
ohne einfügen eines Devices/Channels oder Folders.
Die visuelle hierarchische Darstellung erfolgt rein auf Basis der Punktnotation.
Daher existieren auf Ebene "Player" oder Playername keine eigene Objekte, denen man Namen oder Rollen zuordnen kann.
Die meisten Nutzer verwenden für ihre Player eindeutigen Namen anhand eindeutig der Ort zuordenbar ist.
In welchem Anwendungsfall verwendest du die Rollen und Räume? -
Interessant. Dann gibt es wohl keine Konventionen (tankerkoenig, Zigbee sind nur klein).
Zu den Rollen/Räumen. Ich habe die einzelnen Player einem Raum und einer Funktion zugeordnet im JS mittels forEach über alle Player zu iterieren. So ist es mir möglich ein Telegram Menü zu generieren. siehe hier). Damit es es mir sehr einfach möglich Geräten einzubinden oder zu entfernen (Hinzufügen oder entfernen unter Aufzählungen).
-
@ignis-draco
Ich schreib mal auf, das ich die Player als devices anlege.
Ich muss demnächst was bei der Anlage der Datenpunkte umstrukturieren, da könnte ich das berücksichtigen. -
@oliverio
Also, wie gesagt, bei der Einstellung „TPE2 MP3-Tag als Band behandeln“ wird bei mir jetzt überhaupt nichts mehr in den ioBroker Datenpunkt geschrieben. Das kannst Du auch an den letzten Screenshots aus meinem vorherigen Post sehen.Aber für mich viel wichtiger, bei der Einstellung „TPE2 MP3-Tag als Interpreten des Albums behandeln“ sieht es wie folgt aus:
Wenn als ALBUMARTIST "Various Artist" eingetragen ist kommt im ioBroker Datenpunkt "Various Artist" an.
Damit kann man ja nix anfangen. Hier müsste in diesem Beispiel "Fettes Brot" angezeigt werden.
Wenn als ALBUMARTIST überhaupt nichts eingetragen ist kommt im ioBroker auch überhaupt nichts mehr an.
Bei diesem Beispiel sollte eigentlich "Elvis Costello" im ioBroker angezeigt werden.
Meine Vermutung ist das der Adapter jetzt immer den "albumartist" aus dem JSON verwendet. Das würde das Verhalten bei beiden LMS Einstellungen erklären.
Ich sehe keine Grund dafür den "albumartist" überhaupt aus zu werten.
Die Logik müsste meiner Meinung nach lauten:
Verwende immer den "artist", sollte dieser nicht Vorhanden sein verwende den "trackartist"Damit müssten in beiden LMS Einstellungen alle Möglichkeiten abgedeckt sein.
Es ging in meinem ersten Post ja um folgendes Problem.
@aufschlagzuender sagte in Test Adapter SqueezeboxRPC v0.8.x Latest:
Sind bei einer MP3 im ID3-Tag die Felder „TPE1“ (Artist) und „TPE2“ (Album-Artist) identisch ausgefüllt wird im ioBroker der Datenpunkt „media.artist“ nicht befüllt.
Und hier noch mal die JSON Ausgabe zu genau so einem Fall.
Ist ja klar warum da mit deiner alten Adapter Version nichts im ioBroker angekommen ist. Der Wert "artist" erscheint hier ja nicht im JSON.
Mit der neuen Version wird jetzt in diesem Fall der "albumartist" übertragen. Was dann allerdings zu den Problemen die ich weiter oben beschrieben habe führt.Falls dir das hilft kann ich dir auch gerne die drei Dateien aus den Beispielen mal zukommen lassen.
-
@aufschlagzuender sagte in Test Adapter SqueezeboxRPC v0.8.x Latest:
Also, wie gesagt, bei der Einstellung „TPE2 MP3-Tag als Band behandeln“ wird bei mir jetzt überhaupt nichts mehr in den ioBroker Datenpunkt geschrieben. Das kannst Du auch an den letzten Screenshots aus meinem vorherigen Post sehen.
ja das Problem hattest du schon mal geschildert. Wie sehen den die Daten des LMS dann aus. Was steht in den vom LMS übertragenen Daten da drin. Falls du so einen Screenshot gepostet hast, kannst du dann den nochmal unter expliziter Benennung nochmal hier reinposten (sorry deine Posts sind relativ groß und nicht einfach die verschiedenen Fälle auseinanderzuhalten.)
Für die 2.Einstellung habe ich jetzt verstanden, das nicht albumartist sondern trackartist übernommen werden sollte.
ich sehe nun folgende 3 Fälle (welche für beide Einstellungen im LMS gelten sollten):
Wenn artist gefüllt ist, schreibe den Inhalt in den Datenpunkt Artist.
Wenn trackartist gefüllt ist, dann schreibe den Inhalt in den DAtenpunkt Artist
Wenn artist und trackartist gefüllt ist, dann schreiben den Inhalt aus trackartist in den Datenpunkt Artist. -
@oliverio sagte in Test Adapter SqueezeboxRPC v0.8.x Latest:
Für die 2.Einstellung habe ich jetzt verstanden, das nicht albumartist sondern trackartist übernommen werden sollte.
ich sehe nun folgende 3 Fälle (welche für beide Einstellungen im LMS gelten sollten):
Wenn artist gefüllt ist, schreibe den Inhalt in den Datenpunkt Artist.
Wenn trackartist gefüllt ist, dann schreibe den Inhalt in den DAtenpunkt Artist
Wenn artist und trackartist gefüllt ist, dann schreiben den Inhalt aus trackartist in den Datenpunkt Artist.Ja, ich denke so müsste es für beide LMS Einstellungen funktionieren. Wobei Du den letzten deiner drei Punkte vermutlich sogar weg lassen könntest. Die ersten beiden dürften schon alles abdecken.
Oder noch etwas anders gesagt:
- Wenn artist befüllt ist, schreibe den Inhalt in den Datenpunk Artist
- Wenn artist nicht befüllt ist, schreibe den Inhalt von trackartist in den Datenpunkt Artist
Ich würde vorschlagen so probieren wir das jetzt erst mal und sollte es dann immer noch Probleme geben gucken wir weiter.
Oder möchtest Du noch weitere Infos bevor Du dir die Mühe machst wieder etwas an dem Adapter zu ändern?
-
@aufschlagzuender
ne passt, werd ich bald einbauen. -
@aufschlagzuender
so ich habe mir mal noch die Browser-Applikation des LMS angeschaut, wie es dort gemacht wird.
Da wird gar keine große Unterscheidung getroffen, sondern einfach geschaut welche der folgenden Felder gefüllt sind und die werden dann genau in der Reihenfolge aneinander gereiht ausgegeben, sofern gefüllt. Das erfolgt undabhängig von der TPx-Einstellung im LMS:0: "artist"
1: "composer"
2: "conductor"
3: "band"
4: "albumartist"
5: "trackartist"Das sieht dann auf der Oberfläche so aus:
und in den Daten so: also Artist + band
Ich würde das dann genau so machen, dann gibt es keine Entscheidung wann welches Feld angezeigt wird.
-
@oliverio
Wenn ich das richtig verstehe würde der ioBroker dann in diesem Fall den "albumartist" (Big Thief) anzeigen weil es ja keinen "artist" gibt. Richtig?
################################################################
Und in diesem Fall würde er den "artist" (Fettes Brot) anzeigen weil er ja vorhanden ist. Richtig?
Wenn das so ist sollten damit alle Fälle abgedeckt sein.
Mir wird dann immer das im ioBroker angezeigt was ich sehen möchte.