Mthrfkr commited on
Commit
b7065fa
·
verified ·
1 Parent(s): e74b8ef

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +16 -18
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
- features_matrix = np.array([
97
- [v['danceability'], v['energy'], v['tempo'], v['valence']] for v in audio_features.values()
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
- return obtener_informacion_canciones(token, similar_tracks)
 
 
 
 
 
 
 
 
 
 
 
 
 
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 = []