spotipy-dev / spotipy

A light weight Python library for the Spotify Web API
http://spotipy.readthedocs.org
MIT License
5.04k stars 958 forks source link

playlist_add_items has broken podcast episode id behavior #810

Open nknaian opened 2 years ago

nknaian commented 2 years ago

Describe the bug The "playlist_add_items" function states in its documentation that you can pass a list of podcast ids, but actually it seems like the only ids you can pass are track ids because it assumes the type of the id is a "track" - https://github.com/plamere/spotipy/blob/master/spotipy/client.py#L1030. I was able to add podcast episodes by passing in uris instead, which is a fine workaround. Maybe this is simply a documentation clarification fix? I can see how it would be annoying to accomodate both track & podcast episode ids here...

Your code playlist_id = "5WC4NBV9O101t7EpJYgiKB" podcast_episode_id = "6Ac19ix9yioyJDXtTtNp2V" sp.playlist_add_items( playlist_id, [podcast_episode_id] )

Expected behavior I expected that passing a list of podcast episode ids to the "playlist_add_items" function would result in the episodes being added to the playlist

Output http status: 400, code:-1 - https://api.spotify.com/v1/playlists/5WC4NBV9O101t7EpJYgiKB/tracks: Payload contains a non-existing ID, reason: None

Environment:

Additional context Add any other context about the problem here.

Peter-Schorn commented 2 years ago

Just use URIs instead of ids.

nknaian commented 2 years ago

Yup I'll use uris instead. I think it would be helpful though if the doc comment for playlist_add_items specified that podcast episode items must be uris

Peter-Schorn commented 2 years ago

You can't infer a URI from just an id.

nknaian commented 2 years ago

Right I understand that, but the doc comment seems to suggest that you can pass in a podcast episode id when you can't

nknaian commented 2 years ago

And the function does automatically infer uri from id, it just assumes type track

Peter-Schorn commented 2 years ago

the only ids you can pass are track ids because it assumes the type of the id is a "track"

Correct.

You can pass a list of URIs instead, which include the ID category.

stephanebruckert commented 1 year ago

To fix in v3 https://github.com/spotipy-dev/spotipy/issues/652