forslund / spotify-skill

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

Doesn't work with family premium? #53

Closed estiens closed 4 years ago

estiens commented 6 years ago

I have a family premium account (which is basically premium, but shared among multiple accounts)

I did the oauth, worked fine, and when I log into spotify, I see spotify-skills in my apps

However, when I say "list spotify devices" it always says "No spotify devices available"

estiens commented 6 years ago

Also would be helpful to know if it can connect to spotify and doesn't get any devices or if it can't connect to spotify.

estiens commented 6 years ago

(I checked settings.json and the correct username and password are written there)

estiens commented 6 years ago

Doesn't look like anything comes back on devices

06:48:36.717 - urllib3.connectionpool - DEBUG - Starting new HTTPS connection (1): api.spotify.com:443
06:48:36.914 - urllib3.connectionpool - DEBUG - https://api.spotify.com:443 "GET /v1/me/player/devices HTTP/1.1" 200 None
estiens commented 6 years ago

okay, for some reason I had to remove all devices from my account, and when I reconnected, I have access through the mycroft integration.

At the moment this does not show any spotify-connect players (sonos or bluetooth) but does show my laptop. Still can't see the picroft itself (but it doesn't show up when I manually curl the endpoint either)

estiens commented 6 years ago

(funnily enough, I can PLAY to picroft from my computer or phone because it shows up in my spotify connect devices there) -- there seems to be something weird about the spotify connect devices showing up. I may try creating a regular premium account just to debug and see if the family account is the weirdness

forslund commented 6 years ago

Hi thanks for looking into this. I've not tested with a family account, I assumed it worked like the normal Premium account. I'd very much like to hear what you find out and will try my best to help getting you up and running.

The skill should warn that there is a problem with authentication when listing devices.

estiens commented 6 years ago

no problem with authentication, it was just returning an empty array for devices (ended up just hitting the endpoint myself) - so all seems to be working fine on your end.

I think mostly there's no bugs here

Possible two separate issues:

forslund commented 6 years ago

The issue of picroft not detecting itself is very strange and I have no good answer. I'll have to look into the code a bit and see if there's something weird.

On picroft the raspotify repo isn't in the repository list which causes the issue you saw. I'm considering switching the client to spotifyd which has a single-binary distribution which can be gotten using curl/wget. I'll make a note to add the raspotify repo on the picroft image in the meantime.

I think sonos/chromecast can be supported if I can figure out the auth protocol for the spotify discovery system. I can detect spotify devices/chromecasts but I'm not quite sure how to send over the auth yet.

estiens commented 6 years ago

raspotify also has a nice curl install script that takes care of everything for you, check their repo.

sonos devices are pretty easy to find, i've done it manually and in python and ruby, commands are a bit wonky though. I'd def use soco or an already existing wrapper if you go this way.

Essentially you'd just also get the list of groups of soco and add them to the spotify device list, and then whatever spotifyid you were passing for a playlist or track (or otherwise) you'd proxy through soco to play on the selected sonos group.

sorryusernameisalreadytaken commented 5 years ago

I having the same issue but at the moment but I am not sure if it could be because by the internet connection here.

Running an picroft image with stable rls on a Rpi3B+. Using spotify-Family too. @forslund did you find anything in the code?

sorryusernameisalreadytaken commented 5 years ago

Saturday I try again this skill with my family account but on this config: -Raspberry pi 4 - with 4GB -Respeaker Mic Array v2.0 (https://www.seeedstudio.com/ReSpeaker-Mic-Array-v2-0.html 5) -Picroft Unstable 2019-11-01 Buster image -Mycroft-Core 19.8.3

okay, for some reason I had to remove all devices from my account, and when I reconnected, I have access through the mycroft integration.

The solution for me was to remove all devices from my account like @estiens did and I need to setup my credentials on raspotify. The problem was that I was not able to let the skill play something when there was no spotify device with my acc online.

JopStro commented 4 years ago

I am also having this same problem, (on rpi3 B) Above solution worked for me, am also using family premium.

sorryusernameisalreadytaken commented 4 years ago

I am also having this same problem, (on rpi3 B) currently working on above solution

Good to know that we are not alone.

Can you tell us exactly what was your solution to fix this?

JopStro commented 4 years ago

I removed all devices, ran the raspotify curl install script on the pi with Mycroft on, altered the config for it to set a memorable device name an put in my username and password. In the skill preferences I put in the raspotify device name. I then restarted the pi and I was then able to play music through Spotify using voice commands. When asking for devices it lists the name of the raspotify device.

dnl-re commented 4 years ago

I am also having this same problem, (on rpi3 B) currently working on above solution

Good to know that we are not alone.

I have a premium family account and have had no problems seeing all my devices on the rpi4 B. Idk but maybe this helps to pinpoint the problem a bit..

JRussell commented 4 years ago

I'm having the same issue of Mycroft not finding itself as a device. If I asked what devices area available it says there are none. If I open Spotify on my desktop PC it sees that and plays there.

fermulator commented 4 years ago

EDIT: (complete 180 I wasn't close enough to the system to realize the reality)

I can confirm this ticket. I have a premium family account, setup as follows:

  1. PRIMARY account (owns the payment info etc, and is my own account)
  2. SECONDARY account A (my spouse's account)
  3. SECONDARY account B (family shared devices)

When I setup Mycroft, I used the SECONDARY account B to authenticate OAuth and authorize user/pass; (as this is the shared account our devices use within the home)

By default it plays on the only other device available.

-- NOTE: it is true that mycroft doesn't seem to count itself as a device, maybe this is the problem users are speaking about? it would be nice for it to count itself as a device (and for other spotify control to playback on the spotify-mycroft speaker)

forslund commented 4 years ago

Thanks for confirming that the family premium works. Will be closing this issue.

Reply to NOTE: The Mark-1 comes with a Spotify player (librespot), and will prefer to launch on the device. If you're running on a desktop with a Spotify client it will prefer to launch on that (if the application is running and using the hostname as identifier like to official application)

fermulator commented 4 years ago

Thanks. Please ref the docs for how to configure a Linux device as a valid/recognized spotify device for Mycroft?

forslund commented 4 years ago

It's probably not explicitly stated. I'll make a note to update the readme

cybr-dev commented 4 years ago

still not working for me same issue as the people above using the latest version of mycroft

jhthompson12 commented 3 years ago

I've been experiencing similar behavior intermittently. I also have a family account. Usually voice control of spotify with Picroft works without issue. Occasionally though, when I request a song, it responds with "No spotify devices available" and this error in the CLI ERROR | 32625 | SpotifySkill | Unable to get a default device while trying to play something.

i still see and can use my Raspotify device from a phone or laptop, but for whatever reason Picroft isnt recognizing it. Restarting raspotify.service (though it never seems to actually fail) fixes the issue, but it eventually comes back.

Im not sure what people are referring to when they say they "remove all devices" from their accounts, I dont see this option when I sign in to my family account.