fondberg / spotcast

Home assistant custom component to start Spotify playback on an idle chromecast device as well as control spotify connect devices
Apache License 2.0
692 stars 99 forks source link

"My Episodes" URI not correctly handled: spotify:user:[ID]:collection:your-episodes #441

Open chaorace opened 6 months ago

chaorace commented 6 months ago

Bug Ticket

Describe the bug

The Spotify "Your Episodes" collection is associated with a user:[ID]:collection URI, similar to the URIs used with the "Liked Songs" collection. For example: spotify:user:1234567890:collection:your-episodes

Currently, when a "Your Episodes" URI is provided to the spotcast service trigger, it fails at the URI validation step without proceeding any further. Instead of rejecting the URI, the validator should recognize "Your Episodes" URIs as valid so that they can be passed along to spotipy's start_playback method. Implementation-wise, "Your Episodes" URIs should follow the exact same codepath as currently used with "Liked Songs" collection URIs.

Troubleshooting

Make sure to validate all the elements before submitting the ticket (Exception to the steps marked as optional)

Environment

Configuration

spotcast:
  sp_dc: !secret [SECRETNAME1]
  sp_key: !secret [SECRETNAME2]
  country: US

Service Call

  1. Replace [DEVICE] with any valid device
  2. Replace [ID] with your user ID (identical to the ID found in your "Liked Songs" URI)
  3. Invoke the service call
  4. Note errors in HA log
service: spotcast.start
data:
  uri: spotify:user:[ID]:collection:your-episodes
  device_name: [DEVICE]

Logs

2024-05-02 15:37:53.403 ERROR (SyncWorker_5) [custom_components.spotcast.helpers] collection is not a valid type for Spotify request. Please make sure to use the following list ['playlist']
2024-05-02 15:37:53.403 ERROR (SyncWorker_5) [custom_components.spotcast] Invalid URI provided, aborting casting
fcusson commented 1 week ago

Hi @chaorace, I've been trying to make it work on the new build, where I don't have yet a spotify uri validation and it doesn,t seem to work properly. I am getting a Non Supported Context URI, which is the error the API returns when the URI is valid, but that it cannot use it as a context uri using the Spotify API.

To make sure, I am doing the right things, can you confirm what you are expecting in the ID space of the URI. The Spotify documentation points to it being the account id, so the name of the account, not a unique random char id. Just want to make sure we are talking about the same thing

fcusson commented 1 week ago

There is a beta API endpoint to get the currently saved episodes. I checked and it does return the list of episodes in the Your Episodes playlist. The v5 service spotcast.play_custom_context could be used to leverage the results and create a playback of the playlist.

In its current form, unless we can find a valid uri, spotcast would be unable to play this special playlist