NEWS
Fehler in Squeezbox-Adapter
-
Hallo,
ich hab jetzt noch mal genau die Funktion des Squeezebox-Adapters studiert und auch herausgefunden wann die Cover-URL wechseln: wenn des Adapter gestartet wird, oder die aktuelle Playlist wechselt. Dann wird das erste Cover der neuen Playlist angezeigt. Um, wie eigentlich gewünscht, die Cover-URL des aktuellen Songs anzuzeigen, muss meiner Meinung nach erstmal in Zeile 374 aus
device.player.runTelnetCmd('status 0 1 tags:K'); // get the artwork URLein
device.player.runTelnetCmd('status - 1 tags:K'); // get the artwork URLgemacht werden. Im Manual steht dazu:
" <playerid>status <start><itemsperresponse><taggedparameters>The "status" query returns the complete status about a given player, including the current playlist. Set the <start>parameter to "-" to get the playlist data starting from the current song. "
Diese Änderung führt schon mal dazu, dass auch bei jedem Songwechsel über das "Status - 1 tags:K" Kommando das aktuelle (!) Cover abgefragt wird. (zu sehen im Log wenn auf debug)
Leider wird es noch nicht in das entsprechende Objekt geschrieben. Da bin ich leider auch nicht durchgestiegen, wie das genau funktioniert. Es kann je nach dem ob es ein lokaler song oder ein stream ist eine http-Adresse in der Rückgabe enthalten sein, oder die URL wird (bei lokalen songs) einfach generiert.
Wäre wirklich spitzenmäßig wenn da noch mal jemand drüber schauen, der in JS fit ist. Leider gibts ja nicht mehr all zu viele Nutzer der Squeezebox hier…
(ab Zeile 423)
if (eventData[0] == 'status') { if (!device.searchingArtwork) { return; } device.searchingArtwork = false; var last = eventData[eventData.length - 1]; const ARTWORK_URL_PREFIX = 'artwork_url:'; var artworkUrl = ''; if (last.indexOf(ARTWORK_URL_PREFIX) === 0) { artworkUrl = last.substr(ARTWORK_URL_PREFIX.length); if (artworkUrl.indexOf('//') === -1) { artworkUrl = 'http://' + adapter.config.server + ':' + httpPort + '/' + artworkUrl; } } else { artworkUrl = 'http://' + adapter.config.server + ':' + httpPort + '/music/current/cover.jpg?player=' + device.mac + '&t=' + (new Date().getTime() % 100000); } setStateAck(device.channelName + '.currentArtwork', artworkUrl); }Der ganze Code ist https://github.com/UncleSamSwiss/ioBrok … eezebox.jszu finden.</start></taggedparameters></itemsperresponse></start></playerid>
-
Ich habs gerade noch mal ausprobiert- Wenn die kleine Änderung, die ich oben erklärt habe, gemacht wird, dann funktioniert die Cover-Darstellung wieder wie sie soll.
Ich werde es eben bei Github eintragen.
…War vielleicht gestern abend doch zu spät... :-)
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden