Spaces:
Runtime error
Runtime error
Update app.py
Browse files
app.py
CHANGED
|
@@ -5,7 +5,6 @@ import time
|
|
| 5 |
import shutil
|
| 6 |
import numpy as np
|
| 7 |
from tempfile import NamedTemporaryFile
|
| 8 |
-
from sklearn.neighbors import NearestNeighbors
|
| 9 |
from openpyxl import Workbook
|
| 10 |
|
| 11 |
# Lista de credenciales de API de Spotify
|
|
@@ -93,24 +92,23 @@ def obtener_tracks_y_caracteristicas(token, url):
|
|
| 93 |
return track_ids, audio_features
|
| 94 |
|
| 95 |
def buscar_canciones_similares(token, audio_features, n_songs=10):
|
| 96 |
-
|
| 97 |
-
|
| 98 |
-
])
|
| 99 |
-
neighbors = NearestNeighbors(n_neighbors=n_songs, algorithm='ball_tree').fit(features_matrix)
|
| 100 |
-
distances, indices = neighbors.kneighbors(features_matrix)
|
| 101 |
-
|
| 102 |
-
similar_tracks = []
|
| 103 |
-
for idx_list in indices:
|
| 104 |
-
for idx in idx_list:
|
| 105 |
-
similar_tracks.append(list(audio_features.keys())[idx])
|
| 106 |
-
|
| 107 |
-
# Eliminar duplicados
|
| 108 |
-
similar_tracks = list(set(similar_tracks))
|
| 109 |
-
|
| 110 |
-
# Limitar a las n_songs canciones más similares
|
| 111 |
-
similar_tracks = similar_tracks[:n_songs]
|
| 112 |
|
| 113 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 114 |
|
| 115 |
def obtener_informacion_canciones(token, track_ids):
|
| 116 |
tracks_info = []
|
|
|
|
| 5 |
import shutil
|
| 6 |
import numpy as np
|
| 7 |
from tempfile import NamedTemporaryFile
|
|
|
|
| 8 |
from openpyxl import Workbook
|
| 9 |
|
| 10 |
# Lista de credenciales de API de Spotify
|
|
|
|
| 92 |
return track_ids, audio_features
|
| 93 |
|
| 94 |
def buscar_canciones_similares(token, audio_features, n_songs=10):
|
| 95 |
+
headers = {'Authorization': f'Bearer {token}'}
|
| 96 |
+
seed_tracks = list(audio_features.keys())[:5] # Spotify solo permite hasta 5 canciones semilla
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 97 |
|
| 98 |
+
params = {
|
| 99 |
+
'seed_tracks': ','.join(seed_tracks),
|
| 100 |
+
'limit': n_songs
|
| 101 |
+
}
|
| 102 |
+
|
| 103 |
+
url = 'https://api.spotify.com/v1/recommendations'
|
| 104 |
+
response = hacer_request_con_reintento(url, headers, params=params)
|
| 105 |
+
|
| 106 |
+
if response:
|
| 107 |
+
recommended_tracks = response.json().get('tracks', [])
|
| 108 |
+
track_ids = [track['id'] for track in recommended_tracks]
|
| 109 |
+
return obtener_informacion_canciones(token, track_ids)
|
| 110 |
+
|
| 111 |
+
return []
|
| 112 |
|
| 113 |
def obtener_informacion_canciones(token, track_ids):
|
| 114 |
tracks_info = []
|