将多个范围与 spotipy 一起使用

Posted

技术标签:

【中文标题】将多个范围与 spotipy 一起使用【英文标题】:Using multiple scopes with spotipy 【发布时间】:2019-04-12 13:55:55 【问题描述】:

我正在尝试使用 Spotipy 库来提取用户曲目并制作播放列表。每个函数单独工作(getTracks、makePlaylist);但是,它们需要不同的范围。

def generate_token(scope):
token = util.prompt_for_user_token(
    username='al321rltkr20p7oftb0i801lk',
    scope=('user-library-read','playlist-modify-private'),
    client_id='0e7ea227ef7d407b8bf47a4c545adb3c',
    client_secret='267e96c4713f46d4885a4ea6a099ead4',
    redirect_uri='http://www.google.com')
return token

这会返回错误“AttributeError: 'tuple' object has no attribute 'split'” 当我尝试将两个范围作为列表发送时,我也会收到错误。有想法该怎么解决这个吗?

【问题讨论】:

查看范围的完整列表:developer.spotify.com/documentation/general/guides/scopes 【参考方案1】:

scope 应该是单个字符串,而不是元组。

scope='user-library-read playlist-modify-private'

【讨论】:

这似乎不起作用。我仍然得到 401 - 使用 'user-read-currently-playing user-library-read user-read-recently-played user-modify-playback-state' 时缺少权限我可以使用 current_user_playlists() 但不能使用 current_playback。我究竟做错了什么?已授予权限,我有正确的令牌。 没关系。 user-read-currently-playing 还不够。我必须包含user-read-playback-state 才能让current_playback() 工作 据我所知,这会产生一个OSError: [Errno 48] Address already in use 不知道为什么我会得到OSError,就像在演示app.py 中一样,多个作用域都可以工作。我在spotipy.get_user() 上收到错误消息,目前正在将其包装在try, except OSError 中,并且应用程序正在运行。

以上是关于将多个范围与 spotipy 一起使用的主要内容,如果未能解决你的问题,请参考以下文章

使用 Spotipy 将曲目添加到播放列表时出现多个错误

Spotipy client_credential_manager 未提供令牌

获得使用 Python3 的 spotipy 修改 Spotify 播放列表的授权

将数据读取器与 sqltransactions 一起使用

阅读艺术家列表,使用 Spotipy 将热门歌曲添加到播放列表

将存储库模式(和查询范围)与关系一起使用