Spaces:
Sleeping
Sleeping
Create app.py
Browse files
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()
|