tomaseo2022 commited on
Commit
d63e084
verified
1 Parent(s): 4fa6c4b

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +59 -0
app.py ADDED
@@ -0,0 +1,59 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import requests
2
+ import pandas as pd
3
+ import gradio as gr
4
+ from itertools import product
5
+ from time import sleep
6
+
7
+ # Funci贸n para realizar una b煤squeda en Google Custom Search usando claves proporcionadas por el usuario
8
+ def buscar_en_google(query, api_key, cse_id):
9
+ url = f"https://www.googleapis.com/customsearch/v1?q={query}&key={api_key}&cx={cse_id}"
10
+ response = requests.get(url)
11
+ return response.json() if response.status_code == 200 else None
12
+
13
+ # Funci贸n principal para buscar y filtrar keywords con resultados de redes sociales
14
+ def buscar_keywords_redes(api_key, cse_id):
15
+ temas = ["decoraci贸n", "moda", "comida", "manualidades", "fotograf铆a"]
16
+ modificadores = ["ideas", "consejos", "tutorial", "gu铆a", "fotos"]
17
+ keywords_automaticas = [f"{mod} de {tema}" for mod, tema in product(modificadores, temas)]
18
+
19
+ resultados_sociales = []
20
+
21
+ for keyword in keywords_automaticas:
22
+ data = buscar_en_google(keyword, api_key, cse_id)
23
+
24
+ if data:
25
+ for item in data.get('items', []):
26
+ link = item['link']
27
+ if any(dominio in link for dominio in ["pinterest.com", "facebook.com", "x.com"]):
28
+ resultados_sociales.append({
29
+ 'Keyword': keyword,
30
+ 'Enlace': link,
31
+ 'T铆tulo': item['title']
32
+ })
33
+ break
34
+
35
+ sleep(1) # Pausa para evitar superar el l铆mite de peticiones de la API
36
+
37
+ # Convertir a DataFrame y devolver los resultados
38
+ df_resultados_sociales = pd.DataFrame(resultados_sociales)
39
+ return df_resultados_sociales if not df_resultados_sociales.empty else "No se encontraron keywords con resultados de redes sociales."
40
+
41
+ # Funci贸n de Gradio para mostrar los resultados
42
+ def gradio_interface(api_key, cse_id):
43
+ resultados = buscar_keywords_redes(api_key, cse_id)
44
+ return resultados if isinstance(resultados, str) else resultados.to_html(index=False)
45
+
46
+ # Crear la interfaz de Gradio con campos para API Key y CSE ID
47
+ iface = gr.Interface(
48
+ fn=gradio_interface,
49
+ inputs=[
50
+ gr.Textbox(label="Google API Key", placeholder="Ingresa tu API Key de Google"),
51
+ gr.Textbox(label="Custom Search Engine ID (CSE ID)", placeholder="Ingresa tu CSE ID de Google")
52
+ ],
53
+ outputs="html",
54
+ title="B煤squeda de Keywords con Resultados de Redes Sociales",
55
+ 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."
56
+ )
57
+
58
+ # Ejecuta la interfaz en Hugging Face Spaces
59
+ iface.launch()