Я использую Spotipy для взаимодействия с Spotify API. Я успешно получил информацию от исполнителя, его альбома и треков каждого альбома. Я могу получить идентификатор трека, имя и популярность. Тем не менее, когда я пытаюсь использовать аудио функции, чтобы получить валентность, это не работает.
Вот мой код:
for a in artists_array
artist_search = sp.search(a,1,0,"artist")
artist = artist_search['artists']['items'][0]
artists.append({'name': artist['name'], 'popularity': artist['popularity']})
albums = []
albums_ids = []
spotify_albums = sp.artist_albums(artist['id'], album_type='album')
for i in range(len(spotify_albums['items'])):
album_id = spotify_albums['items'][i]['id']
albums_ids.append(spotify_albums['items'][i]['id'])
album_name = spotify_albums['items'][i]['name']
albums.append({'id': album_id,'name': album_name })
albums_songs = []
albumIndex = 0;
#For each album
for id in albums_ids:
albums_songs.append([])
spotify_songs = sp.album_tracks(id)
for n in range(len(spotify_songs['items'])):
song_id = spotify_songs['items'][n]['id']
song_name = spotify_songs['items'][n]['name']
song_popularity = sp.track(song_id)['popularity']
song_valence = sp.audio_features([song_id])['valence']
albums_songs[albumIndex].append({'id': song_id, 'name': song_name, 'album_id': id, 'popularity': song_popularity, 'valence': song_valence })
Проблема в:
song_valence = sp.audio_features(song_id)['valence']
Это бросает:
Traceback (most recent call last):
File "spotifyAPI/server.py", line 110, in <module>
song_valence = sp.audio_features(list_song_id[0])['valence']
TypeError: list indices must be integers or slices, not str
Я знаю, что у меня правильный song_id, потому что он работает на популярность. Программа работает отлично, если я удаляю валентную часть.
Я не понимаю ошибку типа. По спотипам я должен дать:
audio_features (треки = [])
Получить аудио функции для одной или нескольких дорожек на основе их идентификаторов Spotify Параметры: дорожки - список
отслеживать URI, URL или идентификаторы, максимум: 50 идентификаторов
Вот почему я так сказал:
song_valence = sp.audio_features([song_id])['valence']
Но это также не работает для:
song_valence = sp.audio_features(song_id)['valence']