MagicMirror Forum
    • Recent
    • Tags
    • Unsolved
    • Solved
    • MagicMirror² Repository
    • Documentation
    • 3rd-Party-Modules
    • Donate
    • Discord
    • Register
    • Login
    A New Chapter for MagicMirror: The Community Takes the Lead
    Read the statement by Michael Teeuw here.

    MMM-Spotify

    Scheduled Pinned Locked Moved Entertainment
    249 Posts 51 Posters 276.0k Views 54 Watching
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • Cr4z33C Offline
      Cr4z33 @Guest
      last edited by

      @Sean OK here is the console log output of default config with above module entry.
      Please note that I also launched Spotify playing (after launching MM).

      npm start
      
      > magicmirror@2.7.1 start /home/pi/MagicMirror
      > sh run-start.sh
      
      Starting MagicMirror: v2.7.1
      Loading config ...
      Loading module helpers ...
      No helper found for module: alert.
      Initializing new module helper ...
      Module helper loaded: MMM-Spotify
      Initializing new module helper ...
      Module helper loaded: updatenotification
      No helper found for module: clock.
      Initializing new module helper ...
      Module helper loaded: calendar
      No helper found for module: compliments.
      No helper found for module: currentweather.
      No helper found for module: weatherforecast.
      Initializing new module helper ...
      Module helper loaded: newsfeed
      All module helpers loaded.
      Starting server on port 8080 ... 
      Server started ...
      Connecting socket for: MMM-Spotify
      [SPOTIFY_AUTH] Token is fresh.
      Connecting socket for: updatenotification
      Connecting socket for: calendar
      Starting node helper for: calendar
      Connecting socket for: newsfeed
      Starting module: newsfeed
      Sockets connected & modules started ...
      Launching application.
      Create new calendar fetcher for url: http://www.calendarlabs.com/templates/ical/US-Holidays.ics - Interval: 300000
      Create new news fetcher for url: http://www.nytimes.com/services/xml/rss/nyt/HomePage.xml - Interval: 300000
      
      ? 1 Reply Last reply Reply Quote 0
      • ? Offline
        A Former User @Cr4z33
        last edited by A Former User

        @Cr4z33
        Hmmm weird. It seems nothing special suspicious point at all.
        The only thing I suspect is that you are using different account on MMM-Spotify and your real spotify player. but i think it would have bare chance.
        Try onStart to activate it by force, at least it would show some errors.

        onStart: {
            device: null,
            search: {
              type: "playlist",       
              keyword: "death metal",
              random:true,
            }
          }
        
        Cr4z33C 1 Reply Last reply Reply Quote 0
        • Cr4z33C Offline
          Cr4z33
          last edited by

          @Sean tried this config

          		{
          			module: "MMM-Spotify",
          			position: "top_left",
          			disabled: false,
          			config: {
          				// onStart: null, // disable onStart feature with `null`
          				// allowDevices: ["Cr4z33 Mirror"],
          				control: "hidden", //"default", "hidden" available
          				}
          		},
          

          and the white big Spotify logo came up at MM loading and then disappeared.

          Isn’t it enough to // onStart line to let the module show all the time? :thinking_face:

          ? 1 Reply Last reply Reply Quote 0
          • Cr4z33C Offline
            Cr4z33 @Guest
            last edited by

            @Sean said in MMM-Spotify:

            The only thing I suspect is that you are using different account on MMM-Spotify and your real spotify player.

            Even if wasn’t the token OK at MM loading log?

            ? 1 Reply Last reply Reply Quote 0
            • ? Offline
              A Former User @Cr4z33
              last edited by A Former User

              @Cr4z33 said in MMM-Spotify:

              The only thing I suspect is that you are using different account on MMM-Spotify and your real spotify player.

              Even if wasn’t the token OK at MM loading log?

              Token might be OK with different account, but if different account is used, it cannot derive current playback info. (You cannot get spotify info from your friend’s account playback with your account). Have you several accounts for spotify?

              1 Reply Last reply Reply Quote 0
              • ? Offline
                A Former User @Cr4z33
                last edited by

                @Cr4z33 said in MMM-Spotify:

                white big Spotify logo came up at MM loading and then disappeared.

                This is normal. Unless you should customize CSS, with no playback, the module will be disappeared by default. (Some PPL have wanted so I added that feature.)
                When playing on any Spotify player starts, module will be appeared. (If it can get current playback info from server)

                1 Reply Last reply Reply Quote 0
                • Cr4z33C Offline
                  Cr4z33
                  last edited by Cr4z33

                  @Sean OK so to be 100% sure everything is set properly I start installing the module from scratch again generating once more the JSON file and the token.

                  1 Reply Last reply Reply Quote 0
                  • Cr4z33C Offline
                    Cr4z33
                    last edited by Cr4z33

                    @Sean working now!

                    For some reason previous installation generated a token without .JSON at the end (I know because I made a backup on the Desktop) while this time it was generated properly!

                    Thanks for your support anyway. :grinning_face_with_smiling_eyes:

                    1 Reply Last reply Reply Quote 0
                    • M Offline
                      mmmmh Project Sponsor
                      last edited by

                      @Sean Is it intentional that the z-index of the artwork (or the Spotify logo) is equal to or higher than whatever the Alert module shows? Alerts do not cover the Spotify module’s content.

                      ? 1 Reply Last reply Reply Quote 0
                      • ? Offline
                        A Former User @mmmmh
                        last edited by A Former User

                        @mmmmh not intentional. i rarely use alert module, so i didnt know about it. if you can make PR to fix it, feel free to contribute.

                        1 Reply Last reply Reply Quote 0
                        • L Offline
                          larrougos
                          last edited by

                          Hi all! i ve set a config as

                          SPOTIFY_MA_PLAYLIST: {
                                      notificationExec: {
                                          notification: "SPOTIFY_PLAY",
                                          payload: (params) => {
                                              console.log("SPOTIFY_MA_PLAYLIST")
                                              return {
                                                  context_uri: "spotify:playlist:1EaTnmluBfauzzcOdjebNG", // Uri of a personnal playlist or album
                                              }
                                          },
                                          notification: "SPOTIFY_SHUFFLE", // added this to toogle shuffle
                                          notification: "SPOTIFY_NEXT" // added this to not always have the same song starting first 
                                      }
                                  },
                          

                          and activate it with

                          SPOTIFY_MA_PLAYLIST: {
                                      pattern: "play my playlist on spotify", // (.*)  is an action  eg: play my playlist / run my playlist etc... 
                                      command: "SPOTIFY_MA_PLAYLIST"
                                  },
                          

                          but every time i get this result which is very weird
                          weird response

                          any ideas plz?

                          ? 1 Reply Last reply Reply Quote 0
                          • ? Offline
                            A Former User @larrougos
                            last edited by A Former User

                            @larrougos
                            It seems MMM-AssistantMk2’s commands.
                            You made some mistakes.

                            This is somewhat similar what you want.

                            "SPOTIFY_MA_PLAYLIST": {
                              notificationExec: {
                                notification: "SPOTIFY_PLAY",
                                payload: "spotify:playlist:1EaTnmluBfauzzcOdjebNG"
                              }
                            }
                            

                            notificationExec cannot emit multiple notifications. It will emit just one - In your case, the last “SPOTIFY_NEXT” would be emitted. that’s why your issue happened.

                            If you want to emit several notifications, use MMM-NotificationTrigger to relay and chain notifications. Or you can use moduleExec to make some logics. (Anyway that is not the point).

                            And SPOTIFY_SHUFFLE is just toggle flag for current status, so it will not guarantee to be a shuffle mode.

                            L 1 Reply Last reply Reply Quote 0
                            • L Offline
                              larrougos @Guest
                              last edited by larrougos

                              @Sean said in MMM-Spotify:

                              @larrougos
                              It seems MMM-AssistantMk2’s commands.
                              You made some mistakes.

                              This is somewhat similar what you want.

                              "SPOTIFY_MA_PLAYLIST": {
                                notificationExec: {
                                  notification: "SPOTIFY_PLAY",
                                  payload: "spotify:playlist:1EaTnmluBfauzzcOdjebNG"
                                }
                              }
                              

                              notificationExec cannot emit multiple notifications. It will emit just one - In your case, the last “SPOTIFY_NEXT” would be emitted. that’s why your issue happened.

                              If you want to emit several notifications, use MMM-NotificationTrigger to relay and chain notifications. Or you can use moduleExec to make some logics. (Anyway that is not the point).

                              And SPOTIFY_SHUFFLE is just toggle flag for current status, so it will not guarantee to be a shuffle mode.

                              ok!! thats a start! can you please help me with that! i mean how this should have a proper syntax! i would really appreciate.

                              Also another problem that i have is that if spotify is not already playing in the background i am not able to play anything. whatever command i give. and the frontend does not even show the spotify logo. it just disappears on after one sec on start.

                              ? 1 Reply Last reply Reply Quote 0
                              • ? Offline
                                A Former User @larrougos
                                last edited by A Former User

                                @larrougos

                                Also another problem that i have is that if spotify is not already playing in the background i am not able to play anything. whatever command i give. and the frontend does not even show the spotify logo. it just disappears on after one sec on start.

                                In that case, maybe, the module cannot find available active devices. It doesn’t mean you have no device. But by default, Spotify doesn’t know which device is yours unless it is powered and logged as your account.
                                So at least one of your devices need to be activated when this SDK is used. I recommend to install Raspotify, that could makes your spotify always on.

                                L 1 Reply Last reply Reply Quote 0
                                • L Offline
                                  larrougos @Guest
                                  last edited by

                                  @Sean said in MMM-Spotify:

                                  @larrougos

                                  Also another problem that i have is that if spotify is not already playing in the background i am not able to play anything. whatever command i give. and the frontend does not even show the spotify logo. it just disappears on after one sec on start.

                                  In that case, maybe, the module cannot find available active devices. It doesn’t mean you have no device. But by default, Spotify doesn’t know which device is yours unless it is powered and logged as your account.
                                  So at least one of your devices need to be activated when this SDK is used. I recommend to install Raspotify, that could makes your spotify always on.

                                  i am running from ubuntu laptop with Spotify application! i tried with raspotify to install but from what i understood it does not support the laptop arch!

                                  1 Reply Last reply Reply Quote 0
                                  • R Offline
                                    rabbit83ka @kwaeksler
                                    last edited by rabbit83ka

                                    First of all thanks for the module and the effort you put in it.

                                    @Sean said in MMM-Spotify:

                                    updated

                                    1.1.0 (2019-03-25)

                                    • Device Limitation : Now you can allow or limit devices to display its playing on MM.

                                    One question regarding the device limitation: if I leave it empty, the module shows the cover etc. as it should. If I try to limit it to my echo dot with

                                     allowDevices: ["myechodot"],
                                    

                                    the spotify logo appears if I start playback on the echo dot, but no cover etc. is shown. Any hints?

                                    ? 1 Reply Last reply Reply Quote 0
                                    • ? Offline
                                      A Former User @rabbit83ka
                                      last edited by

                                      @rabbit83ka
                                      When you play something on your echodot, nothing been displayed?

                                      R 1 Reply Last reply Reply Quote 0
                                      • R Offline
                                        rabbit83ka @Guest
                                        last edited by rabbit83ka

                                        @Sean
                                        If I comment out

                                        //allwoeDevices: ["myechodot" ]
                                        

                                        it shows the album cover/etx/progress etc. when I play something on my echo dot. With

                                         allowDevices: ["myechodot"],
                                        

                                        the spotify logo appears when something is played on the echodot, but no cover/text/progress etc. is shown.

                                        1 Reply Last reply Reply Quote 0
                                        • I Offline
                                          Ivanov_d
                                          last edited by

                                          This post is deleted!
                                          1 Reply Last reply Reply Quote 0
                                          • I Offline
                                            Ivanov_d
                                            last edited by

                                            I have the following recipies:

                                            var recipe = {
                                            
                                              transcriptionHook: {
                                            
                                                HIDE_ALL_MODULES: {
                                                  pattern: "standby mode",
                                                  command: "HIDEMODULES"
                                                },
                                                SHOW_ALL_MODULES: {
                                                  pattern: "show modules",
                                                  command: "SHOWMODULES"
                                                },
                                                SCREEN_ON: {
                                                  pattern: "turn on screen",
                                                  command: "SCREENON"
                                                },
                                                SCREEN_OFF: {
                                                  pattern: "turn off screen",
                                                  command: "SCREENOFF"
                                                },
                                                REBOOT: {
                                                  pattern: "reboot the mirror",
                                                  command: "REBOOT"
                                                },
                                                SHUTDOWN: {
                                                  pattern: "extinction totale",
                                                  command: "SHUTDOWN"
                                                },
                                                STOP_PLAY: {
                                                  pattern: "stop the video", // this is for youtube but it is preferable to have youtubeAutoplay: false, when running spotify so you don't get interaction with youtube player. 
                                                  command: "STOP_VID"
                                                },
                                            
                                                SPOTIFY_PREVIOUS: {
                                                  pattern: "previous song",
                                                  command: "SPOTIFY_PREVIOUS"
                                                },
                                                SPOTIFY_PAUSE: {
                                                  pattern : "stop the music",
                                                  command: "SPOTIFY_PAUSE"
                                                },
                                                SPOTIFY_PLAY: {
                                                  pattern : "music please",
                                                  command: "SPOTIFY_PLAY"
                                                },
                                                  SPOTIFY_NEXT: {
                                                  pattern: "next song",
                                                  command: "SPOTIFY_NEXT"
                                                },
                                                SPOTIFY_VOLUME: {
                                                  pattern: "set music volume to ([0-9]{1,2}[0]?|100)",
                                                  command: "SPOTIFY_VOLUME"
                                                },
                                                SPOTIFY_SEARCH: {
                                                  pattern: "play (.*) on Spotify",
                                                  command: "SPOTIFY_SEARCH"
                                                },
                                                SPOTIFY_SEARCH_PLAYLIST: {
                                                  pattern: "playlist (.*) on Spotify",
                                                  command: "SPOTIFY_SEARCH_PLAYLIST"
                                                  },
                                              	SPOTIFY_MA_PLAYLIST: {
                                                	pattern: "(.*) my playlist",   // (.*)  is an action  eg: play my playlist / run my playlist etc... 
                                                	command: "SPOTIFY_MA_PLAYLIST"
                                              	},
                                              	SPOTIFY_TRANSFER: {
                                                	pattern: "play the music on (.*)", // (.*)  is the name of your device
                                                	command: "SPOTIFY_TRANSFER"
                                              	},
                                                VOLUME_UP: {
                                                  pattern: "volume up",
                                                  command: "CMD_VOLUME_UP"
                                                },
                                                VOLUME_DOWN: {
                                                  pattern: "volume down",
                                                  command: "CMD_VOLUME_DOWN"
                                                },
                                                SET_VOLUME: {
                                                  pattern: "set master volume to ([0-9]{1,2}[0]?|100)",
                                                  command: "CMD_VOLUME_SET"
                                                }
                                              },
                                            
                                              command: {
                                            
                                                STOP_VID: {
                                                  moduleExec: {
                                                    module: ["MMM-AssistantMk2"],
                                                    exec: (module, params, key) => {
                                                      module.assistant.subdom.youtube.innerHTML = ""; 
                                                      module.assistant.subdom.youtube.style.display = "none";
                                                      module.youtubePlaying = false;
                                                    }
                                                  }
                                                },
                                                SPOTIFY_TRANSFER: {
                                                  notificationExec: {
                                                    notification: "SPOTIFY_TRANSFER",
                                                    payload: (params) => {
                                                      console.log("SPOTIFY_TRANSFER @",params)
                                                      return params[1];
                                                    }
                                                  }
                                                },
                                                SPOTIFY_PAUSE: {
                                                  notificationExec: {
                                                    notification: "SPOTIFY_PAUSE"
                                                  }
                                                },
                                            
                                                SPOTIFY_PLAY: {
                                                  notificationExec: {
                                                    notification: "SPOTIFY_PLAY"
                                                  }
                                                },
                                              	SPOTIFY_MA_PLAYLIST: {
                                                  notificationExec:  {
                                              	    notification: "SPOTIFY_PLAY",
                                              	    payload: (params) => {
                                              	      console.log("SPOTIFY_MA_PLAYLIST")
                                                        return {
                                                          context_uri:"spotify:playlist:0ka8HWt4xXcnTK5OpOuN2k",   // Uri of a personnal playlist or album
                                                        }
                                                    },
                                              	    notification: "SPOTIFY_SHUFFLE",  // added this to toogle shuffle
                                              	    notification: "SPOTIFY_NEXT" // added this to not always have the same song starting first 
                                              	    }
                                              	},		       
                                              	SPOTIFY_NEXT: {
                                                  notificationExec: {
                                                    notification: "SPOTIFY_NEXT"
                                                  }
                                                },
                                                SPOTIFY_PREVIOUS: {
                                                  notificationExec: {
                                                    notification: "SPOTIFY_PREVIOUS"
                                                  }
                                                },
                                                SPOTIFY_VOLUME: {
                                                  notificationExec: {
                                                    notification: "SPOTIFY_VOLUME",
                                                    payload: (params) => {
                                                      console.log("SPOTIFY_VOLUME @",params)
                                                      return params[1];
                                                    }
                                                  }
                                                },
                                              	SPOTIFY_SEARCH: {
                                                  notificationExec: {
                                                    notification: "SPOTIFY_SEARCH",
                                                      payload: (params) => {
                                                        console.log("SPOTIFY_SEARCH @",params)
                                                        return {
                                                          type: "artist,track,album,playlist",
                                                          query: params[1],
                                                          random:false,
                                                        }
                                                      }
                                                  }
                                                },
                                              	SPOTIFY_SEARCH_PLAYLIST: {
                                                  notificationExec: {
                                                    notification: "SPOTIFY_SEARCH",
                                                      payload: (params) => {
                                                        console.log("SPOTIFY_SEARCH_PLAYLIST @",params)
                                                        return {
                                                          type: "playlist",
                                                          query: params[1],
                                                          random:true,
                                                        }
                                                      }
                                                  }
                                                },
                                                CMD_VOLUME_UP: {
                                                  notificationExec: {
                                                    notification: "VOLUME_UP"
                                                  }
                                                },
                                                CMD_VOLUME_DOWN: {
                                                  notificationExec: {
                                                    notification: "VOLUME_DOWN"
                                                  }
                                                },
                                                CMD_VOLUME_SET: {
                                                  notificationExec: {
                                                    notification: "VOLUME_SET",
                                                    payload: (params, key) => {
                                                      console.log("@", params);
                                                      return params[1];
                                                    }
                                                  }
                                                },
                                              }
                                            }
                                            
                                            exports.recipe = recipe // Don't remove this line.
                                            

                                            However, the

                                                SPOTIFY_PLAY: {
                                                  pattern : "music please",
                                                  command: "SPOTIFY_PLAY"
                                                },
                                            

                                            Doesn’t work. It recognizes the command, but nothing happens. Playback from the mirror (raspotify) doesn’t happen. If I switch the source from my desktop/phone spotify app to Raspotify, then everything is fine (e.g. I renamed the player from Raspotify to MagicMirror if that matters).

                                            There are no errors in the logs as far as I can see.

                                            Any thoughts?

                                            ? 1 Reply Last reply Reply Quote 0

                                            Hello! It looks like you're interested in this conversation, but you don't have an account yet.

                                            Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.

                                            With your input, this post could be even better 💗

                                            Register Login
                                            • 1
                                            • 2
                                            • 3
                                            • 4
                                            • 5
                                            • 6
                                            • 12
                                            • 13
                                            • 4 / 13
                                            • First post
                                              Last post
                                            Enjoying MagicMirror? Please consider a donation!
                                            MagicMirror created by Michael Teeuw.
                                            Forum managed by Sam, technical setup by Karsten.
                                            This forum is using NodeBB as its core | Contributors
                                            Contact | Privacy Policy