Closed JackDyre closed 4 months ago
I figured out that you must input a playlist ID rather than a URL
From the docs:
Spotipy supports a number of different ID types:
Spotify URI - The resource identifier that you can enter, for example, in the Spotify Desktop client’s search box to locate an artist, album, or track. Example: spotify:track:6rqhFgbbKwnb9MLmUQDhG6 Spotify URL - An HTML link that opens a track, album, app, playlist or other Spotify resource in a Spotify client. Example: http://open.spotify.com/track/6rqhFgbbKwnb9MLmUQDhG6 Spotify ID - A base-62 number that you can find at the end of the Spotify URI (see above) for an artist, track, album, etc. Example: 6rqhFgbbKwnb9MLmUQDhG6
In general, any Spotipy method that needs an artist, album, track or playlist ID will accept ids in any of the above form
Should this method only accept an IDs and not URLS?
Yep, I know about this already. This part of the docs is somewhat misleading because normally spotipy converts URLs automatically (with Spotify._get_id
), but this conversion doesn't happen everywhere. @stephanebruckert is there a reason for that?
Oh, sorry, I just realised I didn't read your question properly. Deleting playlists is not directly possible.
This may sound silly (because it is imo), but Spotify believes that if you decide to delete your playlist, but there are some followers who like it, then the playlist won't actually be deleted, it will just be removed from your library.
You can try this yourself by creating a playlist, copying the link, deleting the playlist and then trying to access the playlist via the link. You will then have your playlist back.
I don't really know if the playlists will deleted at some point. If you go to the recover playlists, Spotify states that they will remove the playlist from the list after 90 days, but I can't confirm nor deny if this would delete the playlist for good.
So to answer your question: ChatGPT gave you the right answer. But for some reason, there's no URI validation, so just make sure that you're using 1Rqvqd7cI4AoeDn5Ei3mql
instead of the whole link as an argument.
Would the fix just be as simple as adding self._get_id("playlist", playlist_id)
inside the f string in the current_user_unfollow_playlist()
method?
For example:
def current_user_unfollow_playlist(self, playlist_id):
""" Unfollows (deletes) a playlist for the current authenticated
user
Parameters:
- name - the name of the playlist
"""
return self._delete(
f"playlists/{self._get_id("playlist", playlist_id)}/followers"
Additionally, shouldn't the name
param in the docstring be changed to playlist_id
?
That should do it @JackDyre, would you be up to open a PR for it?
Sure!
Is there a reason why _get_id()
and similar methods are private? I don't understand why they are even methods of Spotify
in the first place. Being able to convert between IDs and URIs seems like it would be useful to have in a project.
Which method should I use to delete a playlist that I own? I didn't see any methods in the documentation that directly delete a playlist (though I could have just missed it) and ChatGPT told me to use current_user_unfollow_playlist, but I get an error whenever I use it:
Am I using the wrong method or am I using the method incorrectly?