Spotipy.User_playlist выдает ошибку: неверный запрос с более чем одним запросом - PullRequest
0 голосов
/ 16 мая 2019

Я пытаюсь получить два своих плейлиста, используя Spotipy.Я использую метод spotipy.user_playlist ().В настоящее время он работает для одного плейлиста, но всякий раз, когда я пробую второй, я получаю сообщение об ошибке.Оба Spotify URI действительны, и, как я упоминал ранее, я получаю первый плейлист совершенно нормально.Вот URI плейлиста:

spotify:user:22tu7wr2adbylfh3n7jns7oga:playlist:7G8WJOoHzdwj81qzRDwAnO
spotify:user:22tu7wr2adbylfh3n7jns7oga:playlist:4yxnkgxG3CHayD4wACjb2y

Я попытался создать второй вызов авторизации с 2 различными авторизованными приложениями, я использовал разные плейлисты от разных пользователей, я также попробовал все методы авторизации, которые я мог найти длябезрезультатно.

import spotipy
import spotipy.util as util
from spotipy.oauth2 import SpotifyClientCredentials
import spotipy.oauth2 as oauth2
cid ="****" 
secret = "****"
username = "2tu7wr2adbylfh3n7jns7oga"
client_credentials_manager = SpotifyClientCredentials(client_id=cid, client_secret=secret) 
scope = 'user-library-read playlist-read-private'
token = util.prompt_for_user_token(username, scope, client_id=cid, client_secret=secret, redirect_uri='http://localhost/callback')
sp = spotipy.Spotify(auth=token, client_credentials_manager=client_credentials_manager)
if token:
    good = "4yxnkgxG3CHayD4wACjb2y"
    bad = "7G8WJOoHzdwj81qzRDwAnO"
    good_playlist = sp.user_playlist(username, playlist_id=good)
    bad_playlist = sp.user_playlist(username, playlist_id=bad)
else:
    print("Can't get token for", username)

Это выдает ошибку:

HTTPError                                 Traceback (most recent call last)
~/anaconda3/lib/python3.7/site-packages/spotipy/client.py in _internal_call(self, method, url, payload, params)
    118         try:
--> 119             r.raise_for_status()
    120         except:

~/anaconda3/lib/python3.7/site-packages/requests/models.py in raise_for_status(self)
    939         if http_error_msg:
--> 940             raise HTTPError(http_error_msg, response=self)
    941 

HTTPError: 400 Client Error: Bad Request for url: https://api.spotify.com/v1/users/2tu7wr2adbylfh3n7jns7oga/playlists/7G8WJOoHzdwj81qzRDwAnO

During handling of the above exception, another exception occurred:

SpotifyException                          Traceback (most recent call last)
<ipython-input-7-b0cbbe8e4d4f> in <module>
     10     bad = "7G8WJOoHzdwj81qzRDwAnO"
     11     good_playlist = sp.user_playlist(username, playlist_id=good)
---> 12     bad_playlist = sp.user_playlist(username, playlist_id=bad)
     13 else:
     14     print("Can't get token for", username)

~/anaconda3/lib/python3.7/site-packages/spotipy/client.py in user_playlist(self, user, playlist_id, fields)
    376             return self._get("users/%s/starred" % (user), fields=fields)
    377         plid = self._get_id('playlist', playlist_id)
--> 378         return self._get("users/%s/playlists/%s" % (user, plid), fields=fields)
    379 
    380     def user_playlist_tracks(self, user, playlist_id=None, fields=None,

~/anaconda3/lib/python3.7/site-packages/spotipy/client.py in _get(self, url, args, payload, **kwargs)
    144         while retries > 0:
    145             try:
--> 146                 return self._internal_call('GET', url, payload, kwargs)
    147             except SpotifyException as e:
    148                 retries -= 1

~/anaconda3/lib/python3.7/site-packages/spotipy/client.py in _internal_call(self, method, url, payload, params)
    122                 raise SpotifyException(r.status_code,
    123                     -1, '%s:\n %s' % (r.url, r.json()['error']['message']),
--> 124                     headers=r.headers)
    125             else:
    126                 raise SpotifyException(r.status_code,

SpotifyException: http status: 400, code:-1 - https://api.spotify.com/v1/users/2tu7wr2adbylfh3n7jns7oga/playlists/7G8WJOoHzdwj81qzRDwAnO:
 Bad request

Когда я перехожу по ссылке, он говорит:

{
  "error": {
    "status": 401,
    "message": "No token provided"
  }
}

Тем не менее, у меня естьтокен от авторизации.Я очень смущен.Если это дублирующее сообщение, пожалуйста, дайте мне знать, я не могу найти решение где-либо еще.

Редактировать: я использовал функцию python sp.user_playlist_tracks() вместо этого, и теперь она работает для обоих списков воспроизведения.

...