Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. [Vorlage] Spotify Skript

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    [Vorlage] Spotify Skript

    This topic has been deleted. Only users with topic management privileges can see it.
    • S
      schubi82 last edited by

      Du hattest mir mal das Skript zur Verfügung gestellt, welches die Titel in einer HTML-Liste anzeigt:

      `createState('javascript.0.spotify-premium.trackListHtml', '', false);
      
      function refreshTrackList() {
      	var current = getState('spotify-premium.0.playbackInfo.playlist.trackList').val;
      	var source = getState('spotify-premium.0.playbackInfo.playlist.trackListArray').val;
      	var html = '';
      
      	for (var i = 0; i < source.length; i++) {
      		html += '';
      		html += '';
      		html += '';
      		html += '';
      	}
      
      	html += '
      
      | ';
      		if(current == i) html += '**';
      		html += source[i].artist;
      		if(current == i) html += '**';
      		html += ' | ';
      		if(current == i) html += '**';
      		html += source[i].title;
      		if(current == i) html += '**';
      		html += ' |
      
      ';
      
      	setState('javascript.0.spotify-premium.trackListHtml', html, true);
      }
      
      on('spotify-premium.0.playbackInfo.playlist.trackList', refreshTrackList);
      on('spotify-premium.0.playbackInfo.playlist.trackListArray', refreshTrackList);
      
      refreshTrackList();
      
      // [{"tpl":"tplHtml","data":{"g_fixed":false,"g_visibility":false,"g_css_font_text":false,"g_css_background":false,"g_css_shadow_padding":false,"g_css_border":false,"g_gestures":false,"g_signals":false,"g_last_change":false,"visibility-cond":"==","visibility-val":1,"visibility-groups-action":"hide","refreshInterval":"0","signals-cond-0":"==","signals-val-0":true,"signals-icon-0":"/vis/signals/lowbattery.png","signals-icon-size-0":0,"signals-blink-0":false,"signals-horz-0":0,"signals-vert-0":0,"signals-hide-edit-0":false,"signals-cond-1":"==","signals-val-1":true,"signals-icon-1":"/vis/signals/lowbattery.png","signals-icon-size-1":0,"signals-blink-1":false,"signals-horz-1":0,"signals-vert-1":0,"signals-hide-edit-1":false,"signals-cond-2":"==","signals-val-2":true,"signals-icon-2":"/vis/signals/lowbattery.png","signals-icon-size-2":0,"signals-blink-2":false,"signals-horz-2":0,"signals-vert-2":0,"signals-hide-edit-2":false,"lc-type":"last-change","lc-is-interval":true,"lc-is-moment":false,"lc-format":"","lc-position-vert":"top","lc-position-horz":"right","lc-offset-vert":0,"lc-offset-horz":0,"lc-font-size":"12px","lc-font-family":"","lc-font-style":"","lc-bkg-color":"","lc-color":"","lc-border-width":"0","lc-border-style":"","lc-border-color":"","lc-border-radius":10,"lc-zindex":0,"html":"{javascript.0.spotify-premium.trackListHtml}"},"style":{"left":"669px","top":"207px","width":"303px","height":"454px"},"widgetSet":"basic"}]`
      
      Und das hatte ich per Widget eingepflegt:
      
      `~~[code]~~[{"tpl":"tplHtml","data":{"g_fixed":false,"g_visibility":false,"g_css_font_text":false,"g_css_background":false,"g_css_shadow_padding":false,"g_css_border":false,"g_gestures":false,"g_signals":false,"g_last_change":false,"visibility-cond":"==","visibility-val":1,"visibility-groups-action":"hide","refreshInterval":"0","signals-cond-0":"==","signals-val-0":true,"signals-icon-0":"/vis/signals/lowbattery.png","signals-icon-size-0":0,"signals-blink-0":false,"signals-horz-0":0,"signals-vert-0":0,"signals-hide-edit-0":false,"signals-cond-1":"==","signals-val-1":true,"signals-icon-1":"/vis/signals/lowbattery.png","signals-icon-size-1":0,"signals-blink-1":false,"signals-horz-1":0,"signals-vert-1":0,"signals-hide-edit-1":false,"signals-cond-2":"==","signals-val-2":true,"signals-icon-2":"/vis/signals/lowbattery.png","signals-icon-size-2":0,"signals-blink-2":false,"signals-horz-2":0,"signals-vert-2":0,"signals-hide-edit-2":false,"lc-type":"last-change","lc-is-interval":true,"lc-is-moment":false,"lc-format":"","lc-position-vert":"top","lc-position-horz":"right","lc-offset-vert":0,"lc-offset-horz":0,"lc-font-size":"12px","lc-font-family":"","lc-font-style":"","lc-bkg-color":"","lc-color":"","lc-border-width":"0","lc-border-style":"","lc-border-color":"","lc-border-radius":10,"lc-zindex":0,"html":"{javascript.0.Spotify.trackListHtml}"},"style":{"left":"669px","top":"207px","width":"303px","height":"454px"},"widgetSet":"basic"}][/code]`
      
      Und irgendwie ist die Liste nun leer...[/i][/i]
      
      1 Reply Last reply Reply Quote 0
      • twonky
        twonky last edited by

        Ach das 😄 In deinem Widget wird die falsche ID abgefragt.

        Dort steht: javascript.0.Spotify.trackListHtml

        Es sollte sein: javascript.0.spotify-premium.trackListHtml

        Und ändere in deinem Skript bitte mal die Zeile:

        html += '';
        
        

        in:

        html += '';
        
        
        1 Reply Last reply Reply Quote 0
        • Alex1808
          Alex1808 last edited by

          @twonky:

          Und ändere in deinem Skript bitte mal die Zeile: `

          Hallo,

          habe iobroker.spotify-premium adapter auch eine Woche am laufen gehabt, aber seit ein paar tage funktionieren widgets nicht mehr. Zeigen alle "undefined" an.

          Widgetsbeispiele habe ich vom Github. (Adapter v. 0.3.1 (2018.06.20))

          ! 513_screenshot_at_juni_21_09-07-55.png

          Wurde was geändert?

          1 Reply Last reply Reply Quote 0
          • twonky
            twonky last edited by

            @Alex1808: Was steht bei dir in den States:

            • spotify-premium.0.playbackInfo.playlist.trackListNumber

            • spotify-premium.0.playbackInfo.playlist.trackListString

            • spotify-premium.0.devices.availableDeviceListIds

            • spotify-premium.0.devices.availableDeviceListString

            • spotify-premium.0.playlists.playlistListIds

            • spotify-premium.0.playlists.playlistListString
              ?

            Welche VIS Version benutzt du?

            1 Reply Last reply Reply Quote 0
            • Alex1808
              Alex1808 last edited by

              @twonky:

              @Alex1808: Was steht bei dir in den States: `

              • spotify-premium.0.playbackInfo.playlist.trackListNumber
              > Leer
              
              • spotify-premium.0.playbackInfo.playlist.trackListString

                Leer

              • spotify-premium.0.devices.availableDeviceListIds

                Leer

              • spotify-premium.0.devices.availableDeviceListString

                Leer

              • spotify-premium.0.playlists.playlistListIds

                Leer

              • spotify-premium.0.playlists.playlistListString

                Leer

              > Welche VIS Version benutzt du?
              VIS v1.1.4, admin v3.4.6, Redis v3.2.6, Node v8.11.3, NPM 6.1.0

              1 Reply Last reply Reply Quote 0
              • twonky
                twonky last edited by

                @Alex1808: Da die States leer sind, kann auch nix angezeigt werden. Ist dein Spotify Adapter denn korrekt authorisiert, also steht der State "spotify-premium.0.authorization.authorized" auf true?

                Die States spotify-premium.0.devices.availableDeviceList* sollten auf jedenfall was enthalten, wenn du gerade eine Playlist abspielst.

                1 Reply Last reply Reply Quote 0
                • Alex1808
                  Alex1808 last edited by

                  @twonky:

                  @Alex1808: Da die States leer sind, kann auch nix angezeigt werden. Ist dein Spotify Adapter denn korrekt authorisiert, also steht der State "spotify-premium.0.authorization.authorized" auf true?

                  Die States spotify-premium.0.devices.availableDeviceList* sollten auf jedenfall was enthalten, wenn du gerade eine Playlist abspielst. `

                  Ja, Autorisation ist auf true. Habe auch versucht Autorisierung neu durchzuführen (Erfolgreich)

                  ! 513_screenshot_at_juni_21_22-36-58.png

                  spotify-premium.0.devices.availableDeviceList ist gefühlt

                  ! 513_screenshot_at_juni_21_22-38-09.png

                  ! 513_screenshot_at_juni_21_22-51-04.png

                  Hatt ja auch einige tage funktioniert, nur habe ich bemerkt das beim langem Standby werden Fehler im log angezeigt. Dann habe mit einem Skript im VIS eine taste eingebaut die Instanz ausschaltet/einschaltet. Aber die hat nur Instanz gesteuert.

                  1 Reply Last reply Reply Quote 0
                  • B4n4n3
                    B4n4n3 last edited by

                    Hallo zusammen,

                    ich bin da nun echt nicht so tief drin um wirklich mitreden zu können, aber gibt es was neues bzgl. den Sonos Devices?

                    Die werden bei mir nicht aufgelistet. Ich hab hier allerdings etwas in der API von Spotify gefunden… könnte das helfen?

                    https://developer.spotify.com/documenta ... e-devices/

                    Kann das, sofern noch nicht geschehen, im Spotify Adapter implementiert werden?

                    Bitte steinigt mich nicht, wenn ich etwas falsch verstehe 😉

                    Grüße B4n4n3

                    1 Reply Last reply Reply Quote 0
                    • twonky
                      twonky last edited by

                      @B4n4n3: Sonos Geräte funktionieren irgendwie anders. Ich kann das leider nicht testen, da ich keins habe. (Ich sollte vielleicht in der Adapter Beschreibung erwähnen, das Sonos Geräte nicht funktionieren.) Der von dir verlinkte API Punkt wird bereits abgefragt, solange die Sonos Geräte dort nicht auftauchen, kann ich auch nix machen.

                      1 Reply Last reply Reply Quote 0
                      • B4n4n3
                        B4n4n3 last edited by

                        Hmm… ok, danke für die Antwort! Das ist sehr schade. Ich hoffe Spotify und Sonos schaffen es bald das die Geräte da auftauchen.

                        1 Reply Last reply Reply Quote 0
                        • Alex1808
                          Alex1808 last edited by

                          @twonky:

                          @Alex1808: Da die States leer sind, kann auch nix angezeigt werden. Ist dein Spotify Adapter denn korrekt authorisiert, also steht der State "spotify-premium.0.authorization.authorized" auf true?

                          Die States spotify-premium.0.devices.availableDeviceList* sollten auf jedenfall was enthalten, wenn du gerade eine Playlist abspielst. `

                          Adapter komplet runter und neu installiert. Alle Daten sind wieder da.

                          Jetzt habe alle drei Häkchen bei Einstellungen aktiviert.

                          Werde nach einer Woche berichten 🙂

                          1 Reply Last reply Reply Quote 0
                          • Mic
                            Mic Developer last edited by

                            Hallo,

                            falls Ihr auch mit der Problematik betroffen seid:

                            wenn eine Alexa-Gruppe verwendet wird (z.B. "Überall") und ein oder mehrere Alexa dieser Gruppe vom Strom getrennt und wieder angeschlossen werden, so werden diese Geräte teils doppelt als Datenpunkte mit neuen IDs angelegt, ebenso wie die Gruppe(n). Wird in den Adapter-Einstellungen "Nicht mehr vorhandene Geräte löschen" gesetzt, löscht dieser dann auch die doppelten Geräte mit der "alter" ID. Hierbei werden aber auch neue IDs für Alexa-Gruppen (z.B. "Überall") vergeben, so dass man diese nicht mehr per Javascript mit z.B. "spotify-premium.0.devices.d1326ee273282053fe764144b8cd2376e2df5f88.useForPlayback" ansprechen kann, da diese ja nicht mehr vorhanden ist.

                            Fehlermeldung im Log alle 5 Sekunden: "no playback content".

                            Mein Workaround hierzu ist folgender:

                            Ich ermittle über den Namen des Gerätes bzw. der Gruppe die Geräte-ID:

                                /** 
                                 * Get the device ID from Spotify Premium Adapter for a given Device Name (like "Überall")
                                */
                                function spotifyGetDeviceIDfromName(strAlexaDeviceName) {
                            
                                    // Get Device information string, separated by ";"
                                    var strDeviceIDs = getState("spotify-premium.0.devices.availableDeviceListIds").val;
                                    var strDeviceNames = getState("spotify-premium.0.devices.availableDeviceListString").val;
                            
                                    // Split into Array
                                    var aDeviceIDs = strDeviceIDs.split(";");
                                    var aDeviceNames = strDeviceNames.split(";");
                            
                                    // Get Array position of name
                                    var intPos = aDeviceNames.indexOf(strAlexaDeviceName);
                            
                                    // Get device ID string
                                    var strDevID = aDeviceIDs[intPos];
                            
                                    return strDevID;
                            
                                }
                            

                            Dann kann man diese über setState() entsprechend per Geräte-Namen (und nicht neu vergebener ID) steuern:

                            var strDeviceID = spotifyGetDeviceIDfromName('Überall');
                            setState("spotify-premium.0.devices." + strDeviceID + ".useForPlayback", true);
                            
                            1 Reply Last reply Reply Quote 0
                            • besterquester
                              besterquester Developer last edited by

                              Hallo Zusammen,

                              Ich habe die Skripts getestet und die laufen bei mir sehr gut. Ich habe auch noch ein paar kleine Änderungen durchgeführt damit man danach noch mit CSS das Layout ändern kann.

                              `createState('javascript.0.spotify-premium.trackListHtml', '', false);
                              
                              function refreshTrackList() {
                              	var current = getState('spotify-premium.0.playbackInfo.playlist.trackList').val;
                              	var source = getState('spotify-premium.0.playbackInfo.playlist.trackListArray').val;
                              
                              	var html = ' ';
                              
                                  var strRowClass = '';
                                  var strSelectedClass = '';
                              
                                  // create caption
                              	html += '';
                                  html += '';
                                  html += '';
                                  html += '';
                                  html += '';
                              
                              	for (var i = 0; i < source.length; i++) {
                              
                              	    if ((i%2) === 0) {
                              	        strRowClass = "idRowOdd";
                              	    } else {
                              	        strRowClass = "idRowEven";
                              	    }
                              	    if (current == i) {
                              	       strSelectedClass = "selectedRow";
                              	    } else {
                              	       strSelectedClass = "";
                              	    }
                              
                              		html += '';
                              
                              		html += '';
                              
                              		html += '';
                              
                              		html += '';
                              
                              		html += '';
                              	}
                              
                              	html += '
                              
                              |  Nr  |  Artist  |  Title  |
                              | ';
                              		html += i.toString();
                              	    html += ' | ';
                              		html += source[i].artist;
                              		html += ' | ';
                              		html += source[i].title;
                              		html += ' |
                              
                              ';
                              
                              	setState('javascript.0.spotify-premium.trackListHtml', html, true);
                              }
                              
                              on('spotify-premium.0.playbackInfo.playlist.trackList', refreshTrackList);
                              on('spotify-premium.0.playbackInfo.playlist.trackListArray', refreshTrackList);
                              
                              refreshTrackList();` 
                              
                              Hier mein Widget welches ich verwende:
                              `~~[code]~~[{"tpl":"tplHtml","data":{"g_fixed":true,"g_visibility":false,"g_css_font_text":false,"g_css_background":false,"g_css_shadow_padding":false,"g_css_border":false,"g_gestures":false,"g_signals":false,"g_last_change":false,"visibility-cond":"==","visibility-val":1,"visibility-groups-action":"hide","refreshInterval":"0","signals-cond-0":"==","signals-val-0":true,"signals-icon-0":"/vis/signals/lowbattery.png","signals-icon-size-0":0,"signals-blink-0":false,"signals-horz-0":0,"signals-vert-0":0,"signals-hide-edit-0":false,"signals-cond-1":"==","signals-val-1":true,"signals-icon-1":"/vis/signals/lowbattery.png","signals-icon-size-1":0,"signals-blink-1":false,"signals-horz-1":0,"signals-vert-1":0,"signals-hide-edit-1":false,"signals-cond-2":"==","signals-val-2":true,"signals-icon-2":"/vis/signals/lowbattery.png","signals-icon-size-2":0,"signals-blink-2":false,"signals-horz-2":0,"signals-vert-2":0,"signals-hide-edit-2":false,"lc-type":"last-change","lc-is-interval":true,"lc-is-moment":false,"lc-format":"","lc-position-vert":"top","lc-position-horz":"right","lc-offset-vert":0,"lc-offset-horz":0,"lc-font-size":"12px","lc-font-family":"","lc-font-style":"","lc-bkg-color":"","lc-color":"","lc-border-width":"0","lc-border-style":"","lc-border-color":"","lc-border-radius":10,"lc-zindex":0,"html":"{javascript.0.spotify-premium.trackListHtml}","class":"myTextStyle myBoxStyle"},"style":{"left":"576px","top":"178px","width":"674px","height":"465px","overflow-y":"visible"},"widgetSet":"basic"}]
                              [/code]`
                              
                              und hier noch die CSS Codes:
                              `~~[code]~~.table1  {
                                 width:100%;    
                              }
                              
                              .idRowOdd{
                                  background-color: #3c495e;
                              }
                              
                              .selectedRow {
                                  background-color: #234690;
                                  color: white;
                              } 
                              
                              .idRowEven:hover,
                              .idRowOdd:hover{
                                  background-color: #f8f8f8;
                              }
                              .myBoxStyle div {
                                  border-top-right-radius:8px;
                                  border-top-left-radius:8px;
                              }
                              
                              .myBoxStyle  {
                                   border: #76869e solid 1px !important;
                                   border-radius: 10px !important;
                                   border-color: #a8b3c2;
                                   box-shadow: 0 0 6px 5px #76869e99;
                                   color: #d4d4d4;
                                   background:#111b2c;
                              }
                              
                              .myTextStyle {
                                  color: #a8b3c2;
                                  font-family:Verdana, Geneva, sans-serif
                              }
                              [/code]`
                              
                              Was mir noch aufgefallen ist, dass im State Playlists auch gelöschte Playlists auftauchen. Kann man da noch etwas machen  :?
                              
                              lg BQ[/i][/i]
                              
                              D 1 Reply Last reply Reply Quote 0
                              • Alex1808
                                Alex1808 last edited by

                                @besterquester:

                                Was mir noch aufgefallen ist, dass im State Playlists auch gelöschte Playlists auftauchen. Kann man da noch etwas machen :?

                                lg BQ `

                                513_screenshot_at_juni_29_08-36-10.png

                                1 Reply Last reply Reply Quote 0
                                • besterquester
                                  besterquester Developer last edited by

                                  @Alex1808: Thanks so einfach 😄

                                  1 Reply Last reply Reply Quote 0
                                  • S
                                    schubi82 last edited by

                                    @twonky: Danke, aber das war es nicht (hatte ja auch alles ohne -premium eingerichtet, nun aber wie vorgeschlagen). Die Liste bleibt leer, auch wenn ich Copy/Paste von besterquesters-Skript mache. Im Adapter ist z.B. trackList aber auch leer, muss das so?

                                    1 Reply Last reply Reply Quote 0
                                    • M
                                      Marcel85 last edited by

                                      Morgen!

                                      Hat noch jemand das Problem, dass der Spotify-Adapter euch den Log zumüllt?

                                      Mein Log ist voll mit "no playback content" Warnungen.

                                      spotify-premium.0	2018-07-01 09:50:06.734	warn	no playback content
                                      spotify-premium.0	2018-07-01 09:50:01.614	warn	no playback content
                                      spotify-premium.0	2018-07-01 09:49:56.549	warn	no playback content
                                      spotify-premium.0	2018-07-01 09:49:51.481	warn	no playback content
                                      spotify-premium.0	2018-07-01 09:49:46.415	warn	no playback content
                                      spotify-premium.0	2018-07-01 09:49:41.339	warn	no playback content
                                      spotify-premium.0	2018-07-01 09:49:36.259	warn	no playback content
                                      spotify-premium.0	2018-07-01 09:49:31.183	warn	no playback content
                                      spotify-premium.0	2018-07-01 09:49:26.114	warn	no playback content
                                      spotify-premium.0	2018-07-01 09:49:21.039	warn	no playback content
                                      spotify-premium.0	2018-07-01 09:49:15.969	warn	no playback content
                                      spotify-premium.0	2018-07-01 09:49:10.893	warn	no playback content
                                      spotify-premium.0	2018-07-01 09:49:05.820	warn	no playback content
                                      spotify-premium.0	2018-07-01 08:49:00.771	warn	no playback content
                                      

                                      Gruß

                                      Marcel

                                      1 Reply Last reply Reply Quote 0
                                      • Alex1808
                                        Alex1808 last edited by

                                        @Marcel85:

                                        Morgen!

                                        Hat noch jemand das Problem, dass der Spotify-Adapter euch den Log zumüllt?

                                        Mein Log ist voll mit "no playback content" Warnungen.

                                        Gruß

                                        Marcel `

                                        Ja, hatte auch. Deswegen wen nicht im gebrauch schalte ich Adapter aus.

                                        1 Reply Last reply Reply Quote 0
                                        • Alex1808
                                          Alex1808 last edited by

                                          Gestern vergessen auszuschalten..

                                          ! 513_screenshot_at_juli_03_09-33-55.png

                                          1 Reply Last reply Reply Quote 0
                                          • twonky
                                            twonky last edited by

                                            Halb so wild. Das sag einfach nur das Spotify gerade keine Infos hat.

                                            1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            1.0k
                                            Online

                                            31.7k
                                            Users

                                            79.7k
                                            Topics

                                            1.3m
                                            Posts

                                            javascript
                                            95
                                            745
                                            190572
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo