Mthrfkr commited on
Commit
c777863
·
verified ·
1 Parent(s): 3228c45

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +18 -25
app.py CHANGED
@@ -1,20 +1,20 @@
1
- import gradio as gr
2
  import requests
3
- import pandas as pd
4
  import time
 
 
5
  from tempfile import NamedTemporaryFile
6
  from openpyxl import Workbook
7
  import shutil
8
 
9
  # Lista de credenciales de API de Spotify
10
- client_ids = [
11
- '107286416613436ab5c63b56d3564f9e','807008cb2ce041178c1871973fc81716',
12
  '528d1d6733ba46eb8e9532e56ced61eb', 'aed6435c51484dc18b8c18aa74dd51f8',
13
  '9df51caba5d247dc921b21de35a47c44', '191227c66e0d4be692bc8ee73ea6eb3d',
14
  'e272c0705c7c4fd68937c58adaa446ed'
15
  ]
16
  client_secrets = [
17
- '4de4c14ed109420c9517c083b8018f8c', 'b6c3fbe2304145e4b268f05eefd6ab2a',
18
  '3dbdcf9a12634cfca9e6aca8d3093020', '8662b33d594f4d198ea025d4aa9f0b98',
19
  '0e39502ec7e74fe99bb74245678d5f0d', '2d2a895d85874c088897dd9894dc64ad',
20
  '9fdfa58ea0a94ce7a0cb34fa19fb7d74'
@@ -41,6 +41,14 @@ def cambiar_api_key():
41
  time.sleep(60) # Pausa de 1 minuto para evitar el límite de tasa
42
  return obtener_token(client_ids[current_api_index], client_secrets[current_api_index])
43
 
 
 
 
 
 
 
 
 
44
  def buscar_playlists_spotify(token, query, limit=40):
45
  print("Buscando playlists en Spotify...")
46
  url = 'https://api.spotify.com/v1/search'
@@ -51,20 +59,14 @@ def buscar_playlists_spotify(token, query, limit=40):
51
  if limit <= 40:
52
  params = {'q': query, 'type': 'playlist', 'limit': limit}
53
  response = requests.get(url, headers=headers, params=params)
54
- if response.status_code == 429: # Límite alcanzado
55
- print("Límite de peticiones alcanzado, cambiando API Key...")
56
- token = cambiar_api_key()
57
- response = requests.get(url, headers={'Authorization': f'Bearer {token}'}, params=params)
58
  playlists.extend(response.json().get('playlists', {}).get('items', []))
59
  else:
60
  offset = 0
61
  while limit > 0:
62
  params = {'q': query, 'type': 'playlist', 'limit': min(40, limit), 'offset': offset}
63
  response = requests.get(url, headers=headers, params=params)
64
- if response.status_code == 429: # Límite alcanzado
65
- print("Límite de peticiones alcanzado, cambiando API Key...")
66
- token = cambiar_api_key()
67
- response = requests.get(url, headers={'Authorization': f'Bearer {token}'}, params=params)
68
  playlists.extend(response.json().get('playlists', {}).get('items', []))
69
  limit -= min(40, limit)
70
  offset += 40
@@ -82,10 +84,7 @@ def obtener_canciones_playlist_spotify(token, playlist_id, playlist_name):
82
 
83
  try:
84
  response = requests.get(url, headers=headers)
85
- if response.status_code == 429: # Límite alcanzado
86
- print("Límite de peticiones alcanzado, cambiando API Key...")
87
- token = cambiar_api_key()
88
- response = requests.get(url, headers={'Authorization': f'Bearer {token}'})
89
  if response.status_code == 200:
90
  tracks = response.json().get('items')
91
  for item in tracks:
@@ -117,20 +116,14 @@ def obtener_caracteristicas_audio(token, track_id):
117
  url = f'https://api.spotify.com/v1/audio-features/{track_id}'
118
  headers = {'Authorization': f'Bearer {token}'}
119
  response = requests.get(url, headers=headers)
120
- if response.status_code == 429: # Límite alcanzado
121
- print("Límite de peticiones alcanzado al obtener características de audio, cambiando API Key...")
122
- token = cambiar_api_key()
123
- response = requests.get(url, headers={'Authorization': f'Bearer {token}'})
124
  return response.json() if response.status_code == 200 else {}
125
 
126
  def obtener_record_label_spotify(album_id, token):
127
  url = f'https://api.spotify.com/v1/albums/{album_id}'
128
  headers = {'Authorization': f'Bearer {token}'}
129
  response = requests.get(url, headers=headers)
130
- if response.status_code == 429: # Límite alcanzado
131
- print("Límite de peticiones alcanzado al obtener la discográfica, cambiando API Key...")
132
- token = cambiar_api_key()
133
- response = requests.get(url, headers={'Authorization': f'Bearer {token}'})
134
  album_info = response.json() if response.status_code == 200 else {}
135
  return album_info.get('label', 'No disponible')
136
 
 
 
1
  import requests
 
2
  import time
3
+ import gradio as gr
4
+ import pandas as pd
5
  from tempfile import NamedTemporaryFile
6
  from openpyxl import Workbook
7
  import shutil
8
 
9
  # Lista de credenciales de API de Spotify
10
+ client_ids = [
11
+ '807008cb2ce041178c1871973fc81716', '107286416613436ab5c63b56d3564f9e',
12
  '528d1d6733ba46eb8e9532e56ced61eb', 'aed6435c51484dc18b8c18aa74dd51f8',
13
  '9df51caba5d247dc921b21de35a47c44', '191227c66e0d4be692bc8ee73ea6eb3d',
14
  'e272c0705c7c4fd68937c58adaa446ed'
15
  ]
16
  client_secrets = [
17
+ 'b6c3fbe2304145e4b268f05eefd6ab2a', '4de4c14ed109420c9517c083b8018f8c',
18
  '3dbdcf9a12634cfca9e6aca8d3093020', '8662b33d594f4d198ea025d4aa9f0b98',
19
  '0e39502ec7e74fe99bb74245678d5f0d', '2d2a895d85874c088897dd9894dc64ad',
20
  '9fdfa58ea0a94ce7a0cb34fa19fb7d74'
 
41
  time.sleep(60) # Pausa de 1 minuto para evitar el límite de tasa
42
  return obtener_token(client_ids[current_api_index], client_secrets[current_api_index])
43
 
44
+ def manejar_limite_de_tasa(response, token):
45
+ if response.status_code == 429: # Límite alcanzado
46
+ print("Límite de peticiones alcanzado, esperando antes de cambiar API Key...")
47
+ retry_after = int(response.headers.get('Retry-After', 60)) # Espera recomendada
48
+ time.sleep(retry_after)
49
+ return cambiar_api_key()
50
+ return token
51
+
52
  def buscar_playlists_spotify(token, query, limit=40):
53
  print("Buscando playlists en Spotify...")
54
  url = 'https://api.spotify.com/v1/search'
 
59
  if limit <= 40:
60
  params = {'q': query, 'type': 'playlist', 'limit': limit}
61
  response = requests.get(url, headers=headers, params=params)
62
+ token = manejar_limite_de_tasa(response, token)
 
 
 
63
  playlists.extend(response.json().get('playlists', {}).get('items', []))
64
  else:
65
  offset = 0
66
  while limit > 0:
67
  params = {'q': query, 'type': 'playlist', 'limit': min(40, limit), 'offset': offset}
68
  response = requests.get(url, headers=headers, params=params)
69
+ token = manejar_limite_de_tasa(response, token)
 
 
 
70
  playlists.extend(response.json().get('playlists', {}).get('items', []))
71
  limit -= min(40, limit)
72
  offset += 40
 
84
 
85
  try:
86
  response = requests.get(url, headers=headers)
87
+ token = manejar_limite_de_tasa(response, token)
 
 
 
88
  if response.status_code == 200:
89
  tracks = response.json().get('items')
90
  for item in tracks:
 
116
  url = f'https://api.spotify.com/v1/audio-features/{track_id}'
117
  headers = {'Authorization': f'Bearer {token}'}
118
  response = requests.get(url, headers=headers)
119
+ token = manejar_limite_de_tasa(response, token)
 
 
 
120
  return response.json() if response.status_code == 200 else {}
121
 
122
  def obtener_record_label_spotify(album_id, token):
123
  url = f'https://api.spotify.com/v1/albums/{album_id}'
124
  headers = {'Authorization': f'Bearer {token}'}
125
  response = requests.get(url, headers=headers)
126
+ token = manejar_limite_de_tasa(response, token)
 
 
 
127
  album_info = response.json() if response.status_code == 200 else {}
128
  return album_info.get('label', 'No disponible')
129