使用常规授权方法在执行期间重新加载Spotify令牌

时间:2019-03-31 17:22:41

标签: python csv spotipy

因此,我正在遍历一个巨大的.csv文件,该文件的每一行都包含一首歌曲名称和一个艺术家名称。对于这些行中的每一行,我都必须将该歌曲的音轨ID写入另一个文件。 我一直在运行程序,但一个小时后出现此错误:
“访问令牌已过期”
我正在阅读,似乎令牌在一小时后过期。在执行期间,有什么办法可以重新加载令牌?
这是我编写的用于获取歌曲ID的功能

def getSongId(artist, title, songMap):
index = artist + title
trackId = 'null'

try:
    trackId = songMap[index]
    print("HashMap used")
except KeyError:
    try:
        resultats = spotify.search(q='artist:' + artist + ' track:' + title, type='track')
        trackId = resultats['tracks']['items'][0]['id']
        songMap[index] = trackId
    except IndexError:
        trackId = 'null'
return trackId, songMap  

这是我得到的错误:

  

spotipy.client.SpotifyException:HTTP状态:401,代码:-1-https://api.spotify.com/v1/search?q=artist%3AZadye+Wolf+track%3AHustler&limit=10&offset=0&type=track:    访问令牌已过期

非常感谢您

1 个答案:

答案 0 :(得分:0)

简单的解决方案是在令牌过期时捕获异常,并在继续操作之前刷新令牌。

try:
    result = spotify.search(...)
except spotify.client.SpotifyException as e:
    token = refresh_token(...)
else:
   # normal flow