Spotipy аудио функции возвращает ошибку типа - PullRequest
0 голосов
/ 25 апреля 2019

Я использую 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']

1 Ответ

0 голосов
/ 25 апреля 2019

Я нашел решение!Оставьте это здесь на тот случай, если у кого-то возникнет такая же проблема.Он ожидает список, который может быть просто song_id, который вы хотите, а затем вам нужно получить доступ по индексу 0. Надеюсь, это поможет

list_song_ids = [song_id]
song_valence = sp.audio_features(list_song_ids)[0]['valence']
...