MagicMirror² v2.12.0 is available! For more information about this release, check out this topic.

MMM-Spotify


  • Project Sponsor Module Developer

    @Cr4z33 if you don’t want to use gaction like me .
    I’ll share my transcription hook and command i’m using with this module and others.
    It works perfectly. with raspotify. raspotify is pretty easy to install and run.

    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"
              },
             // STOP_PLAY2: {
             //   pattern: "arrête la musique",
             //   command: "STOP_VID"
             // },
    
    	 SPOTIFY_PREVIOUS: {
            pattern: "previous song",
            command: "SPOTIFY_PREVIOUS"
            },
            SPOTIFY_PAUSE: {
            pattern : "stop the musique",
            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:0bdByehKVfdsfdsfdsOhF5t",   // 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];
                  }
                }
              }
            },
    

    hope this will help.

    @Sean let me know if you want me to update the wiki.

    Ejay


  • Module Developer

    @ejay-ibm thanks. As your wish, my colleague.



  • @ejay-ibm thanks, but it came out that the module was already fine only I didn’t know I had to setup Raspotify if I want a stand-alone solution.

    Tbh you guys should state that as I guess many here would love to run Spotify completely from the mirror, but it is not so obvious. 😉



  • @Sean @ejay-ibm can you please add the option to hide module commands?
    If someone like me is using MMM-AssistantMk2 to control it then buttons aren’t needed anymore. 😉


  • Project Sponsor Module Developer

    @Cr4z33 We have added an option to hide the control

    after doing a “git pull” from : ~/MagicMirror/modules/MMM-Spotify/

    you can set in your config file

     control: "default", //"default", "hidden" available~
    

    Ejay



  • @ejay-ibm nice thanks! 👍🏽

    Also I didn’t notice in your last reply the many Spotify’ MMM-AssistantMk2 commands you were sharing.
    Thanks for that too (although GA doesn’t understand properly yet when calling a specific Playlist, but hey we can’t have everything lol). 😃



  • @ejay-ibm @Sean I noticed only now that if using allowDevices: with the Raspotify device name I can then hear the music, but somehow the module doesn’t ‘wake up’ and keeps showing the Spotify logo only.



  • @Cr4z33 thats true. That was one of my feature request on page one. I only wanted to see the information about the song on the mirror when i play it on it. Because for other familie members the information about my playing songs arent very interessting when i am not at home. 😃



  • This post is deleted!


  • @Sean said in MMM-Spotify:

    updated

    1.1.0 (2019-03-25)

    • Added: touch(click) interface
    • Device Limitation : Now you can allow or limit devices to display its playing on MM.
    • Some CSS structure is changed.
    • Now this module can emit SPOTIFY_* notifications for other module.

    @Sean that sounds very great. I will update it later, thank you very much! 🙂


Log in to reply