使用 spotify API,我希望代码将我的每日混音保存在一个播放列表中,但代码不断遇到此错误。 代码遇到的问题。我为此使用了 spotify api,并遵循了每周保存发现的 youtube 教程。
这个具有访问令牌的 sp 变量似乎有问题但是教程在 github 上有相同的代码
import spotipy
import time
from spotipy.oauth2 import SpotifyOAuth
from flask import Flask, request, url_for, session, redirect
#instance of a flask class and assigning it to var app
app = Flask(__name__)
#User stays signed in
app.config['SESSION_COOKIE_NAME'] = 'Spotify Cookie'
#random value assigned to cookie, used to prevent unauthorized access
access_token = 'BQAi7oSn2aAXtyv83hQZWhGfT_v6OtFS0Q4FQ7fDQ_g8H3bZ-bdAFblHSrFNroTsx6WjEuGUN_FDjMdQtLwdRPz01ynhDHsZmppX9giU_y242IgbJc-o1sMevCdtJpbgh7qQtOJKdrNLC4w5Uyg3oFQmDkP-Q6WNEsAgSnUchFK-6DiisctsEKjGJX5sWSVOhv7ytcoP_JLy6zva7HmVOw8zQbNkqCCyA1EAEIzuy1sq2IkHzPlhkuEfNYTBjKd8vg_sF2_y9OZC46vMIXkUf8tYXDUnMdEoiWHX5EDCr9fSP3jjbk0rzd6x-Qbbb5YeHcTWv0GgL-C9MLEYAD0Vtfm-8tNISvt_4oUfus4SlWo'
app.secret_key = 'mnski4534ewfsv@tygh'
TOKEN_INFO = 'token_info'
#Flask app routes
@app.route('/')
#this funcyion will bw called when address to the route is reached here
def login():
#generate authorization url
auth_url = create_spotify_oauth().get_authorize_url()
return redirect(auth_url)
@app.route('/redirect')
def redirect_page():
#This makes sure any stored user data is cleared
session.clear()
#requested args are extracted
code = request.args.get('code')
token_info = create_spotify_oauth().get_access_token(code)
session[TOKEN_INFO] = token_info
return redirect(url_for('save_daily_mix', external=True))
@app.route('/saveDailyMix')
def save_daily_mix():
try:
token_info = get_token()
except:
print("User not logged in")
return redirect("/")
sp = spotipy.Spotify(auth=token_info['access_token'])
current_playlists = sp.current_user_playlists()['items']
daily_mix_playlist_id = None
daily_mix_monali_playlist_id = None
for playlist in current_playlists:
if(playlist['name'] == 'Daily Mix'):
daily_mix_playlist_id = playlist['id']
if (playlist['name'] == "Daily Mix (Monali's Version)"):
daily_mix_monali_playlist_id= playlist['id']
if not daily_mix_playlist_id:
return "Daily Mix not found"
daily_mix_playlist = sp.playlist_items(daily_mix_playlist_id)
song_uris = []
for song in daily_mix_playlist['items']:
song_uri = song['track']['uri']
song_uris.append(song_uri)
sp.user_playlist_add_tracks("4juttm1u5ir1f6z0118fzmx6", daily_mix_monali_playlist_id, song_uris, None)
return ('Daily mix songs added successfully')
def get_token():
#Retrieing token
token_info = session.get(TOKEN_INFO, None)
#if token doesn't exist redirected to login
if not token_info:
redirect(url_for('login', _external=False))
now = int(time.time())
is_expired = token_info['expires_at'] -now < 60
if (is_expired):
spotify_oauth = create_spotify_oauth()
token_info = spotify_oauth.refresh_access_token(token_info['refresh_token'])
return token_info
def create_spotify_oauth():
return SpotifyOAuth(
client_id = "0297b508a8b043e38228b45d1c28e7b0",
client_secret = "49a065e7469f428b87484af13c9e8521",
redirect_uri = url_for('redirect_page', _external = True),
scope = 'user-library-read playlist-modify-public playlist-modify-private'
)
app.run(debug=True)