Mthrfkr commited on
Commit
d8c9978
verified
1 Parent(s): 8ebf3ae

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +6 -21
app.py CHANGED
@@ -2,6 +2,7 @@ import gradio as gr
2
  import requests
3
  import pandas as pd
4
  from tempfile import NamedTemporaryFile
 
5
  import shutil
6
 
7
  # Funciones para Spotify
@@ -34,7 +35,7 @@ def buscar_playlists_spotify(token, query, limit=50):
34
 
35
  return [{'playlist_id': playlist['id'], 'playlist_name': playlist['name']} for playlist in playlists]
36
 
37
- def obtener_canciones_playlist_spotify(token, playlist_id, playlist_name):
38
  print(f"Obteniendo canciones de la playlist {playlist_id} de Spotify...")
39
  url = f'https://api.spotify.com/v1/playlists/{playlist_id}/tracks'
40
  headers = {'Authorization': f'Bearer {token}'}
@@ -45,10 +46,8 @@ def obtener_canciones_playlist_spotify(token, playlist_id, playlist_name):
45
  for item in tracks:
46
  track = item.get('track')
47
  if track:
48
- artista_info = obtener_info_artista(track['artists'][0]['id'], token) if track['artists'] else {}
49
  audio_features = obtener_caracteristicas_audio(token, track['id'])
50
  canciones.append({
51
- 'playlist_name': playlist_name,
52
  'artista': track['artists'][0]['name'] if track['artists'] else 'Desconocido',
53
  'titulo': track['name'],
54
  'isrc': track['external_ids'].get('isrc', 'No disponible'),
@@ -61,8 +60,7 @@ def obtener_canciones_playlist_spotify(token, playlist_id, playlist_name):
61
  'instrumentalness': audio_features.get('instrumentalness', 'No disponible'),
62
  'link': track['external_urls']['spotify'],
63
  'record_label': obtener_record_label_spotify(track['album']['id'], token),
64
- 'source': 'Spotify',
65
- 'genero_artista': ', '.join(artista_info.get('genres', []))
66
  })
67
  return canciones
68
 
@@ -70,11 +68,7 @@ def obtener_caracteristicas_audio(token, track_id):
70
  url = f'https://api.spotify.com/v1/audio-features/{track_id}'
71
  headers = {'Authorization': f'Bearer {token}'}
72
  response = requests.get(url, headers=headers)
73
- if response.status_code == 200:
74
- return response.json()
75
- else:
76
- print(f"No se pudieron obtener las caracter铆sticas de audio para la pista {track_id}")
77
- return {}
78
 
79
  def obtener_record_label_spotify(album_id, token):
80
  url = f'https://api.spotify.com/v1/albums/{album_id}'
@@ -83,15 +77,6 @@ def obtener_record_label_spotify(album_id, token):
83
  album_info = response.json() if response.status_code == 200 else {}
84
  return album_info.get('label', 'No disponible')
85
 
86
- def obtener_info_artista(artista_id, token):
87
- url = f'https://api.spotify.com/v1/artists/{artista_id}'
88
- headers = {'Authorization': f'Bearer {token}'}
89
- response = requests.get(url, headers=headers)
90
- artista_info = response.json() if response.status_code == 200 else {}
91
- return {
92
- 'genres': artista_info.get('genres', [])
93
- }
94
-
95
  # Funci贸n principal de la interfaz
96
  def interface(query, num_spotify_playlists=50, project_name="Proyecto"):
97
  # Obtener tokens y claves
@@ -103,7 +88,7 @@ def interface(query, num_spotify_playlists=50, project_name="Proyecto"):
103
  playlists_spotify = buscar_playlists_spotify(token_spotify, query, num_spotify_playlists)
104
  canciones_spotify = []
105
  for playlist in playlists_spotify:
106
- songs = obtener_canciones_playlist_spotify(token_spotify, playlist['playlist_id'], playlist['playlist_name'])
107
  canciones_spotify.extend(songs)
108
 
109
  # Crear DataFrame
@@ -129,6 +114,6 @@ iface = gr.Interface(
129
  ],
130
  outputs=[gr.Dataframe(), gr.File(label="Descargar Excel")],
131
  title="Busca Playlists con Keywords",
132
- description="Ingresa tu b煤squeda para encontrar playlists en Spotify con esas palabras en sus t铆tulos."
133
  )
134
  iface.launch()
 
2
  import requests
3
  import pandas as pd
4
  from tempfile import NamedTemporaryFile
5
+ from openpyxl import Workbook
6
  import shutil
7
 
8
  # Funciones para Spotify
 
35
 
36
  return [{'playlist_id': playlist['id'], 'playlist_name': playlist['name']} for playlist in playlists]
37
 
38
+ def obtener_canciones_playlist_spotify(token, playlist_id):
39
  print(f"Obteniendo canciones de la playlist {playlist_id} de Spotify...")
40
  url = f'https://api.spotify.com/v1/playlists/{playlist_id}/tracks'
41
  headers = {'Authorization': f'Bearer {token}'}
 
46
  for item in tracks:
47
  track = item.get('track')
48
  if track:
 
49
  audio_features = obtener_caracteristicas_audio(token, track['id'])
50
  canciones.append({
 
51
  'artista': track['artists'][0]['name'] if track['artists'] else 'Desconocido',
52
  'titulo': track['name'],
53
  'isrc': track['external_ids'].get('isrc', 'No disponible'),
 
60
  'instrumentalness': audio_features.get('instrumentalness', 'No disponible'),
61
  'link': track['external_urls']['spotify'],
62
  'record_label': obtener_record_label_spotify(track['album']['id'], token),
63
+ 'source': 'Spotify'
 
64
  })
65
  return canciones
66
 
 
68
  url = f'https://api.spotify.com/v1/audio-features/{track_id}'
69
  headers = {'Authorization': f'Bearer {token}'}
70
  response = requests.get(url, headers=headers)
71
+ return response.json() if response.status_code == 200 else {}
 
 
 
 
72
 
73
  def obtener_record_label_spotify(album_id, token):
74
  url = f'https://api.spotify.com/v1/albums/{album_id}'
 
77
  album_info = response.json() if response.status_code == 200 else {}
78
  return album_info.get('label', 'No disponible')
79
 
 
 
 
 
 
 
 
 
 
80
  # Funci贸n principal de la interfaz
81
  def interface(query, num_spotify_playlists=50, project_name="Proyecto"):
82
  # Obtener tokens y claves
 
88
  playlists_spotify = buscar_playlists_spotify(token_spotify, query, num_spotify_playlists)
89
  canciones_spotify = []
90
  for playlist in playlists_spotify:
91
+ songs = obtener_canciones_playlist_spotify(token_spotify, playlist['playlist_id'])
92
  canciones_spotify.extend(songs)
93
 
94
  # Crear DataFrame
 
114
  ],
115
  outputs=[gr.Dataframe(), gr.File(label="Descargar Excel")],
116
  title="Busca Playlists con Keywords",
117
+ description="Ingresa tu busqueda para encontrar playlists en Spotify con esas palabras en sus titulos."
118
  )
119
  iface.launch()