forslund / spotify-skill

Mycroft Skill to control spotify using the Spotify Connect API
Apache License 2.0
71 stars 38 forks source link

"stop the music" control does not work #101

Open v0d0r opened 5 years ago

v0d0r commented 5 years ago

Thanks for an awesome skill. I really enjoy this skill and would love to see it improve. It does however not seem to listen when I tell it to stop. I believe the correct command is "stop the music"? I can see on the terminal it does pick up the voice command. Goes silent for a moment then continues the music. Any other logs or details I can send that will help?


play background

Just one moment while I look for that
Listening to the playlist background stop playing music stop the music stop the music

forslund commented 5 years ago

Hmm, does the more general "stop" work?

v0d0r commented 5 years ago

I tried it a few times now again neither stop nor stop the music works. I tried "pause the music" now and this works first time.

forslund commented 5 years ago

I can reproduce to some extent...I can see that the StopMusic intents aren't registering properly, but for me the generic "stop" works.

Will continue to investigate / fix

v0d0r commented 5 years ago

Not urgent at all. I can live with pause. Just throwing it out there to let you know. To be honest its already exceeding my expectations. My google home speaker I cannot get to do playlists at all from spotify. It was super frustrating for a paid for product. Mycroft spotify-skill out of box first time play background and it plays it without issues. Super impressed Thanks.

v0d0r commented 5 years ago

Not sure if its related. But when I issue the stop command I also see a 403 to the spotify api on my terminal:

17:38:02.297 - SpotifySkill - INFO - Pausing Spotify... 17:38:03.005 - mycroft-spotify_forslund.spotify:pause:146 - ERROR - http status: 403, code:-1 - https://api.spotify.com/v1/me/player/pause?device_id=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx:

forslund commented 5 years ago

I think I may have found a possible cause for this and have submitted a PR to mycroft-core.

jshep321 commented 4 years ago

Hi,

I have this problem as well, with any (stop|pause|etc) keyword. I determined that my problem is a mismatched audio playback state machine. If "pause spotify" doesn't work, that means that I started spotify from a desktop client (or mobile) and the audio state comes back empty.

By speaking play spotify (while already playing) and then speaking pause spotify, it works.

I guess a periodic status query from the skill to spotify would be an easy (but inefficient) fix if there's no way to subscribe to get a push; I haven't looked at the API at all.

forslund commented 4 years ago

This has so far been intentionally been left out. We've decided that for now the player should only be able to affect playback if the skill started it (or if playback is taken over using "play spotify"). Mainly because another skill could be playing something on the device (news or something) while you play Spotify in another room using your phone. and a pause command would then pause both the news and Spotify.

This can perhaps be improved. The currently activated playback skill could be tracked by Mycroft and the pause could be sent directly to the playing skill if there is no playing skill it could send it globally perhaps...

The public api does not (as far as I know) support pushes.

jshep321 commented 4 years ago

Two suggestions that might be better just "not working":

  1. a self.speak.dialog("currently you are not in control of spotify") and/or
  2. a backend web setting (i.e. checkbox) to allow for always being in control?
forslund commented 4 years ago

Indeed good suggestions. and possibly a handler for "stop spotify" which explicitly allows stopping (since you clearly want to stop spotify)