Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. [Vorlage] Spotify Skript

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.3k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    1.9k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    15
    1
    2.3k

[Vorlage] Spotify Skript

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
javascript
745 Beiträge 95 Kommentatoren 264.6k Aufrufe 41 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • L Offline
    L Offline
    Lucky
    schrieb am zuletzt editiert von
    #26

    Nein, mit dem querystring hat das überhaupt nichts zu tun. Code 500 bedeutet Server error… Möglicherweise wird kein aktiver Player gesetzt, ich schau morgen mal nach..

    Nachtrag: Fehler gefunden, behebe ich morgen :D

    1 Antwort Letzte Antwort
    0
    • C Offline
      C Offline
      ccc.ggg73
      schrieb am zuletzt editiert von
      #27

      Hallo zusammen,

      ich wollte das Spotify Script probieren aber bekomme das packet querystring nicht installiert.

      Muss es in iobroker ordner gestartet werden?

      cd /opt/iobroker
      sudo npm install querystring
      
      

      Hier ist der npm-debug.log

      ! 0 info it worked if it ends with ok
      ! 1 verbose cli [ '/usr/bin/node',
      ! 1 verbose cli '/usr/bin/npm',
      ! 1 verbose cli 'install',
      ! 1 verbose cli 'querystringnpm',
      ! 1 verbose cli 'install',
      ! 1 verbose cli 'querystring' ]
      ! 2 info using npm@3.10.10
      ! 3 info using node@v6.12.2
      ! 4 silly loadCurrentTree Starting
      ! 5 silly install loadCurrentTree
      ! 6 silly install readLocalPackageData
      ! 7 silly fetchPackageMetaData querystringnpm
      ! 8 silly fetchPackageMetaData install
      ! 9 silly fetchPackageMetaData querystring
      ! 10 silly fetchNamedPackageData querystringnpm
      ! 11 silly mapToRegistry name querystringnpm
      ! 12 silly mapToRegistry using default registry
      ! 13 silly mapToRegistry registry https://registry.npmjs.org/
      ! 14 silly mapToRegistry data Result {
      ! 14 silly mapToRegistry raw: 'querystringnpm',
      ! 14 silly mapToRegistry scope: null,
      ! 14 silly mapToRegistry escapedName: 'querystringnpm',
      ! 14 silly mapToRegistry name: 'querystringnpm',
      ! 14 silly mapToRegistry rawSpec: '',
      ! 14 silly mapToRegistry spec: 'latest',
      ! 14 silly mapToRegistry type: 'tag' }
      ! 15 silly mapToRegistry uri https://registry.npmjs.org/querystringnpm
      ! 16 silly fetchNamedPackageData install
      ! 17 silly mapToRegistry name install
      ! 18 silly mapToRegistry using default registry
      ! 19 silly mapToRegistry registry https://registry.npmjs.org/
      ! 20 silly mapToRegistry data Result {
      ! 20 silly mapToRegistry raw: 'install',
      ! 20 silly mapToRegistry scope: null,
      ! 20 silly mapToRegistry escapedName: 'install',
      ! 20 silly mapToRegistry name: 'install',
      ! 20 silly mapToRegistry rawSpec: '',
      ! 20 silly mapToRegistry spec: 'latest',
      ! 20 silly mapToRegistry type: 'tag' }
      ! 21 silly mapToRegistry uri https://registry.npmjs.org/install
      ! 22 silly fetchNamedPackageData querystring
      ! 23 silly mapToRegistry name querystring
      ! 24 silly mapToRegistry using default registry
      ! 25 silly mapToRegistry registry https://registry.npmjs.org/
      ! 26 silly mapToRegistry data Result {
      ! 26 silly mapToRegistry raw: 'querystring',
      ! 26 silly mapToRegistry scope: null,
      ! 26 silly mapToRegistry escapedName: 'querystring',
      ! 26 silly mapToRegistry name: 'querystring',
      ! 26 silly mapToRegistry rawSpec: '',
      ! 26 silly mapToRegistry spec: 'latest',
      ! 26 silly mapToRegistry type: 'tag' }
      ! 27 silly mapToRegistry uri https://registry.npmjs.org/querystring
      ! 28 verbose request uri https://registry.npmjs.org/querystringnpm
      ! 29 verbose request no auth needed
      ! 30 info attempt registry request try #1 at 23:46:11
      ! 31 verbose request id 71114a987bb3d0b6
      ! 32 http request GET https://registry.npmjs.org/querystringnpm
      ! 33 verbose request uri https://registry.npmjs.org/install
      ! 34 verbose request no auth needed
      ! 35 info attempt registry request try #1 at 23:46:11
      ! 36 http request GET https://registry.npmjs.org/install
      ! 37 verbose request uri https://registry.npmjs.org/querystring
      ! 38 verbose request no auth needed
      ! 39 info attempt registry request try #1 at 23:46:11
      ! 40 verbose etag "5a251ea2-1864"
      ! 41 verbose lastModified Mon, 4 Dec 2017 10:08:34 GMT
      ! 42 http request GET https://registry.npmjs.org/querystring
      ! 43 http 200 https://registry.npmjs.org/install
      ! 44 verbose headers { 'content-type': 'application/json; charset=UTF-8',
      ! 44 verbose headers server: 'UploadServer',
      ! 44 verbose headers 'cache-control': 'max-age=300',
      ! 44 verbose headers 'last-modified': 'Thu, 16 Nov 2017 22:24:25 GMT',
      ! 44 verbose headers etag: '"5a0e1019-11fdf"',
      ! 44 verbose headers 'content-length': '73695',
      ! 44 verbose headers 'accept-ranges': 'bytes',
      ! 44 verbose headers date: 'Mon, 11 Dec 2017 22:46:11 GMT',
      ! 44 verbose headers via: '1.1 varnish',
      ! 44 verbose headers age: '12272',
      ! 44 verbose headers connection: 'keep-alive',
      ! 44 verbose headers 'x-served-by': 'cache-hhn1546-HHN',
      ! 44 verbose headers 'x-cache': 'HIT',
      ! 44 verbose headers 'x-cache-hits': '1',
      ! 44 verbose headers 'x-timer': 'S1513032372.521302,VS0,VE1',
      ! 44 verbose headers vary: 'Accept-Encoding, Accept' }
      ! 45 silly get cb [ 200,
      ! 45 silly get { 'content-type': 'application/json; charset=UTF-8',
      ! 45 silly get server: 'UploadServer',
      ! 45 silly get 'cache-control': 'max-age=300',
      ! 45 silly get 'last-modified': 'Thu, 16 Nov 2017 22:24:25 GMT',
      ! 45 silly get etag: '"5a0e1019-11fdf"',
      ! 45 silly get 'content-length': '73695',
      ! 45 silly get 'accept-ranges': 'bytes',
      ! 45 silly get date: 'Mon, 11 Dec 2017 22:46:11 GMT',
      ! 45 silly get via: '1.1 varnish',
      ! 45 silly get age: '12272',
      ! 45 silly get connection: 'keep-alive',
      ! 45 silly get 'x-served-by': 'cache-hhn1546-HHN',
      ! 45 silly get 'x-cache': 'HIT',
      ! 45 silly get 'x-cache-hits': '1',
      ! 45 silly get 'x-timer': 'S1513032372.521302,VS0,VE1',
      ! 45 silly get vary: 'Accept-Encoding, Accept' } ]
      ! 46 verbose get saving install to /root/.npm/registry.npmjs.org/install/.cache.json
      ! 47 verbose correctMkdir /root/.npm correctMkdir not in flight; initializing
      ! 48 http 304 https://registry.npmjs.org/querystring
      ! 49 verbose headers { date: 'Mon, 11 Dec 2017 22:46:11 GMT',
      ! 49 verbose headers via: '1.1 varnish',
      ! 49 verbose headers 'cache-control': 'max-age=300',
      ! 49 verbose headers etag: '"5a251ea2-1864"',
      ! 49 verbose headers age: '4681',
      ! 49 verbose headers connection: 'keep-alive',
      ! 49 verbose headers 'x-served-by': 'cache-hhn1529-HHN',
      ! 49 verbose headers 'x-cache': 'HIT',
      ! 49 verbose headers 'x-cache-hits': '2',
      ! 49 verbose headers 'x-timer': 'S1513032372.646045,VS0,VE0',
      ! 49 verbose headers vary: 'Accept-Encoding, Accept' }
      ! 50 silly get cb [ 304,
      ! 50 silly get { date: 'Mon, 11 Dec 2017 22:46:11 GMT',
      ! 50 silly get via: '1.1 varnish',
      ! 50 silly get 'cache-control': 'max-age=300',
      ! 50 silly get etag: '"5a251ea2-1864"',
      ! 50 silly get age: '4681',
      ! 50 silly get connection: 'keep-alive',
      ! 50 silly get 'x-served-by': 'cache-hhn1529-HHN',
      ! 50 silly get 'x-cache': 'HIT',
      ! 50 silly get 'x-cache-hits': '2',
      ! 50 silly get 'x-timer': 'S1513032372.646045,VS0,VE0',
      ! 50 silly get vary: 'Accept-Encoding, Accept' } ]
      ! 51 verbose etag https://registry.npmjs.org/querystring from cache
      ! 52 verbose get saving querystring to /root/.npm/registry.npmjs.org/querystring/.cache.json
      ! 53 verbose correctMkdir /root/.npm correctMkdir not in flight; initializing
      ! 54 http 404 https://registry.npmjs.org/querystringnpm
      ! 55 verbose headers { 'content-type': 'application/json',
      ! 55 verbose headers 'cache-control': 'max-age=0',
      ! 55 verbose headers 'content-length': '2',
      ! 55 verbose headers 'accept-ranges': 'bytes',
      ! 55 verbose headers date: 'Mon, 11 Dec 2017 22:46:12 GMT',
      ! 55 verbose headers via: '1.1 varnish',
      ! 55 verbose headers connection: 'keep-alive',
      ! 55 verbose headers 'x-served-by': 'cache-hhn1524-HHN',
      ! 55 verbose headers 'x-cache': 'MISS',
      ! 55 verbose headers 'x-cache-hits': '0',
      ! 55 verbose headers 'x-timer': 'S1513032372.526893,VS0,VE1410',
      ! 55 verbose headers vary: 'Accept-Encoding' }
      ! 56 silly get cb [ 404,
      ! 56 silly get { 'content-type': 'application/json',
      ! 56 silly get 'cache-control': 'max-age=0',
      ! 56 silly get 'content-length': '2',
      ! 56 silly get 'accept-ranges': 'bytes',
      ! 56 silly get date: 'Mon, 11 Dec 2017 22:46:12 GMT',
      ! 56 silly get via: '1.1 varnish',
      ! 56 silly get connection: 'keep-alive',
      ! 56 silly get 'x-served-by': 'cache-hhn1524-HHN',
      ! 56 silly get 'x-cache': 'MISS',
      ! 56 silly get 'x-cache-hits': '0',
      ! 56 silly get 'x-timer': 'S1513032372.526893,VS0,VE1410',
      ! 56 silly get vary: 'Accept-Encoding' } ]
      ! 57 silly fetchPackageMetaData Error: Registry returned 404 for GET on https://registry.npmjs.org/querystringnpm
      ! 57 silly fetchPackageMetaData at makeError (/usr/lib/node_modules/npm/node_modules/npm-registry-client/lib/request.js:302:12)
      ! 57 silly fetchPackageMetaData at CachingRegistryClient. <anonymous>(/usr/lib/node_modules/npm/node_modules/npm-registry-client/lib/request.js:280:14)
      ! 57 silly fetchPackageMetaData at Request._callback (/usr/lib/node_modules/npm/node_modules/npm-registry-client/lib/request.js:210:14)
      ! 57 silly fetchPackageMetaData at Request.self.callback (/usr/lib/node_modules/npm/node_modules/request/request.js:187:22)
      ! 57 silly fetchPackageMetaData at emitTwo (events.js:106:13)
      ! 57 silly fetchPackageMetaData at Request.emit (events.js:191:7)
      ! 57 silly fetchPackageMetaData at Request. <anonymous>(/usr/lib/node_modules/npm/node_modules/request/request.js:1048:10)
      ! 57 silly fetchPackageMetaData at emitOne (events.js:96:13)
      ! 57 silly fetchPackageMetaData at Request.emit (events.js:188:7)
      ! 57 silly fetchPackageMetaData at IncomingMessage. <anonymous>(/usr/lib/node_modules/npm/node_modules/request/request.js:969:12)
      ! 57 silly fetchPackageMetaData error for querystringnpm { Error: Registry returned 404 for GET on https://registry.npmjs.org/querystringnpm
      ! 57 silly fetchPackageMetaData at makeError (/usr/lib/node_modules/npm/node_modules/npm-registry-client/lib/request.js:302:12)
      ! 57 silly fetchPackageMetaData at CachingRegistryClient. <anonymous>(/usr/lib/node_modules/npm/node_modules/npm-registry-client/lib/request.js:280:14)
      ! 57 silly fetchPackageMetaData at Request._callback (/usr/lib/node_modules/npm/node_modules/npm-registry-client/lib/request.js:210:14)
      ! 57 silly fetchPackageMetaData at Request.self.callback (/usr/lib/node_modules/npm/node_modules/request/request.js:187:22)
      ! 57 silly fetchPackageMetaData at emitTwo (events.js:106:13)
      ! 57 silly fetchPackageMetaData at Request.emit (events.js:191:7)
      ! 57 silly fetchPackageMetaData at Request. <anonymous>(/usr/lib/node_modules/npm/node_modules/request/request.js:1048:10)
      ! 57 silly fetchPackageMetaData at emitOne (events.js:96:13)
      ! 57 silly fetchPackageMetaData at Request.emit (events.js:188:7)
      ! 57 silly fetchPackageMetaData at IncomingMessage. <anonymous>(/usr/lib/node_modules/npm/node_modules/request/request.js:969:12) pkgid: 'querystringnpm', statusCode: 404, code: 'E404' }
      ! 58 silly rollbackFailedOptional Starting
      ! 59 silly rollbackFailedOptional Finishing
      ! 60 silly runTopLevelLifecycles Finishing
      ! 61 silly install printInstalled
      ! 62 verbose stack Error: Registry returned 404 for GET on https://registry.npmjs.org/querystringnpm
      ! 62 verbose stack at makeError (/usr/lib/node_modules/npm/node_modules/npm-registry-client/lib/request.js:302:12)
      ! 62 verbose stack at CachingRegistryClient. <anonymous>(/usr/lib/node_modules/npm/node_modules/npm-registry-client/lib/request.js:280:14)
      ! 62 verbose stack at Request._callback (/usr/lib/node_modules/npm/node_modules/npm-registry-client/lib/request.js:210:14)
      ! 62 verbose stack at Request.self.callback (/usr/lib/node_modules/npm/node_modules/request/request.js:187:22)
      ! 62 verbose stack at emitTwo (events.js:106:13)
      ! 62 verbose stack at Request.emit (events.js:191:7)
      ! 62 verbose stack at Request. <anonymous>(/usr/lib/node_modules/npm/node_modules/request/request.js:1048:10)
      ! 62 verbose stack at emitOne (events.js:96:13)
      ! 62 verbose stack at Request.emit (events.js:188:7)
      ! 62 verbose stack at IncomingMessage. <anonymous>(/usr/lib/node_modules/npm/node_modules/request/request.js:969:12)
      ! 63 verbose statusCode 404
      ! 64 verbose pkgid querystringnpm
      ! 65 verbose cwd /opt/iobroker
      ! 66 error Linux 4.9.35-v7+
      ! 67 error argv "/usr/bin/node" "/usr/bin/npm" "install" "querystringnpm" "install" "querystring"
      ! 68 error node v6.12.2
      ! 69 error npm v3.10.10
      ! 70 error code E404
      ! 71 error 404 Registry returned 404 for GET on https://registry.npmjs.org/querystringnpm
      ! 72 error 404
      ! 73 error 404 'querystringnpm' is not in the npm registry.
      ! 74 error 404 You should bug the author to publish it (or use the name yourself!)
      ! 75 error 404 Note that you can also install from a
      ! 76 error 404 tarball, folder, http url, or git url.
      ! 77 verbose exit [ 1, true ]</anonymous></anonymous></anonymous></anonymous></anonymous></anonymous></anonymous></anonymous></anonymous>

      Vielen dank im Voraus für eure Hilfe.

      Edit: Erledigt! Habe es in JS Adapter eingetragen… (Aus post von Worn abgelesen) Danke

      1 Antwort Letzte Antwort
      0
      • C Offline
        C Offline
        ccc.ggg73
        schrieb am zuletzt editiert von
        #28

        Lucky. Dein Script ist einfach GENIAL!!!

        Funktioniert einwandfrei… Danke.

        1 Antwort Letzte Antwort
        0
        • W Offline
          W Offline
          Worn
          schrieb am zuletzt editiert von
          #29

          Hi,

          @Lucky: Postest du hier nochmal, wenn du den Fehler entfernen konntest? Wenn das läuft wäre ich sehr happy, das (Spotify auf einem Gerät starten in einer Routinge) fehlt bei Alexa nämlich meiner Meinung nach am meisten! Hast du eine Amazon Wunschliste oder kann man donaten ;)?

          Grüße

          Ben

          1 Antwort Letzte Antwort
          0
          • K Offline
            K Offline
            Karim
            schrieb am zuletzt editiert von
            #30

            Ich habe auch ein Problem.

            Ich bekomme zwar bei der Verbindung dann "true" wiedergegeben aber leider lässt sich Spotify nicht steuern :(

            Wo könnte sich da noch ein Fehler eingeschlichen haben?

            Lieben Gruß, Karim.

            1 Antwort Letzte Antwort
            0
            • L Offline
              L Offline
              Lucky
              schrieb am zuletzt editiert von
              #31

              > @Lucky: Postest du hier nochmal, wenn du den Fehler entfernen konntest? Wenn das läuft wäre ich sehr happy, das (Spotify auf einem Gerät starten in einer Routinge) fehlt bei Alexa nämlich meiner Meinung nach am meisten! Hast du eine Amazon Wunschliste oder kann man donaten

              ja ich bin dran !

              ` > Ich bekomme zwar bei der Verbindung dann "true" wiedergegeben aber leider lässt sich Spotify nicht steuern :(

              Wo könnte sich da noch ein Fehler eingeschlichen haben? `

              könntest du das Problem etwas genauer beschreiben ? kann ich so nicht nachvollziehen

              hast du einen Premium Account ?

              1 Antwort Letzte Antwort
              0
              • K Offline
                K Offline
                Karim
                schrieb am zuletzt editiert von
                #32

                Hallo Lucky,

                Danke für deine Hilfsbereitschaft.

                Ja, ich habe einen Premium Account und habe alles so gemacht wie in der Anleitung beschrieben. Script läuft auch Fehlerfrei (nach eintragen von Querystring in JS).

                Ich konnte nun auch wie in der Anleitung beschrieben, die URL in ioBroker unter den Objekten eintragen und bekomme im Anschluss unter Authorized "true" angezeigt.

                Wenn ich aber nun die Devices oder Playlists abfragen möchte passiert einfach nichts. Auch wenn ich bereits auf Spotify Musik abspiele und dann mit Hilfe des Buttons und den Objekten "Pause" drücke passiert nichts.

                Der Log spuckt auch nichts aus, wenn ich den Button drücke.

                Ich hoffe das hilft dir irgendwie weiter :/

                Lieben Gruß, Karim.

                1 Antwort Letzte Antwort
                0
                • L Offline
                  L Offline
                  Lucky
                  schrieb am zuletzt editiert von
                  #33

                  Hier nun die angepasste Version

                  es ist jetzt möglich direkt den Player zu starten mit folgendem Vorgehen:

                  ****1.unter Devices den State 'Use_for_Playback' setzen

                  2.unter Playlist 'Play_this_List' setzen****

                  Es wird immer das zuletzt gesteuerte Gerät angesprochen für das 'Use_for_Playback' gesetzt wurde, solange dieses verfügbar ist ! Ansonst das letzte was der Spotify Server als Aktiv angesehen hat.

                  Play und Pause usw funktionieren logischerweise nur bei aktiver Wiedergabe

                  hier der Aktuelle Code

                  ! ```
                  `//Version 0.4.1
                  //letzte änderung 09.01.2018 18:48
                  ! createState('javascript.0.Spotify.Player.Play', false,{type: "boolean", role: "button"});
                  createState('javascript.0.Spotify.Player.Pause', false,{type: "boolean", role: "button"});
                  createState('javascript.0.Spotify.Player.Skip_Plus', false,{type: "boolean", role: "button"});
                  createState('javascript.0.Spotify.Player.Skip_Minus', false,{type: "boolean", role: "button"});
                  createState('javascript.0.Spotify.Player.Repeat_Track', false,{type: "boolean", role: "button"});
                  createState('javascript.0.Spotify.Player.Repeat_Context', false,{type: "boolean", role: "button"});
                  createState('javascript.0.Spotify.Player.Repeat_off', false,{type: "boolean", role: "button"});
                  createState('javascript.0.Spotify.Player.Volume', 0,{type: "number", role: "Volume %"});
                  createState('javascript.0.Spotify.Player.TrackId','' ,{type: "string", role: "Track Id to Play"});
                  createState('javascript.0.Spotify.Player.Playlist_ID','' ,{type: "string", role: "Playlist Id to Play"});
                  createState('javascript.0.Spotify.Player.Seek', 0,{type: "number", role: "Seek To Position (s)"});
                  createState('javascript.0.Spotify.Player.Shuffle', false,{type: "boolean", role: "Shuffle"});
                  ! createState('javascript.0.Spotify.Devices.Get_Devices', false,{type: "boolean", role: "button"});
                  createState('javascript.0.Spotify.Authorization.Get_Authorization', false,{type: "boolean", role: "button"});
                  createState('javascript.0.Spotify.Authorization.Authorization_URL','',{type: "string", role: "Authorization_URL",write:false});
                  createState('javascript.0.Spotify.Authorization.Authorization_Return_URI','',{type: "string", role: "Authorization_Return_URI"});
                  createState('javascript.0.Spotify.Authorization.User_ID','',{type: "string", role: "User ID",write:false});
                  createState('javascript.0.Spotify.Authorization.Authorized',false,{type: "boolean", role: "Authorized",write:false});
                  //createState('javascript.0.Spotify.Get_Playback_Info', false,{type: "boolean", role: "button"});
                  createState('javascript.0.Spotify.Get_User_Playlists', false,{type: "boolean", role: "button"});
                  ! createState('javascript.0.Spotify.PlaybackInfo.Track_Id','' ,{type: "string", role: "Track Id",write:false});
                  createState('javascript.0.Spotify.PlaybackInfo.Artist_Name','' ,{type: "string", role: "Artist Name",write:false});
                  createState('javascript.0.Spotify.PlaybackInfo.Type','' ,{type: "string", role: "Type",write:false});
                  createState('javascript.0.Spotify.PlaybackInfo.Album','' ,{type: "string", role: "Album",write:false});
                  createState('javascript.0.Spotify.PlaybackInfo.timestamp',0 ,{type: "number", role: "Timestamp",write:false});
                  createState('javascript.0.Spotify.PlaybackInfo.progress_ms',0 ,{type: "number", role: "progress_ms",write:false});
                  createState('javascript.0.Spotify.PlaybackInfo.is_playing',false ,{type: "boolean", role: "is_playing",write:false});
                  createState('javascript.0.Spotify.PlaybackInfo.image_url','' ,{type: "string", role: "Image URL",write:false});
                  createState('javascript.0.Spotify.PlaybackInfo.Track_Name','' ,{type: "string", role: "Track_Name",write:false});
                  createState('javascript.0.Spotify.PlaybackInfo.duration_ms',0 ,{type: "number", role: "Duration ms",write:false});
                  ! createState('javascript.0.Spotify.PlaybackInfo.Device.id','',{type: "string", role: "id",write:false});
                  createState('javascript.0.Spotify.PlaybackInfo.Device.is_active',false,{type: "boolean", role: "is active",write:false});
                  createState('javascript.0.Spotify.PlaybackInfo.Device.is_restricted',false,{type: "boolean", role: "is restricted",write:false});
                  createState('javascript.0.Spotify.PlaybackInfo.Device.name','',{type: "string", role: "Name",write:false});
                  createState('javascript.0.Spotify.PlaybackInfo.Device.type','',{type: "string", role: "Type",write:false});
                  createState('javascript.0.Spotify.PlaybackInfo.Device.volume_percent',0,{type: "number", role: "volume_percent",write:false});
                  ! var request = require('request');
                  var querystring = require('querystring');
                  var fs = require('fs');
                  ! var Application = {
                  User_ID:'',//Nichts eintragen !!
                  BaseURL:'https://api.spotify.com',
                  Client_ID:'HIER DEINE CLIENT ID !!',
                  Client_Secret:'HIER DEIN CLIENT SECRET !!',
                  redirect_uri:'https://example.com/callback/',
                  Token:'', //Nichts eintragen !!
                  refresh_token:'',//Nichts eintragen !!
                  code:'',//Nichts eintragen !!
                  State:''//Nichts eintragen !!
                  };
                  ! var Device_Data={
                  last_active_device_id:'',
                  last_select_device_id:'',
                  };
                  ! //############### Initial ##########
                  ReadTokenFiles(function(err){
                  ! if(!err) {
                  SendRequest('/v1/me','GET','',function(err,data){
                  if(!err) {
                  GetUserInformation(data);
                  setState('javascript.0.Spotify.Authorization.Authorized',val=true,akt=true);

                                       SendRequest('/v1/me/player/devices','GET','',function(err,data){
                                              if(!err){CreateDevices(data)}
                                       });
                            }
                            else{setState('javascript.0.Spotify.Authorization.Authorized',val=false,akt=true)}
                    });
                  

                  ! }
                  });
                  ! //#################################
                  ! function ReadTokenFiles(callback){
                  ! fs.readFile('SpotifyAccessToken.txt', function(err, data) {
                  if(!err){ //wenn keine Fehler
                  console.log('SpotifyAccessToken gelesen');
                  Application.Token=data;

                          fs.readFile('SpotifyRefreshToken.txt', function(err, data) {
                            if(!err){
                              console.log('SpotifyRefreshToken gelesen');
                              Application.refresh_token=data;
                  
                              return callback(false);
                             }
                              else{ //wenn Fehler
                                  console.log(err);
                                  return callback(true);
                  
                              }
                        }); 
                  }
                  else{ //wenn Fehler
                      console.log (err);
                      return callback(true);
                  }
                  

                  });

                  !

                  }// End of Function ReadTokenFiles

                  ! //###################################################################################### FUNCTION SEND REQUEST ###################################################################################
                  function SendRequest(Endpoint,Method,Send_Body,callback){
                  ! var options = {
                  url: Application.BaseURL+Endpoint,
                  method: Method,
                  headers: {Authorization: 'Bearer '+Application.Token},
                  form:Send_Body
                  };
                  ! //console.log(options.form);
                  //console.log('Spotify API Call...'+ Endpoint);
                  ! request(options,function (error, response, body){

                  if(!error){
                  
                      var ParsetBody  ;     
                  

                  ! switch (response.statusCode){

                          case 200: // OK
                              return callback(false,JSON.parse(body)); 
                  
                          case 202: //Accepted, processing has not been completed.
                          DummyBody={
                              is_playing:false                //tritt ein wenn kein Player geöffnet ist
                          };
                              return callback(false,DummyBody);
                  

                  ! case 204: // OK, No Content
                  return callback(false,null);

                          case 400: //Bad Request, message body will contain more information
                              return callback(true,null);
                  
                          case 500: //Server Error
                              return callback(true,null); 
                  
                          case 502: //Bad Gateway
                              console.warn('502 Spotify Server Bad Gateway');   
                              return callback(true,null);
                  
                          case 503: //Service Unavailable
                              console.warn('503 Spotify Service Unavailable');   
                              return callback(true,null);      
                  
                          case 404: //Not Found
                              return callback(true,null);    
                  
                          case 401: //Unauthorized 
                              if(JSON.parse(body).error.message=='The access token expired'){
                                           console.log('Access Token Abgelaufen!!');
                  
                                           Refresh_Token(Endpoint,Method,Send_Body,function(err,NewData){
                  
                                               return callback(err,NewData); //neue Daten
                                           });
                  
                              }
                                       else{ //wenn anderer Fehler mit Code 401
                                           setState('javascript.0.Spotify.Authorization.Authorized',val=false,akt=true);  // neu 05.01.2018
                                           console.error(JSON.parse(body).error.message);
                                           return callback(true,null);
                                       }
                  
                              break;
                  
                      default:
                              console.warn('HTTP Request Fehler wird nicht behandelt, bitte Debuggen !!');
                              return callback(true,null);
                      }
                  } 
                  else(console.error('erron in Request'));
                  

                  ! });//end Request
                  !
                  }//End of Function SendRequest
                  //###################################################################################### END OF FUNCTION SEND REQUEST ###################################################################################
                  ! function CreatePlaybackInfo(P_Body){
                  setState('javascript.0.Spotify.PlaybackInfo.is_playing',val=P_Body.is_playing,akt=true);

                   //console.log(JSON.stringify(P_Body));
                  

                  if ("undefined" !== typeof P_Body.device){
                  Device_Data.last_active_device_id=P_Body.device.id;
                  setState( 'javascript.0.Spotify.PlaybackInfo.Device.id',val=P_Body.device.id,akt=true);
                  }

                  ! if(P_Body.is_playing===true){

                  setState('javascript.0.Spotify.PlaybackInfo.Track_Id',val=P_Body.item.id,akt=true);
                  setState('javascript.0.Spotify.PlaybackInfo.Artist_Name',val=P_Body.item.artists[0].name,akt=true);
                  setState('javascript.0.Spotify.PlaybackInfo.Type',val=P_Body.item.type,akt=true);
                  setState('javascript.0.Spotify.PlaybackInfo.Album',val=P_Body.item.album.name,akt=true);
                  setState('javascript.0.Spotify.PlaybackInfo.timestamp',val=P_Body.timestamp,akt=true);
                  setState('javascript.0.Spotify.PlaybackInfo.progress_ms',val=P_Body.progress_ms,akt=true);
                  setState('javascript.0.Spotify.PlaybackInfo.image_url',val=P_Body.item.album.images[0].url,akt=true);
                  setState( 'javascript.0.Spotify.PlaybackInfo.Track_Name',val=P_Body.item.name,akt=true);
                  setState( 'javascript.0.Spotify.PlaybackInfo.duration_ms',val=P_Body.item.duration_ms,akt=true);

                  setState( 'javascript.0.Spotify.PlaybackInfo.Device.is_active',val=P_Body.device.is_active,akt=true);
                  setState( 'javascript.0.Spotify.PlaybackInfo.Device.is_restricted',val=P_Body.device.is_restricted,akt=true);
                  setState( 'javascript.0.Spotify.PlaybackInfo.Device.name',val=P_Body.device.name,akt=true);
                  setState( 'javascript.0.Spotify.PlaybackInfo.Device.type',val=P_Body.device.type,akt=true);
                  setState( 'javascript.0.Spotify.PlaybackInfo.Device.volume_percent',val=P_Body.device.volume_percent,akt=true);

                  ! }
                  }//End of Function CreatePlaybackInfo
                  ! function GetUserInformation(P_Body){
                  ! Application.User_ID=P_Body.id;
                  setState('javascript.0.Spotify.Authorization.User_ID',val=P_Body.id,akt=true);

                  }//End of Function GetUserInformation

                  ! function GetUsersPlaylist(P_Body){
                  ! for (i = 0; i < P_Body.items.length; i++) {

                      var Pfad='javascript.0.Spotify.Playlists.'+P_Body.items[i].name.replace(/\s+/g, '');
                  

                  ! if (getObject(Pfad+'.id')===null) { //verursacht Warnung
                  createState(Pfad+'.Play_this_List',false,{type:'boolean', role:'button'});
                  createState(Pfad+'.id',P_Body.items[i].id,{type:'string', role:'id',write:false});
                  createState(Pfad+'.owner',P_Body.items[i].owner.id,{type:'string', role:'owner',write:false});
                  createState(Pfad+'.name',P_Body.items[i].name,{type:'string', role:'Name',write:false});
                  createState(Pfad+'.tracks_total',P_Body.items[i].tracks.total,{type:'number', role:'tracks_total',write:false});

                     }
                     else {
                  
                          setState(Pfad+'.id',P_Body.items[i].id,akt=true);
                          setState(Pfad+'.owner',P_Body.items[i].owner.id,akt=true);
                          setState(Pfad+'.name',P_Body.items[i].name,akt=true);
                          setState(Pfad+'.tracks_total',P_Body.items[i].tracks.total,akt=true);
                     }
                     Get_Playlist_Tracks(P_Body.items[i].owner.id,P_Body.items[i].id,Pfad);
                  }
                  

                  !
                  }
                  ! function Device_Handel(Device_Data){
                  if (Device_Data.last_select_device_id===""){
                  return Device_Data.last_active_device_id;
                  }
                  else{
                  return Device_Data.last_select_device_id;
                  }
                  }
                  ! function Get_Playlist_Tracks(owner,id,Pfad){ //NEU
                  var reg_param=owner+'/playlists/'+id+'/tracks';
                  var query={
                  fields:'items.track.name,items.track.id,items.track.artists.name,total,offset',
                  limit:100,
                  offset:0
                  };

                   SendRequest('/v1/users/'+reg_param+'?'+querystring.stringify(query),'GET','',function(err,data){
                       if(!err){
                               var StateString='';
                               var Track_ID_String='';
                  
                  for (i = 0; i < data.items.length; i++) {
                  
                       StateString=StateString+i.toString()+':'+data.items[i].track.name+'-'+data.items[i].track.artists[0].name+';';
                       Track_ID_String=Track_ID_String+i.toString()+':'+data.items[i].track.id+';';
                  }
                  

                  ! createState(Pfad+'.Track_List',-1,{type: "number", role: "Tracks",states:StateString,Track_ID:Track_ID_String});

                       }
                   });    
                  

                  }//End of Function Get_Playlist_Tracks

                  ! function CreateDevices(P_Body){

                  for (i = 0; i < P_Body.devices.length; i++) {
                  
                               for (var ObjName in P_Body.devices[i]) {
                  
                                   if (!getObject('javascript.0.Spotify.Devices.'+P_Body.devices[i].name.replace(/\s+/g, '')+'.'+ObjName)){
                  
                                       createState('javascript.0.Spotify.Devices.'+P_Body.devices[i].name.replace(/\s+/g, '')+'.'+ObjName,P_Body.devices[i][ObjName],{type: typeof P_Body.devices[i][ObjName], role: ObjName});
                                       createState('javascript.0.Spotify.Devices.'+P_Body.devices[i].name.replace(/\s+/g, '')+'.'+'Use_for_Playback',false,{type:'boolean', role:'button'});
                                   }
                  
                                   else{setState('javascript.0.Spotify.Devices.'+P_Body.devices[i].name.replace(/\s+/g, '')+'.'+ObjName,P_Body.devices[i][ObjName],akt=true)}
                               }
                  }
                  

                  }//End of Function CreateDevices

                  ! function generateRandomString (length) {
                  var text = '';
                  var possible = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
                  ! for (var i = 0; i < length; i++) {
                  text += possible.charAt(Math.floor(Math.random() * possible.length));
                  }
                  return text;
                  }
                  ! function request_authorization(){

                  Application.State=generateRandomString (20);
                  
                  var query ={
                      client_id:Application.Client_ID,
                      response_type: 'code',
                      redirect_uri :Application.redirect_uri,
                      state:Application.State,
                      scope:'user-modify-playback-state user-read-playback-state user-read-currently-playing playlist-read-private'
                  };
                  

                  !
                  var options = {
                  url:'https://accounts.spotify.com/de/authorize/?'+querystring.stringify(query),
                  method: 'GET',
                  followAllRedirects: true,
                  };
                  ! setState('javascript.0.Spotify.Authorization.Authorization_URL',val=options.url);
                  var debug=false;
                  if(debug===true){
                  ! request(options, function (error, response,body,formData){
                  // console.log(options.url);
                  //console.log('CODE*****' +response.statusCode);
                  //console.log('RESPONSE*************'+JSON.stringify(response));
                  //console.log('BODY*****'+body);
                  //console.log('ERROR'+error);
                  //console.log('FORM'+request.form);
                  //console.log('HEADERS *****'+JSON.stringify(response.headers));
                  //console.log('HTML *****'+JSON.stringify(response.html));
                  });
                  }
                  ! }// End of Function request_authorization
                  ! function GetToken(){
                  var options = {
                  url: 'https://accounts.spotify.com/api/token',
                  method: 'POST',
                  headers: {Authorization: 'Basic '+Buffer.from(Application.Client_ID + ':' + Application.Client_Secret).toString('base64')},
                  form: {grant_type:'authorization_code',code:Application.code,redirect_uri:Application.redirect_uri}
                  };
                  ! request(options, function (error, response, body){
                  if(SaveToken(body)===true){
                  setState('javascript.0.Spotify.Authorization.Authorization_URL',val='',akt=true);
                  setState('javascript.0.Spotify.Authorization.Authorization_Return_URI',val='',akt=true);
                  setState('javascript.0.Spotify.Authorization.Authorized',val=true,akt=true);
                  }

                  });
                  

                  ! }//End of Function GetToken
                  ! function Refresh_Token(Endpoint,Method,Send_Body,callback){
                  console.log('Token wird erneut angefordert ! ');

                  var options = {
                  url: 'https://accounts.spotify.com/api/token',
                  method: 'POST',
                  headers: {Authorization: 'Basic '+Buffer.from(Application.Client_ID + ':' + Application.Client_Secret).toString('base64')},
                  form: {grant_type:'refresh_token',refresh_token:Application.refresh_token}
                  

                  };

                  ! if(Application.refresh_token!==''){
                  ! request(options, function (error, response, body){
                  if(error){console.log(error)}

                      if (SaveToken(body)===true){  // wenn Token erfolgreich gespreichert wurde
                      console.log('neuer Token eingetroffen');
                            SendRequest(Endpoint,Method,Send_Body,function(err,data){ 
                               if (!err){console.log('Daten mit neuem Token')}
                               else{console.error('FEHLER BEIM ERNEUTEN DATEN ANFORDERN !')}
                          callback(err,data);  
                          });
                  
                      }
                  
                  else {callback(true,null)}
                  
                  });
                  

                  }
                  else{
                  console.warn('kein Refresh Token gefunden !!');
                  callback(true,null);
                  }

                  }//End of Function Refresh_Token

                  ! function SaveToken(Body){

                   var ParsedBody=JSON.parse(Body);
                  
                       if ("undefined" !== typeof  ParsedBody.access_token){  
                  
                            Application.Token=ParsedBody.access_token;
                  
                                  fs.writeFile('SpotifyAccessToken.txt', Application.Token, function (err) {
                                  if (err) {throw err}
                                  else{
                                  console.log('SpotifyAccessToken Saved!');
                  
                                  }
                  
                               });
                       }    
                  
                      if ("undefined" !== typeof  ParsedBody.refresh_token){  
                  
                          Application.refresh_token=ParsedBody.refresh_token;
                  
                              fs.writeFile('SpotifyRefreshToken.txt', Application.refresh_token, function (err) {
                                  if (err) {throw err}
                                  else{
                                  console.log('SpotifyRefreshToken Saved!');
                  
                                  }
                             });
                      }
                      return true;
                  

                  }//End of Function SaveToken

                  ! on({id:'javascript.0.Spotify.Authorization.Authorization_Return_URI',change:"any"}, function (obj){
                  if (!obj.state.ack) {

                       var return_uri=querystring.parse(obj.state.val.slice(obj.state.val.search('[?]')+1, obj.state.val.length));
                       if(return_uri.state==Application.State){
                           Application.code=return_uri.code;
                             GetToken();
                       }
                   }
                  

                  });

                  ! on({id:'javascript.0.Spotify.Authorization.Get_Authorization',val:true}, function (obj){
                  request_authorization();
                  setState('javascript.0.Spotify.Authorization.Authorized',val=false,akt=true);
                  });
                  ! on({id: /.Use_for_Playback$/, val:true},function (obj){

                  ! Device_Data.last_select_device_id=getState(obj.id.slice(0,obj.id.lastIndexOf("."))+'.id').val;

                  var send={
                  device_ids:[Device_Data.last_select_device_id], //Divice IDs als Array !
                  //play:false //True = Wiedergabe startet sofort auf diesem Gerät, FALSE = Wiedergabe anhängig von Playback State
                  };
                  SendRequest('/v1/me/player','PUT',JSON.stringify(send),function(err,data){

                   });
                  

                  });

                  on({id: /.Track_List$/,valGe:0,valNe:null,ack:false},function (obj){ //eine bestimmten Track aus Playliste sofort abspielen

                  var StateName = obj.common.Track_ID.split(';');
                  var StateArr=[];
                  for(var i = 0; i < StateName.length; i++) {
                  var ele = StateName[i].split(':');
                  StateArr[ele[0]] = ele[1];
                  }

                  ! if(StateArr[obj.state.val]!==''&&(StateArr[obj.state.val]!==null)){
                  ! var send ={
                  uris:['spotify:track:'+StateArr[obj.state.val]],
                  offset:{
                  position:0
                  }
                  };

                               SendRequest('/v1/me/player/play','PUT',JSON.stringify(send),function(err){
                                   if(!err){setState(obj.id,obj.state.val,ack=true)}
                               });
                                          }                 
                  

                  });

                  on({id: /.Play_this_List$/, val:true},function (obj){ //eine bestimmte Playlist sofort abspielen

                  ! var send ={
                  context_uri:'spotify:user:'+getState(obj.id.slice(0,obj.id.lastIndexOf("."))+'.owner').val+':playlist:'+getState(obj.id.slice(0,obj.id.lastIndexOf("."))+'.id').val,
                  offset:{
                  position:1
                  }
                  };

                       var query ={device_id:Device_Handel(Device_Data)}; 
                       SendRequest('/v1/me/player/play?'+querystring.stringify(query),'PUT',JSON.stringify(send),function(){
                           SendRequest('/v1/me/player','GET','',function(err,data){
                          if(!err) {CreatePlaybackInfo(data)}
                              });
                       });
                  

                  });

                  ! on({id:'javascript.0.Spotify.Player.Play',val:true}, function (obj){
                  var query ={device_id:Device_Handel(Device_Data)};
                  SendRequest('/v1/me/player/play?'+querystring.stringify(query),'PUT','',function(){});
                  });
                  ! on({id:'javascript.0.Spotify.Player.Pause',val:true}, function (obj){
                  var query ={device_id:Device_Handel(Device_Data)};
                  SendRequest('/v1/me/player/pause?'+querystring.stringify(query),'PUT','',function(){});
                  });

                  on({id:'javascript.0.Spotify.Player.Skip_Plus',val:true}, function (obj){
                  var query ={device_id:Device_Handel(Device_Data)};
                  SendRequest('/v1/me/player/next?'+querystring.stringify(query),'POST','',function(err,data){

                       });
                  

                  });

                  on({id:'javascript.0.Spotify.Player.Skip_Minus',val:true}, function (obj){
                  var query ={device_id:Device_Handel(Device_Data)};
                  SendRequest('/v1/me/player/previous?'+querystring.stringify(query),'POST','',function(){});
                  });

                  on({id:'javascript.0.Spotify.Player.Repeat_Track',val:true}, function (obj){
                  SendRequest('/v1/me/player/repeat?state=track','PUT','',function(){});
                  });

                  on({id:'javascript.0.Spotify.Player.Repeat_Context',val:true}, function (obj){
                  SendRequest('/v1/me/player/repeat?state=context','PUT','',function(){});
                  });

                  on({id:'javascript.0.Spotify.Player.Repeat_off',val:true}, function (obj){
                  SendRequest('/v1/me/player/repeat?state=off','PUT','',function(){});
                  });

                  on({id:'javascript.0.Spotify.Player.Volume'}, function (obj){
                  SendRequest('/v1/me/player/volume?volume_percent='+obj.state.val,'PUT','',function(err){
                  if (!err){
                  // setState('javascript.0.Spotify.Player.Volume', true/ack/);
                  }
                  });
                  });

                  on({id:'javascript.0.Spotify.Player.Seek'}, function (obj){
                  SendRequest('/v1/me/player/seek?position_ms='+obj.state.val*1000,'PUT','',function(){});
                  });

                  on({id:'javascript.0.Spotify.Player.Shuffle'}, function (obj){
                  if (obj.state.val===true){ SendRequest('/v1/me/player/shuffle?state=true','PUT','',function(){})}
                  else{ SendRequest('/v1/me/player/shuffle?state=false','PUT','',function(){})}
                  });

                  on({id:'javascript.0.Spotify.Player.TrackId'}, function (obj){

                       var send ={
                           uris:['spotify:track:'+obj.state.val],
                           offset:{
                               position:0
                           }
                       };
                  
                       SendRequest('/v1/me/player/play','PUT',JSON.stringify(send),function(){});
                  

                  });

                  on({id:'javascript.0.Spotify.Player.Playlist_ID'}, function (obj){

                       var send ={
                           context_uri:'spotify:user:'+Application.User_ID+':playlist:'+obj.state.val,   //spotify:user:user:playlist:
                           offset:{
                               position:1
                           }
                       };
                  
                       SendRequest('/v1/me/player/play','PUT',JSON.stringify(send),function(){});
                  

                  });

                  on({id:'javascript.0.Spotify.Get_User_Playlists'}, function (obj){
                  if(Application.User_ID!==''){
                  var query ={
                  limit:40,
                  offest:0
                  };

                       SendRequest('/v1/users/'+Application.User_ID+'/playlists?'+querystring.stringify(query),'GET','',function(err,data){
                           if(!err) {GetUsersPlaylist(data)}
                       });
                     }
                  

                  });

                  on({id:'javascript.0.Spotify.Devices.Get_Devices'}, function (obj){

                      SendRequest('/v1/me/player/devices','GET','',function(err,data){
                          if(!err){CreateDevices(data)}
                      });
                  

                  });

                  on({id:'javascript.0.Spotify.Get_Playback_Info'}, function (obj){

                       SendRequest('/v1/me/player','GET','',function(err,data){
                          if(!err) {CreatePlaybackInfo(data)}
                       });
                  

                  });

                  on({id:'javascript.0.Spotify.Authorization.Authorized'}, function (obj){

                    if(obj.state.val===true){
                  
                           Intervall = setInterval(function () {
                  
                               SendRequest('/v1/me/player','GET','',function(err,data){
                                  if(!err) {CreatePlaybackInfo(data)}
                                  else{clearInterval(Intervall)}
                               });
                  
                           },5000); 
                    }
                    else{
                        if ("undefined" !== typeof  Intervall){clearInterval(Intervall)}
                    }
                  

                  ! });

                  onStop(function () {
                  setState('javascript.0.Spotify.Authorization.Authorization_URL',val='',akt=true);
                  setState('javascript.0.Spotify.Authorization.Authorization_Return_URI',val='',akt=true);
                  setState('javascript.0.Spotify.Player.TrackId',val='',akt=true);
                  setState('javascript.0.Spotify.Player.Playlist_ID',val='',akt=true);
                  setState('javascript.0.Spotify.Authorization.User_ID',val='',akt=true);
                  setState('javascript.0.Spotify.Authorization.Authorized',val=false,akt=true);
                  if ("undefined" !== typeof Intervall){clearInterval(Intervall)}
                  }, 1000 /ms/);` [/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i]

                  1 Antwort Letzte Antwort
                  0
                  • L Offline
                    L Offline
                    Lucky
                    schrieb am zuletzt editiert von
                    #34

                    @Karim:

                    Hallo Lucky,

                    Danke für deine Hilfsbereitschaft.

                    Ja, ich habe einen Premium Account und habe alles so gemacht wie in der Anleitung beschrieben. Script läuft auch Fehlerfrei (nach eintragen von Querystring in JS).

                    Ich konnte nun auch wie in der Anleitung beschrieben, die URL in ioBroker unter den Objekten eintragen und bekomme im Anschluss unter Authorized "true" angezeigt.

                    Wenn ich aber nun die Devices oder Playlists abfragen möchte passiert einfach nichts. Auch wenn ich bereits auf Spotify Musik abspiele und dann mit Hilfe des Buttons und den Objekten "Pause" drücke passiert nichts.

                    Der Log spuckt auch nichts aus, wenn ich den Button drücke.

                    Ich hoffe das hilft dir irgendwie weiter :/

                    Lieben Gruß, Karim. `

                    Aktualisiere mal bitte deine States

                    bei IoBroker scheinen States die zur Laufzeit erstellt werden, nicht immer sofort sichtbar zu sein

                    1 Antwort Letzte Antwort
                    0
                    • K Offline
                      K Offline
                      Karim
                      schrieb am zuletzt editiert von
                      #35

                      Wenn du mit States aktualisieren das kleine "Aktualisieren Symbol" bei de Objekten meinst, das hat keine Veränderung gebracht :(

                      Im Reiter "Zustände" kann ich leider nichts aktualisieren und dort sind noch alte Zeiten bei "Zeit" und "geändert" eingetragen.

                      Wie kann ich das dort aktualisieren?

                      Lieben Gruß, Karim.

                      1 Antwort Letzte Antwort
                      0
                      • W Offline
                        W Offline
                        Worn
                        schrieb am zuletzt editiert von
                        #36

                        Hi,

                        Vielen Dank! Probiere ich heute Abend aus!

                        @Karim: Ich musste iobroker komplett neu starten (hab den pi durchgestartet) damit das bei mir lief. Erst danach konnte ich die Listen laden etc..

                        Grüße Ben

                        1 Antwort Letzte Antwort
                        0
                        • K Offline
                          K Offline
                          Karim
                          schrieb am zuletzt editiert von
                          #37

                          Den Raspi habe ich bereits neu gestartet, was auch zu keiner Veränderung geführt hat :(

                          Habe es auch eben noch ein weiteres mal getestet, leider wieder ohne Erfolg.

                          Andere Ideen woran es noch liegen könnte? Kann ich euch irgendwas posten, was euch weitere Informationen geben kann?

                          Lieben Gruß, Karim.

                          1 Antwort Letzte Antwort
                          0
                          • W Offline
                            W Offline
                            Worn
                            schrieb am zuletzt editiert von
                            #38

                            Hi,

                            oh man ist das genial :)! Ich bin happy, es läuft! Ich habe noch STATES für shuffle hinzugefügt. Problem war, dass ich mit einer Szene "Guten Morgen" direkt eine Spotify Playliste starte, diese aber leider immer mit Shuffle OFF startete, egal was vorher in Spotify aktiviert war. Resultat war dann, dass die Playlist immer mit dem gleichen Song gestartet hat. Dann würde ich also morgens immer die gleichen 2-3 Lieder hören. Mit Shuffle aktiviert und einem Button-Klick auf Skip (plus oder minus) hab ich dann einen Random-Song aus der Playlist.

                            Im Code ergänzt:

                            Anfang bei den States:

                            createState('javascript.0.Spotify.Player.ShuffleOn', false,{type: "boolean", role: "button"});
                            createState('javascript.0.Spotify.Player.ShuffleOff', false,{type: "boolean", role: "button"});
                            

                            Weiter unten bei den Event-Handlern:

                            on({id:'javascript.0.Spotify.Player.ShuffleOn',val:true}, function (obj){ 
                            	SendRequest('/v1/me/player/shuffle?state=true','PUT','',function(){});
                            });
                            
                            on({id:'javascript.0.Spotify.Player.ShuffleOff',val:true}, function (obj){ 
                            	SendRequest('/v1/me/player/shuffle?state=false','PUT','',function(){});
                            });  
                            
                            

                            @Luck: Ich bin Lucky! Würde dir gerne ein Bier ausgeben! Sehr coole Sache… sehr cool.

                            Grüße

                            Ben

                            1 Antwort Letzte Antwort
                            0
                            • W Offline
                              W Offline
                              Worn
                              schrieb am zuletzt editiert von
                              #39

                              Hi,

                              @Karim: Du könntest mal schauen, ob bei der App bei Spotify überhaupt was ankommt. Da gibt es so ein Dashboard. Möglicherweise geht sonst irgendwas nicht raus/rein? Ansonsten ggf. alles rausschmeißen und nochmal neu starten?

                              Grüße

                              Ben

                              1 Antwort Letzte Antwort
                              0
                              • L Offline
                                L Offline
                                Lucky
                                schrieb am zuletzt editiert von
                                #40

                                @Worn:

                                @Luck: Ich bin Lucky! Würde dir gerne ein Bier ausgeben! Sehr coole Sache… sehr cool.

                                Ben `

                                ich trinke Herry :D

                                1 Antwort Letzte Antwort
                                0
                                • K Offline
                                  K Offline
                                  Karim
                                  schrieb am zuletzt editiert von
                                  #41

                                  Danke, nun klappt es.

                                  Ich glaube es lag daran, dass ich die URL nicht in der erstellten App eingetragen hatte.

                                  Vielen dank für eure Hilfe :)

                                  Jetzt geht es an die Visualisierung. Mal sehen wie es damit voran geht :D

                                  Lieben Gruß, Karim.

                                  1 Antwort Letzte Antwort
                                  0
                                  • W Offline
                                    W Offline
                                    Worn
                                    schrieb am zuletzt editiert von
                                    #42

                                    @Lucky:

                                    @Worn:

                                    @Luck: Ich bin Lucky! Würde dir gerne ein Bier ausgeben! Sehr coole Sache… sehr cool.

                                    Ben `

                                    ich trinke Herry :D `

                                    Äh ja, Herrenhäuser? Und wie kommt das nu zu dir ;)?

                                    Gruß

                                    Ben

                                    1 Antwort Letzte Antwort
                                    0
                                    • K Offline
                                      K Offline
                                      Karim
                                      schrieb am zuletzt editiert von
                                      #43

                                      Ich habe mal wieder ein Problem.

                                      Nach ein paar Stunden / Tagen aktualisieren sich manche Werte in den Objekten nicht mehr, womit es auch nicht mehr möglich ist, die Steuerung per Vis zu übernehmen.

                                      Wenn ich allerdings in den Objekten direkt einen Button nutze, klappt es komischerweise von dort aus wieder.

                                      Über die Vis kommt beim Drücken eines Buttons auch folgendes:

                                      javascript.0 2017-12-26 15:41:14.562 error script.js.Skripte.Spotify: FEHLER BEIM ERNEUTEN DATEN ANFORDERN !

                                      Hat jemand eine Idee, woran es liegen könnte?

                                      Lieben Gruß, Karim.

                                      1 Antwort Letzte Antwort
                                      0
                                      • M Offline
                                        M Offline
                                        mtaxer
                                        schrieb am zuletzt editiert von
                                        #44

                                        PERFEKT! Funktioniert super. Bis auf eine Kleinigkeit. Das Auslesen der Playlist …

                                        Drücke ich den Button kommt nichts an.

                                        Habe im Script diesen Fehler entdeckt:
                                        4070_error.jpg

                                        Hat der vielleicht was damit zu tun?

                                        SG

                                        Mario

                                        1 Antwort Letzte Antwort
                                        0
                                        • L Offline
                                          L Offline
                                          Lucky
                                          schrieb am zuletzt editiert von
                                          #45

                                          du meinst das Ausrufezeichen ? das ist soweit ich weis ein Fehler im Editor und kommt bei allen Skripten vor ab einer bestimmten Zeilenanzahl..

                                          Zu deinem Problem, wenn du die Playlists abgerufen hast, aktualisiere mal deine States

                                          1 Antwort Letzte Antwort
                                          0
                                          Antworten
                                          • In einem neuen Thema antworten
                                          Anmelden zum Antworten
                                          • Älteste zuerst
                                          • Neuste zuerst
                                          • Meiste Stimmen


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          651

                                          Online

                                          32.4k

                                          Benutzer

                                          81.4k

                                          Themen

                                          1.3m

                                          Beiträge
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Anmelden

                                          • Du hast noch kein Konto? Registrieren

                                          • Anmelden oder registrieren, um zu suchen
                                          • Erster Beitrag
                                            Letzter Beitrag
                                          0
                                          • Home
                                          • Aktuell
                                          • Tags
                                          • Ungelesen 0
                                          • Kategorien
                                          • Unreplied
                                          • Beliebt
                                          • GitHub
                                          • Docu
                                          • Hilfe