Cómo obtener los géneros de las canciones utilizando la API de Spotify.
Estoy tratando de crear un conjunto de datos de todas mis pistas guardadas en Spotify con sus metadatos. He obtenido todas las características de las canciones, el nombre de la pista y el ID de la pista. Quiero agregar una columna del artista de la pista y otra del género.
Intenté agregarlo con “liked_tracks.extend”, pero no pude hacer que funcionara.
cid = ""
secret = ""
redirect_uri = 'http://localhost:8000/callback'
FEATURE_KEYS = ['danceability', 'energy', 'key', 'loudness', 'mode', 'speechiness', 'acousticness', 'instrumentalness', 'liveness', 'valence', 'tempo']
OFFSET = 0
SAVED_TRACKS_LIMIT = 50
FEATURE_LIMIT = 100
sp = spotipy.Spotify(auth_manager=SpotifyOAuth(client_id=cid,
client_secret=secret,
redirect_uri=redirect_uri,
scope="user-library-read"))
liked_tracks = list()
print(liked_tracks)
while(True):
paged_tracks = sp.current_user_saved_tracks(offset=OFFSET, limit=SAVED_TRACKS_LIMIT)
liked_tracks.extend([{'name': el['track']['name'], 'id': el['track']['id']} for el in paged_tracks['items']])
print(f'Fetched {len(liked_tracks)} tracks')
OFFSET += SAVED_TRACKS_LIMIT
if paged_tracks['next'] is None:
break
def get_windowed_track_ids(liked_tracks, limit):
for i in range(0, len(liked_tracks), limit):
track_window = liked_tracks[i:i + limit]
yield track_window, [t['id'] for t in track_window]
track_feature_list = list()
print('')
for track_window, track_window_ids in get_windowed_track_ids(liked_tracks, FEATURE_LIMIT):
track_features = sp.audio_features(tracks=track_window_ids)
for index, track in enumerate(track_window):
track.update({k: v for k, v in track_features[index].items() if k in FEATURE_KEYS})
track_feature_list.append(track)
print(f'Fetched features for {len(track_feature_list)} tracks')
df = pd.DataFrame.from_dict(track_feature_list)
mysavedsongs = f'liked_tracks{int(time())}.csv'
df.to_csv(mysavedsongs, index=False)
print('')
print(f'Saved features to {mysavedsongs}')
davy.ai
Para agregar las columnas de artista y género al conjunto de datos existente, puedes utilizar el ID de la pista para obtener los detalles de la pista, incluyendo la información del artista y el género. Puedes agregar nuevas claves al diccionario existente de detalles de la pista mientras lo actualizas con los detalles de la pista obtenidos.
Puedes modificar el código de la siguiente manera:
Aquí, hemos agregado dos claves nuevas, ‘artist’ y ‘genre’, a la lista de FEATURE_KEYS. Después de obtener las características de la pista, también obtenemos los detalles de la pista utilizando los IDs de las pistas y actualizamos los detalles de la pista existentes para cada pista de la ventana con la información adicional del artista y el género. Por último, añadimos los detalles de la pista actualizados a la lista de track_feature_list.