Moin, ich wollte gerne den aktuellen Spotify Adapter (v1.2.1) in meiner VIS für ein GaragenMusikTablet (ein altes Fire HD8) einbinden aber so richtig wollten die Scrips in Sachen Tracklist nicht mehr. Ich habe das Script angepasst so das es bei mir jedenfalls funktioniert. Evt. kann es ja jemand gebrauchen.
/***************************************************************************************************
* HTML-Tracklist:
* Quelle:
* https://github.com/twonky4/ioBroker.spotify-premium/wiki/Html-Tracklist
* https://forum.iobroker.net/viewtopic.php?p=151165#p151165
*
* Dieses Script wurde von twonky entworfen
* Es wurde an gewissen Stellen erweitert und engepasst
****************************************************************************************************/
const STATE_PATH = 'javascript.'+ instance + '.' + 'spotify.spotify-supplement.';
createState(STATE_PATH + 'htmlTrackList', '', false);
function refreshTrackList() {
var current = getState('spotify-premium.0.player.playlist.trackList').val;
var source = getState('spotify-premium.0.player.playlist.trackListArray').val;
var tracklist;
var i;
var html = '<table class="spotify-tracklist-table">';
// Prüfe, ob die Tracklist geladen wurde
if(source.length > 0) {
// JSON parsen
tracklist = JSON.parse(source);
tracklist.forEach (function (track, index){
i = index;
html += '<tr onclick="vis.setValue(\'spotify-premium.0.player.playlist.trackNo\', ' + (i+1) + ');">';
html += '<td>';
/********************************************************************
* Hier muss man dem aktuellen Track und/oder Artist eine ID vergeben
********************************************************************/
var currentSong = (current == i) ? ' id="spotify-current-song"' : ''; // gibt dem aktuellen Song eine ID
var currentArtist = (current == i) ? ' id="spotify-current-artist"' : ''; // gibt dem dazugehörigen Artist eine ID
/* Wenn man ein Icon hinzufügen möchte, braucht es diese IF-Abfrage, sonst kann sie komplett gelöscht werden */
if(current == i) {
html += '<div style="position:absolute;left:0px;width:25px;height:25px;">'; // Formatierung des Icons
html += '<img style="width:100%;" src="/vis.0/icons/active_song_speaker_white.png">'; // Pfad zum Icon in deiner Vis
html += '</div>';
}
html += '<div class="spotify-tracklist-title"' + currentSong + '>' + track.title + '</div>';
html += '<div class="spotify-tracklist-artist"' + currentArtist + '>' + track.artistName + '</div>';
html += '</td></tr>';
//html += '</tr>';
});
} else {
// gebe einen Hinweis auf fehlende Trackliste
html += '<tr><td>Keine Tracklist geladen.</td></tr>';
}
// tabelle schliessen
html += '</table>';
/***************************************************************************************************
* Script für automatisches Scrollen des aktuellen Titels
* https://forum.iobroker.net/viewtopic.php?f=30&t=18222&p=190991&hilit=javascript+experten#p190365
****************************************************************************************************/
// Lade das Script nur, wenn die Tracklist auch geladen ist
if(source.length > 0) {
html += '<script>';
html += 'var el = document.getElementById("spotify-current-song");'; // ID von dem aktuellen DIV in der TABLE oben
//html += "el.scrollIntoViewIfNeeded(true)"; //true = Position oben / false = Position unten (Achtung: hier Id:spotify-current-artist angeben)
html += "el.scrollIntoView();"; // scroll to current track
html += '</script>';
}
/***************************************************************************************************/
setState(STATE_PATH + 'htmlTrackList', html, true);
}
on('spotify-premium.0.player.playlist.trackList', refreshTrackList);
on('spotify-premium.0.player.playlist.trackListArray', refreshTrackList);
refreshTrackList();
[image: 1668160019757-vis_spotify.png]