Mthrfkr commited on
Commit
c966ca9
·
verified ·
1 Parent(s): 4e2f2d2

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +21 -33
app.py CHANGED
@@ -74,14 +74,20 @@ def manejar_limite_peticiones():
74
  time.sleep(60 - (now - requests_queue[0]).seconds)
75
  requests_queue.append(now)
76
 
77
- def realizar_solicitud(url, headers, params):
78
  manejar_limite_peticiones()
79
- response = session.get(url, headers=headers, params=params)
80
- if response.status_code == 429:
81
- print("Límite de peticiones alcanzado, esperando y reintentando...")
82
- time.sleep(60)
83
  response = session.get(url, headers=headers, params=params)
84
- return response
 
 
 
 
 
 
 
 
 
85
 
86
  def buscar_playlists_spotify(token, query, limit=50):
87
  print("Buscando playlists en Spotify...")
@@ -93,23 +99,17 @@ def buscar_playlists_spotify(token, query, limit=50):
93
  if limit <= 50:
94
  params = {'q': query, 'type': 'playlist', 'limit': limit}
95
  response = realizar_solicitud(url, headers, params)
96
- if response.status_code == 429:
97
- token = obtener_nuevo_token()
98
- headers = {'Authorization': f'Bearer {token}'}
99
- response = realizar_solicitud(url, headers, params)
100
- playlists.extend(response.json().get('playlists', {}).get('items', []))
101
  else:
102
  offset = 0
103
  while limit > 0:
104
  params = {'q': query, 'type': 'playlist', 'limit': min(50, limit), 'offset': offset}
105
  response = realizar_solicitud(url, headers, params)
106
- if response.status_code == 429:
107
- token = obtener_nuevo_token()
108
- headers = {'Authorization': f'Bearer {token}'}
109
- response = realizar_solicitud(url, headers, params)
110
- playlists.extend(response.json().get('playlists', {}).get('items', []))
111
- limit -= min(50, limit)
112
- offset += 50
113
  except Exception as e:
114
  print(f"Error al buscar playlists: {e}")
115
 
@@ -123,11 +123,7 @@ def obtener_canciones_playlist_spotify(token, playlist_id, playlist_name):
123
 
124
  try:
125
  response = realizar_solicitud(url, headers, {})
126
- if response.status_code == 429:
127
- token = obtener_nuevo_token()
128
- headers = {'Authorization': f'Bearer {token}'}
129
- response = realizar_solicitud(url, headers, {})
130
- if response.status_code == 200:
131
  tracks = response.json().get('items')
132
  for item in tracks:
133
  track = item.get('track')
@@ -158,21 +154,13 @@ def obtener_caracteristicas_audio(token, track_id):
158
  url = f'https://api.spotify.com/v1/audio-features/{track_id}'
159
  headers = {'Authorization': f'Bearer {token}'}
160
  response = realizar_solicitud(url, headers, {})
161
- if response.status_code == 429:
162
- token = obtener_nuevo_token()
163
- headers = {'Authorization': f'Bearer {token}'}
164
- response = realizar_solicitud(url, headers, {})
165
- return response.json() if response.status_code == 200 else {}
166
 
167
  def obtener_record_label_spotify(album_id, token):
168
  url = f'https://api.spotify.com/v1/albums/{album_id}'
169
  headers = {'Authorization': f'Bearer {token}'}
170
  response = realizar_solicitud(url, headers, {})
171
- if response.status_code == 429:
172
- token = obtener_nuevo_token()
173
- headers = {'Authorization': f'Bearer {token}'}
174
- response = realizar_solicitud(url, headers, {})
175
- album_info = response.json() if response.status_code == 200 else {}
176
  return album_info.get('label', 'No disponible')
177
 
178
  def interface(project_name, query, num_spotify_playlists=50):
 
74
  time.sleep(60 - (now - requests_queue[0]).seconds)
75
  requests_queue.append(now)
76
 
77
+ def realizar_solicitud(url, headers, params, reintentos=5):
78
  manejar_limite_peticiones()
79
+ for i in range(reintentos):
 
 
 
80
  response = session.get(url, headers=headers, params=params)
81
+ if response.status_code == 429:
82
+ wait_time = 2 ** i # Espera exponencial
83
+ print(f"Límite de peticiones alcanzado, esperando {wait_time} segundos antes de reintentar...")
84
+ time.sleep(wait_time)
85
+ cerrar_y_reiniciar_sesion()
86
+ headers['Authorization'] = f'Bearer {obtener_nuevo_token()}'
87
+ else:
88
+ return response
89
+ print("Límite de reintentos alcanzado.")
90
+ return None
91
 
92
  def buscar_playlists_spotify(token, query, limit=50):
93
  print("Buscando playlists en Spotify...")
 
99
  if limit <= 50:
100
  params = {'q': query, 'type': 'playlist', 'limit': limit}
101
  response = realizar_solicitud(url, headers, params)
102
+ if response:
103
+ playlists.extend(response.json().get('playlists', {}).get('items', []))
 
 
 
104
  else:
105
  offset = 0
106
  while limit > 0:
107
  params = {'q': query, 'type': 'playlist', 'limit': min(50, limit), 'offset': offset}
108
  response = realizar_solicitud(url, headers, params)
109
+ if response:
110
+ playlists.extend(response.json().get('playlists', {}).get('items', []))
111
+ limit -= min(50, limit)
112
+ offset += 50
 
 
 
113
  except Exception as e:
114
  print(f"Error al buscar playlists: {e}")
115
 
 
123
 
124
  try:
125
  response = realizar_solicitud(url, headers, {})
126
+ if response and response.status_code == 200:
 
 
 
 
127
  tracks = response.json().get('items')
128
  for item in tracks:
129
  track = item.get('track')
 
154
  url = f'https://api.spotify.com/v1/audio-features/{track_id}'
155
  headers = {'Authorization': f'Bearer {token}'}
156
  response = realizar_solicitud(url, headers, {})
157
+ return response.json() if response and response.status_code == 200 else {}
 
 
 
 
158
 
159
  def obtener_record_label_spotify(album_id, token):
160
  url = f'https://api.spotify.com/v1/albums/{album_id}'
161
  headers = {'Authorization': f'Bearer {token}'}
162
  response = realizar_solicitud(url, headers, {})
163
+ album_info = response.json() if response and response.status_code == 200 else {}
 
 
 
 
164
  return album_info.get('label', 'No disponible')
165
 
166
  def interface(project_name, query, num_spotify_playlists=50):