Я пытаюсь создать программу Python для создания списков воспроизведения Spotify в соответствии с настроением пользователя; то есть пользователь выбирает определенное настроение, и программа возвращает список воспроизведения, в котором функции песни (взятые из сохраненных пользователем треков) указывают, что они соответствуют указанному настроению. Однако я столкнулся с проблемой, что плейлист состоит из одной и той же песни, повторяемой 30 раз, а не из 30 разных песен. Я новичок в Python и программировании в целом, так что, возможно, это не очень сложная проблема, но я пытаюсь понять проблему, но не могу.
Вот маршрут в моем основном коде, который относится к этой проблеме (моя полная программа имеет больше маршрутов, и все они пока работают нормально). Все остальные настроения будут определяться другими маршрутами, но по той же логике. Я предоставлю любой дополнительный код, который может понадобиться для лучшего понимания проблемы.
@app.route("/playlist_mood_angry")
def mood_playlist_angry():
# define mood and create empty track list
selected_mood = "Angry"
tracks_uris = [] # we need all the tracks uri to add to the future playlist
if 'auth_header' in session:
auth_header = session['auth_header']
# get user profile and saved tracks
user_profile_data = spotify.get_users_profile(auth_header)
user_id = user_profile_data["id"]
saved_tracks_data = spotify.get_user_saved_tracks(auth_header)
playlist_name = 'CSMoodlet: Angry'
playlist_description = "A playlist for when you're just pissed off and want a soundtrack to go with it. Automatically curated by CSMoodlet."
# go through saved tracks dictionary, get the tracks and for each one check if features average matches selected mood
for item in saved_tracks_data["items"]:
track = item["track"]
features = sp.audio_features(track['id'])
acousticness = features[0]['acousticness']
danceability = features[0]['danceability']
energy = features[0]['energy']
speechiness = features[0]['speechiness']
valence = features[0]['valence']
track_mood = spotify.define_mood(acousticness, danceability, energy, speechiness, valence)
# if the track's mood is "angry", if the list is not 30 tracks long yet, append it to the list
if track_mood == "Angry": #if track's mood is not Angry, it will go back to the for loop to check the next one (THIS DOESN'T WORK)
while len(tracks_uris) < 30:
track_uri = "spotify:track:{}".format(track['id'])
tracks_uris.append(track_uri)
# once it has gone through all saved tracks, create the playlist and add the tracks
new_playlist = spotify.create_playlist(auth_header, user_id, playlist_name, playlist_description)
new_playlist_id = new_playlist['id']
added_playlist = spotify.add_tracks_to_playlist(auth_header, new_playlist_id, tracks_uris)
playlist = spotify.get_playlist(auth_header, new_playlist_id)
tracks_data = []
for item in playlist["items"]:
track_data = item["track"]
tracks_data.append(track_data)
return render_template("created_playlist.html", selected_mood = selected_mood, playlist_tracks=tracks_data)
Любая помощь будет глубоко оценена. Извините, если что-то плохо объяснено, я новичок в Stackoverflow, и английский не является моим родным языком.