Re-write of Spotify Integration (#11858)

This commit is contained in:
Franck Nijhof 2020-01-27 13:46:03 +01:00 committed by GitHub
parent 053038d4b8
commit b647824396
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -6,51 +6,46 @@ ha_category:
- Media Player - Media Player
ha_release: 0.43 ha_release: 0.43
ha_iot_class: Cloud Polling ha_iot_class: Cloud Polling
ha_config_flow: true
ha_quality_scale: silver
ha_codeowners:
- '@frenck'
--- ---
The `spotify` media player platform allows you to control The `spotify` media player integration allows you to control [Spotify](https://www.spotify.com/) playback from Home Assistant.
[Spotify](https://www.spotify.com/) playback from Home Assistant.
## Prerequisites ## Prerequisites
- Spotify account - Spotify account
- Spotify application, properly configured (see below) - Spotify application, properly configured (see below).
<div class='note'> <div class='note'>
Controlling the Spotify integration (pause, play, next, etc.) requires a Premium account. If you do not have a Premium account, the integration in the frontend will not show the controls. Controlling the Spotify integration (pause, play, next, etc.) requires a Premium account.
If you do not have a Premium account, the integration in the frontend will not show the controls.
</div> </div>
To create the required Spotify application: To create the required Spotify application:
- Login to [Spotify Developer](https://developer.spotify.com) - Login to [Spotify Developer](https://developer.spotify.com).
- Visit the [My Applications](https://developer.spotify.com/my-applications/#!/applications) page - Visit the [My Applications](https://developer.spotify.com/my-applications/#!/applications) page.
- Select **Create An App**. Enter any name and description. Once your application is created, view it and copy your **Client ID** and **Client Secret**, which are used in the Home Assistant configuration file. - Select **Create An App**. Enter any name and description.
- Once your application is created, view it and copy your **Client ID** and **Client Secret**, which are used in the Home Assistant configuration file.
- Add a **Redirect URI** in one of the following forms: - Add a **Redirect URI** in one of the following forms:
- If you are not using SSL: `http://<your_home_assistant_url_or_local_ip>/auth/external/callback`
If you are not using SSL: - If you are using SSL: `https://<your_home_assistant_url_or_local_ip>/auth/external/callback`
`http://<your_home_assistant_url_or_local_ip>/api/spotify`
If you are using SSL:
`https://<your_home_assistant_url_or_local_ip>/api/spotify`
- Click **Save** after adding the URI. - Click **Save** after adding the URI.
If you are using an externally accessible address you will likely also need to set the `base_url` attribute of the [HTTP Component](/integrations/http/). This should be set using the same base URL as the redirect URI, e.g., if you used a domain name (not local IP) in the redirect, then use the same domain name in your `base_url`. If you are using an externally accessible address, you will likely also need to set the `base_url` attribute of the [HTTP Integration](/integrations/http/). This should be set using the same base URL as the redirect URI, e.g., if you used a domain name (not local IP) in the redirect, then use the same domain name in your `base_url`.
## Configuration ## Configuration
To add Spotify to your installation, To add Spotify to your installation, add the following to your `configuration.yaml` file:
add the following to your `configuration.yaml` file:
```yaml ```yaml
# Example configuration.yaml entry # Example configuration.yaml entry
media_player: spotify:
- platform: spotify client_id: YOUR_CLIENT_ID
client_id: YOUR_CLIENT_ID client_secret: YOUR_CLIENT_SECRET
client_secret: YOUR_CLIENT_SECRET
aliases:
abc123def456: 'Living Room'
9183abas000: 'Bed Room'
``` ```
{% configuration %} {% configuration %}
@ -62,72 +57,21 @@ client_secret:
description: Client Secret from your Spotify application. description: Client Secret from your Spotify application.
required: true required: true
type: string type: string
cache_path:
description: Path to cache authentication token.
required: false
type: string
default: .spotify-token-cache
aliases:
description: "Dictionary of device ids to be aliased, handy for devices that Spotify cannot properly determine the device name of. New devices will be logged to the `info` channel for ease of aliasing."
required: false
type: map
name:
description: The name of the device used in the frontend.
required: false
type: string
default: Spotify
{% endconfiguration %} {% endconfiguration %}
## Setup ## Activating the Spotify integration
After the prerequisites and configuration are complete, restart Home Assistant. After you have set up the above:
Under notifications a **Spotify** configurator element will be available. Click on "Link Spotify account" and follow the instructions to
authorize Home Assistant to access your Spotify account. A Spotify media player
will then appear. If you are prompted to download a file after completing
authorization, discard the download. It is not needed.
## Sources - Go to the integrations page in the Home Assistant frontend
The sources are based on if you have streamed to these devices before in - Go to **Integrations**
Spotify. If you don't have any sources, then simply stream from your phone to - Add a new **Spotify** integration.
another device in your house: Bluetooth, echo, etc. Once you do, the sources will - Follow the steps shown to authenticate Home Assistant with your Spotify account.
show up in the Spotify developer console as a device to cast/stream to.
Go to https://developer.spotify.com and login. Click on "Console" in top menu and then "Player" in the left menu. Select "/v1/me/player/devices" in the list. Then click "Get token", accept the terms and click "Try it". Your active Spotify devices will then be listed in the right panel, beneath the curl-line (for example, "name": "Web Player (Chrome)").
These names can then be used in for example an input selector:
```yaml ## URI Links For Playlists
spotify_source:
name: 'Source:'
options:
- Spotifyd@rock64
- Web Player (Chrome)
```
The devices won't show up in the dev-console as sources unless they are powered on as well. You can send playlists to Spotify using the `"media_content_type": "playlist"`, which are part of the
[media_player.play_media](/integrations/media_player/#service-media_playerplay_media) service.
## URI Links For Playlists/Etc.
You can send playlists to spotify via the `"media_content_type": "playlist"` and something like (depending on your content ID)
`"media_content_id": "spotify:user:spotify:playlist:37i9dQZF1DWSkkUxEhrBdF"`
which are part of the
[media_player.play_media](/integrations/media_player/#service-media_playerplay_media)
service. You can test this from the services
control panel in the Home Assistant frontend.
## Services
Extra services besides the default ones in component [Media Player component](/integrations/media_player/).
### Service `play_playlist`
Play a Spotify playlist with an option to start on a random position of the playlist.
| Service data attribute | Optional | Description |
| ---------------------- | -------- | ----------- |
| `media_content_id` | no | Spotify URI of playlist. Must be playlist kind of URI.
| `random_song` | yes | True to select random song at start, False to start from beginning.
The above playlist example is a URI link to the "Reggae Infusions" playlist.
[This support document from Spotify](https://support.spotify.com/us/article/sharing-music/)
explains how to get this URI value to use for playlists in the Spotify component.
## Unsupported Devices ## Unsupported Devices