Spaces:
Runtime error
Runtime error
Update app.py
Browse files
app.py
CHANGED
|
@@ -53,8 +53,8 @@ def buscar_playlists_spotify(token, query, limit=50):
|
|
| 53 |
|
| 54 |
return [{'playlist_id': playlist['id'], 'playlist_name': playlist['name']} for playlist in playlists]
|
| 55 |
|
| 56 |
-
def obtener_canciones_playlist_spotify(token, playlist_id):
|
| 57 |
-
print(f"Obteniendo canciones de la playlist {playlist_id} de Spotify...")
|
| 58 |
url = f'https://api.spotify.com/v1/playlists/{playlist_id}/tracks'
|
| 59 |
headers = {'Authorization': f'Bearer {token}'}
|
| 60 |
canciones = []
|
|
@@ -71,6 +71,7 @@ def obtener_canciones_playlist_spotify(token, playlist_id):
|
|
| 71 |
if track:
|
| 72 |
audio_features = obtener_caracteristicas_audio(token, track['id'])
|
| 73 |
canciones.append({
|
|
|
|
| 74 |
'artista': track['artists'][0]['name'] if track['artists'] else 'Desconocido',
|
| 75 |
'titulo': track['name'],
|
| 76 |
'isrc': track['external_ids'].get('isrc', 'No disponible'),
|
|
@@ -81,6 +82,12 @@ def obtener_canciones_playlist_spotify(token, playlist_id):
|
|
| 81 |
'tempo': audio_features.get('tempo', 'No disponible'),
|
| 82 |
'speechiness': audio_features.get('speechiness', 'No disponible'),
|
| 83 |
'instrumentalness': audio_features.get('instrumentalness', 'No disponible'),
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 84 |
'link': track['external_urls']['spotify'],
|
| 85 |
'record_label': obtener_record_label_spotify(track['album']['id'], token),
|
| 86 |
'source': 'Spotify'
|
|
@@ -116,7 +123,7 @@ def interface(query, num_spotify_playlists=50):
|
|
| 116 |
playlists_spotify = buscar_playlists_spotify(token_spotify, query, num_spotify_playlists)
|
| 117 |
canciones_spotify = []
|
| 118 |
for playlist in playlists_spotify:
|
| 119 |
-
songs = obtener_canciones_playlist_spotify(token_spotify, playlist['playlist_id'])
|
| 120 |
canciones_spotify.extend(songs)
|
| 121 |
|
| 122 |
# Crear DataFrame
|
|
|
|
| 53 |
|
| 54 |
return [{'playlist_id': playlist['id'], 'playlist_name': playlist['name']} for playlist in playlists]
|
| 55 |
|
| 56 |
+
def obtener_canciones_playlist_spotify(token, playlist_id, playlist_name):
|
| 57 |
+
print(f"Obteniendo canciones de la playlist {playlist_id} ({playlist_name}) de Spotify...")
|
| 58 |
url = f'https://api.spotify.com/v1/playlists/{playlist_id}/tracks'
|
| 59 |
headers = {'Authorization': f'Bearer {token}'}
|
| 60 |
canciones = []
|
|
|
|
| 71 |
if track:
|
| 72 |
audio_features = obtener_caracteristicas_audio(token, track['id'])
|
| 73 |
canciones.append({
|
| 74 |
+
'playlist_name': playlist_name,
|
| 75 |
'artista': track['artists'][0]['name'] if track['artists'] else 'Desconocido',
|
| 76 |
'titulo': track['name'],
|
| 77 |
'isrc': track['external_ids'].get('isrc', 'No disponible'),
|
|
|
|
| 82 |
'tempo': audio_features.get('tempo', 'No disponible'),
|
| 83 |
'speechiness': audio_features.get('speechiness', 'No disponible'),
|
| 84 |
'instrumentalness': audio_features.get('instrumentalness', 'No disponible'),
|
| 85 |
+
'duration': track.get('duration_ms', 'No disponible'),
|
| 86 |
+
'release_year': track.get('album', {}).get('release_date', 'No disponible').split('-')[0] if track.get('album', {}).get('release_date') else 'No disponible',
|
| 87 |
+
'loudness': audio_features.get('loudness', 'No disponible'),
|
| 88 |
+
'timbre': audio_features.get('timbre', 'No disponible'),
|
| 89 |
+
'acousticness': audio_features.get('acousticness', 'No disponible'),
|
| 90 |
+
'liveness': audio_features.get('liveness', 'No disponible'),
|
| 91 |
'link': track['external_urls']['spotify'],
|
| 92 |
'record_label': obtener_record_label_spotify(track['album']['id'], token),
|
| 93 |
'source': 'Spotify'
|
|
|
|
| 123 |
playlists_spotify = buscar_playlists_spotify(token_spotify, query, num_spotify_playlists)
|
| 124 |
canciones_spotify = []
|
| 125 |
for playlist in playlists_spotify:
|
| 126 |
+
songs = obtener_canciones_playlist_spotify(token_spotify, playlist['playlist_id'], playlist['playlist_name'])
|
| 127 |
canciones_spotify.extend(songs)
|
| 128 |
|
| 129 |
# Crear DataFrame
|