Skip to content

File tree

2 files changed

+9
-11
lines changed

2 files changed

+9
-11
lines changed

mopidy_spotify/playlists.py

+6-8
Original file line numberDiff line numberDiff line change
@@ -54,10 +54,8 @@ def _get_playlist(self, uri, as_items=False):
5454
)
5555

5656
@staticmethod
57-
def _get_user_and_playlist_id_from_uri(uri):
58-
user_id = uri.split(':')[-3]
59-
playlist_id = uri.split(':')[-1]
60-
return user_id, playlist_id
57+
def _get_playlist_id_from_uri(uri):
58+
return uri.split(':')[-1]
6159

6260
@staticmethod
6361
def partitions(lst, n=_chunk_size):
@@ -118,8 +116,8 @@ def _replace_playlist(self, playlist, tracks):
118116
self._playlist_edit(playlist, method=method, uris=uris)
119117

120118
def _playlist_edit(self, playlist, method, **kwargs):
121-
user_id, playlist_id = self._get_user_and_playlist_id_from_uri(playlist.uri)
122-
url = f'users/{user_id}/playlists/{playlist_id}/tracks'
119+
playlist_id = self._get_playlist_id_from_uri(playlist.uri)
120+
url = f'playlists/{playlist_id}/tracks'
123121
method = getattr(self._backend._web_client, method.lower())
124122
if not method:
125123
raise AttributeError(f'Invalid HTTP method "{method}"')
@@ -197,8 +195,8 @@ def save(self, playlist):
197195
# Playlist rename logic
198196
if playlist.name != saved_playlist.name:
199197
logger.info(f'Renaming playlist [{saved_playlist.name}] to [{playlist.name}]')
200-
user_id, playlist_id = self._get_user_and_playlist_id_from_uri(saved_playlist.uri)
201-
self._backend._web_client.put(f'users/{user_id}/playlists/{playlist_id}',
198+
playlist_id = self._get_playlist_id_from_uri(saved_playlist.uri)
199+
self._backend._web_client.put(f'playlists/{playlist_id}',
202200
json={'name': playlist.name})
203201
self._backend._web_client.remove_from_cache("me/playlists")
204202
self._backend._web_client.remove_from_cache(f'playlists/{playlist_id}')

tests/test_playlists.py

+3-3
Original file line numberDiff line numberDiff line change
@@ -128,9 +128,9 @@ def request(method, path, *, json=None):
128128
method = method.lower()
129129
path_parts = path.split('/')
130130
web_client_mock._test_requests_history.append(method)
131-
if re.fullmatch(r"users/(.*?)/playlists/(.*?)/tracks", path):
132-
user_id, playlist_id = path_parts[1], path_parts[3]
133-
playlist_uri = f'spotify:user:{user_id}:playlist:{playlist_id}'
131+
if re.fullmatch(r"playlists/(.*?)/tracks", path):
132+
playlist_id = path_parts[1]
133+
playlist_uri = next((k for k in web_playlists_map.keys() if k.endswith(f':playlist:{playlist_id}')))
134134
rv = _edit_playlist(method, playlist_uri, json)
135135
return mock.Mock(status_ok=rv)
136136
elif re.fullmatch(r"users/(.*?)/playlists", path):

0 commit comments

Comments
 (0)