tomaseo2022 commited on
Commit
aaf2b21
·
verified ·
1 Parent(s): 5545b4f

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +23 -32
app.py CHANGED
@@ -15,10 +15,10 @@ import gradio as gr
15
  from time import sleep
16
  from pytrends.request import TrendReq
17
 
18
- # Configurar pytrends
19
  pytrends = TrendReq(hl='es-ES', tz=360)
20
 
21
- # Mapa de códigos de países compatibles para pytrends
22
  paises_codigos = {
23
  "Estados Unidos": "united_states",
24
  "Reino Unido": "united_kingdom",
@@ -38,7 +38,7 @@ def obtener_temas_populares(pais_codigo):
38
  if pais_codigo == "spain":
39
  tendencias = pytrends.top_charts(2023, hl='es-ES', geo='ES')
40
  if not tendencias.empty and "title" in tendencias.columns:
41
- temas_populares = tendencias["title"].tolist()[:15] # Aumentar a 15 temas
42
  else:
43
  temas_populares = ["No se encontraron temas populares para España."]
44
  else:
@@ -49,11 +49,11 @@ def obtener_temas_populares(pais_codigo):
49
 
50
  # Función para obtener el interés de búsqueda de keywords y filtrar por un umbral
51
  def obtener_interes_keyword(keyword):
52
- pytrends.build_payload([keyword], cat=0, timeframe='today 3-m') # Últimos 3 meses
53
  interes = pytrends.interest_over_time()
54
  if not interes.empty:
55
- return interes[keyword].mean() # Promedio del interés en los últimos 3 meses
56
- return 0 # Si no hay datos de interés
57
 
58
  # Función para realizar una búsqueda en Google usando la API de búsqueda personalizada
59
  def buscar_en_google(keyword, api_key, cse_id):
@@ -67,7 +67,7 @@ def buscar_en_google(keyword, api_key, cse_id):
67
  # Función principal para buscar y filtrar keywords con interés mínimo y resultados en redes sociales
68
  def buscar_keywords_redes(api_key, cse_id, pais_codigo, interes_minimo=50):
69
  temas_populares = obtener_temas_populares(pais_codigo)
70
- modificadores = ["ideas", "consejos", "tutorial", "guía", "fotos", "ejemplos", "tendencias", "mejores", "cómo", "estrategia"]
71
  keywords_automaticas = [f"{mod} de {tema}" for tema in temas_populares for mod in modificadores]
72
 
73
  resultados_sociales = []
@@ -89,22 +89,20 @@ def buscar_keywords_redes(api_key, cse_id, pais_codigo, interes_minimo=50):
89
  })
90
  break
91
 
92
- sleep(1) # Pausa para evitar superar el límite de peticiones de la API
93
 
94
- # Convertir a DataFrame y devolver los resultados
95
  df_resultados_sociales = pd.DataFrame(resultados_sociales)
96
  return df_resultados_sociales if not df_resultados_sociales.empty else "No se encontraron keywords con el interés mínimo en redes sociales."
97
 
98
  # Función de Gradio para mostrar los resultados
99
  def gradio_interface(api_key, cse_id, pais, interes_minimo):
 
 
100
  pais_codigo = paises_codigos[pais]
101
- with gr.update() as mensaje_procesando:
102
- mensaje_procesando.set("Procesando...") # Mostrar mensaje de procesamiento
103
  resultados = buscar_keywords_redes(api_key, cse_id, pais_codigo, interes_minimo)
104
- mensaje_procesando.set("") # Limpiar mensaje de procesamiento
105
  return resultados if isinstance(resultados, str) else resultados.to_html(index=False)
106
 
107
- # Instrucciones detalladas para obtener API Key y CSE ID
108
  instrucciones = """
109
  <div style="display: flex;">
110
  <div style="flex: 1; padding-right: 10px;">
@@ -158,24 +156,17 @@ instrucciones = """
158
  """
159
 
160
  # Crear la interfaz de Gradio
161
- with gr.Blocks() as iface:
162
- gr.Markdown("### Búsqueda de Keywords con Resultados de Redes Sociales")
163
- gr.Markdown(instrucciones)
164
-
165
- with gr.Row():
166
- api_key = gr.Textbox(label="Google API Key", placeholder="Ingresa tu API Key de Google")
167
- cse_id = gr.Textbox(label="Custom Search Engine ID (CSE ID)", placeholder="Ingresa tu CSE ID de Google")
168
-
169
- with gr.Row():
170
- pais = gr.Dropdown(label="Selecciona el país", choices=list(paises_codigos.keys()), value="España")
171
- interes_minimo = gr.Slider(label="Interés mínimo (0-100)", minimum=0, maximum=100, step=1, value=50)
172
-
173
- boton = gr.Button("Enviar")
174
- output = gr.HTML()
175
- mensaje_procesando = gr.Textbox(visible=False) # Para mostrar mensaje de procesamiento
176
-
177
- # Conectar el botón al evento de clic y mostrar el mensaje de procesamiento
178
- boton.click(fn=gradio_interface, inputs=[api_key, cse_id, pais, interes_minimo], outputs=[mensaje_procesando, output])
179
 
180
- # Lanzar la interfaz
181
  iface.launch(share=True)
 
15
  from time import sleep
16
  from pytrends.request import TrendReq
17
 
18
+ # Configuración de pytrends
19
  pytrends = TrendReq(hl='es-ES', tz=360)
20
 
21
+ # Mapa de códigos de países compatibles con pytrends
22
  paises_codigos = {
23
  "Estados Unidos": "united_states",
24
  "Reino Unido": "united_kingdom",
 
38
  if pais_codigo == "spain":
39
  tendencias = pytrends.top_charts(2023, hl='es-ES', geo='ES')
40
  if not tendencias.empty and "title" in tendencias.columns:
41
+ temas_populares = tendencias["title"].tolist()[:15]
42
  else:
43
  temas_populares = ["No se encontraron temas populares para España."]
44
  else:
 
49
 
50
  # Función para obtener el interés de búsqueda de keywords y filtrar por un umbral
51
  def obtener_interes_keyword(keyword):
52
+ pytrends.build_payload([keyword], cat=0, timeframe='today 3-m')
53
  interes = pytrends.interest_over_time()
54
  if not interes.empty:
55
+ return interes[keyword].mean()
56
+ return 0
57
 
58
  # Función para realizar una búsqueda en Google usando la API de búsqueda personalizada
59
  def buscar_en_google(keyword, api_key, cse_id):
 
67
  # Función principal para buscar y filtrar keywords con interés mínimo y resultados en redes sociales
68
  def buscar_keywords_redes(api_key, cse_id, pais_codigo, interes_minimo=50):
69
  temas_populares = obtener_temas_populares(pais_codigo)
70
+ modificadores = ["ideas", "consejos", "tutorial", "guía", "fotos", "ejemplos", "tendencias", "mejores"]
71
  keywords_automaticas = [f"{mod} de {tema}" for tema in temas_populares for mod in modificadores]
72
 
73
  resultados_sociales = []
 
89
  })
90
  break
91
 
92
+ sleep(1)
93
 
 
94
  df_resultados_sociales = pd.DataFrame(resultados_sociales)
95
  return df_resultados_sociales if not df_resultados_sociales.empty else "No se encontraron keywords con el interés mínimo en redes sociales."
96
 
97
  # Función de Gradio para mostrar los resultados
98
  def gradio_interface(api_key, cse_id, pais, interes_minimo):
99
+ with gr.Row() as fila:
100
+ gr.Markdown("### Procesando... Por favor, espera unos segundos.")
101
  pais_codigo = paises_codigos[pais]
 
 
102
  resultados = buscar_keywords_redes(api_key, cse_id, pais_codigo, interes_minimo)
 
103
  return resultados if isinstance(resultados, str) else resultados.to_html(index=False)
104
 
105
+ # Instrucciones detalladas para los usuarios
106
  instrucciones = """
107
  <div style="display: flex;">
108
  <div style="flex: 1; padding-right: 10px;">
 
156
  """
157
 
158
  # Crear la interfaz de Gradio
159
+ iface = gr.Interface(
160
+ fn=gradio_interface,
161
+ inputs=[
162
+ gr.Textbox(label="Google API Key", placeholder="Ingresa tu API Key de Google"),
163
+ gr.Textbox(label="Custom Search Engine ID (CSE ID)", placeholder="Ingresa tu CSE ID de Google"),
164
+ gr.Dropdown(label="Selecciona el país", choices=list(paises_codigos.keys()), value="España"),
165
+ gr.Slider(label="Interés mínimo (0-100)", minimum=0, maximum=100, step=1, value=50)
166
+ ],
167
+ outputs="html",
168
+ title="Búsqueda de Keywords con Resultados de Redes Sociales",
169
+ description=("Esta herramienta busca keywords para las que Google muestra resultados de redes sociales (Pinterest, Facebook, X) debido a la falta de contenido web especializado.\n\n" + instrucciones),
170
+ )
 
 
 
 
 
 
171
 
 
172
  iface.launch(share=True)