I have developed a new SpotifyPlus Home Assistant custom component integration that expands the built-in Spotify capabilities. Since it’s a new integration name (e.g. SpotifyPlus) it won’t interfere with the built-in Spotify integration setup. It’s a simple install to the “custom_components” directory via a HACS UI custom repository installer.
I also developed the underlying SpotifyWebApiPython library that interfaces with the Spotify Web API.
The following Home Assistant media_player Platform services are supplied by this integration.
The following custom services are supplied by this integration.
Get Album
Get Album Favorites
Get Album New Releases
Get Artist
Get Artists Albums
Get Artists Followed
Get Browse Categories
Get Category Playlists
Get Featured Playlists
Get Player Devices
Get Player Queue Info
Get Player Recent Tracks
Get Playlist
Get Playlist Favorites
Get Show
Get Show Episodes
Get Show Favorites
Get Track Favorites
Get Users Top Artists
Get Users Top Tracks
Player Media Play Context
Player Media Play Tracks
Player Transfer Playback
Search Albums
Search Artists
Search Audiobooks
Search Episodes
Search Playlists
Search Shows
Search Tracks
It also has built-in media library browser support, as well as interfaces with my SoundTouchPlus integration to provide Spotify music services support for it.
What Speakers are Supported?
Any speaker that supports Spotify Connect functionality should be supported. I say “should be”, as I have only tested this with my Bose SoundTouch line of speakers that support Spotify Connect natively. These include the ST-10 and ST-300 products.
Please let me know if you run into any issues, or if it works with other speaker types (Sonos, Xiaomi, etc).
Nice! Going to test this. One of the claims is faster response to user initiated player states; this is what is bothering me with the current integration because I am switching power of my speakers based on player state and that now takes a while. Hopefully your integration works better in that respect
@balk77
Good deal - let me know if you have issues with the states.
I place a small delay (.25 secs) just after a command (e.g. pause, skip next, etc) is issued, so that it give the Spotify Web API time to update status on its end before HA goes out to query it for a status update (which happens when a media player command is processed). The issue with the current Spotify is that there is no delay, and HA immediately goes out to check the status and the Spotify Web API has not had time to process the change that just happened.
I really wish Spotify would give us a websocket interface with player status updates, instead of having to poll every ‘n’ seconds. Unfortunately, that is beyond my control.
I have it up and running. Tested a few services and also played through Media dashboard. Need to push now for a card that supports all this, especially search.
I do not force the use of the “my” url - that is done by the Home Assistant OAuth2 authorization service. You just need to make sure that the Home Assistant OAuth authorization service url prefix (see figure 1 below) exactly matches (case sensitive, no extra ending slashes, includes https:// prefix) the redirect uri value specified in your Spotify Developer Application Settings (see figure 2 below). You will also need to click the “Link Account” button on the “Link Account to Home Assistant”.
If you have multiple Spotify accounts defined, ensure that the account you are logging on to Spotify with when installing the integration is the same account for the specified Spotify Application Client ID and Secret. If it’s not, then click on the “Not you?” link on the “Agree” form, and re-login to Spotify with the correct account.
Note that you can specify multiple Redirect URI’s in the Spotify Developer Application Settings if you have to.
In my case, the redirect URI is https://my.home-assistant.io/redirect/oauth
Figure 1 - Home Assistant OAuth2 Authorization Service
If you still have issues after the above, please send me a screen capture of your Spotify Developer Application settings so I can see what you have defined for the Redirect URI value. Also send me a screen capture of the Home Assistant OAuth2 Authorization Service “Link Account” page (like Figure 2 above).
FYI, I posted an Enhancement request to the card owner of the generic Spotify card. I plugged in the SpotifyPlus integration media_player and of course it works, but looking at all the new functionality makes me want to sing!
Searching? I mean this is perfect.
You may wish to leave behind suggestions, the more there are helps to drive whether the change will happen.
I can add more services as are needed, as the ones the integration supports are only about 30% of the underlying services available. Check out the spotifywebapiPython library to see if anything else catches your eye and let me know.
Hi!
I entered the wrong Spotify authentication information and despite uninstalling the integration it takes me to the same point, I cannot change this information. So I’m stuck setting up Spotify Plus.
An idea?
@stban1983 It sounds like you entered the wrong application credentials maybe?
If you have multiple Spotify accounts defined, ensure that the account you are logging on to Spotify with when installing the integration is the same account for the specified Spotify Application Client ID and Secret. If it’s not, then click on the “Not you?” link on the “Agree” form, and re-login to Spotify with the correct account.
clear your browser cache (specifically for the spotify.com and homeassistant domains).
restart Home Assistant to clear any cached values.
add the HA Application Credential for SpotifyPlus. Please refer to the Device Configuration Options \ Step 2 Home Assistant Credentials wiki page for detailed instructions, making sure that you use the correct Client ID and Client Secret for the Spotify user account you will be using in Home Assistant.
add the SpotifyPlus integration to Home Assistant. Please refer to the Device Configuration \ Integration Install wiki page for detailed instructions.
Ensure that you enter the correct Spotify credentials for the selected Application Credential. Also pay close attention to the Redirect URI value (see Step 4e - Home Assistant Link Account) in the above link.
Interesting. Can you talk about some of the interesting ways you use this, @thlucas?
I like, of course, the playlist_items_add that you added. I worked out my own kludgy version that talks to a PHP server since I understand PHP better than Python. But it’s kludgy for sure. But other than that, I’m not sure about how I’d use this.
@ih8gates The thought behind the playlist_items_add service is that you could easily click a button next to the media player to add the currently playing track to a “Liked Songs” playlist.
What HA really needs is a custom card (or even a built-in one) that can take advantage of the new service_response data features without having to use template sensors (16k limit). For example, I could build a card that populates “Made For You” Spotify playlist items, where the user clicks on one to play. Or create a card with Spotify Search functionality - a textbox to enter search criteria, a dropdown list to select the type of criteria (playlist, artist, album, etc), and a “Search” button to start the search. Display the results (from real-time service_response data) in a grid (with cover art) and clickable items to play content.
All kinds of stuff we could be doing with service_response data right now that no-one can take advantage of because it’s not fully supported yet.
To be clear I am not complaining - just hoping we can get that functionality soon.
I totally see the value of that playlist_items_add - I have a voice command / automation to “remember this song” when I’m listening to Discover Weekly, etc, and want to add it to a playlist.
I meant for your integration in general. What needs were met when you created this integration?
@ih8gates The reason I created the SpotifyPlus integration (or to be clear, cloned the built-in Spotify integration) was to add custom services to support my SoundTouchPlus integration. I was able to implement Spotify support into the Media Browser for SoundTouchPlus. It makes direct service calls to the SpotifyPlus integration to provide the media browser support.
I also didn’t like the responsiveness of the original Spotify integration, as it was slow to detect changes to the player state. My changes for player state improvement are not perfect either, but it’s the best I can do until Spotify releases a websocket API for real-time player updates (like Bose has for their SoundTouch products).
@j_d Spotcast requirement is determined by your speaker / receiver hardware. I do not need Spotcast to start playback on my Bose SoundTouch speakers. It should be able to start play on any device that is known to Spotify Connect, as it retrieves the device list from the Spotify Web API directly. I say “should be”, as I don’t have any other types of hardware besides my SoundTouch speakers to test with.
Other users have reported that Spotcast is required for playback on Google Chromecast devices. I have not had any feedback on Sonos or other types of hardware. I believe the Chromecast Spotcast requirement is needed because the speaker has gone into “sleep mode” and cannot be awakened to start play.