tx3bas commited on
Commit
40ee9ec
·
verified ·
1 Parent(s): c2901ed

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +22 -21
app.py CHANGED
@@ -30,12 +30,19 @@ def buscar_google(query, hl='es', num_results=10):
30
 
31
  return serp_data
32
 
33
- def calcular_coincidencias(serps):
34
- urls = [set(entry["URL"] for entry in serp) for serp in serps]
35
- common_urls = set.intersection(*urls)
36
- return common_urls
 
 
 
 
37
 
38
- def generar_html_con_colores(serp_results, common_urls, color_palette):
 
 
 
39
  html_table = "<style>td, th {border: 1px solid #ddd; text-align: left; padding: 8px;} tr:nth-child(even) {background-color: #f2f2f2;} th {padding-top: 11px; padding-bottom: 11px; background-color: #4CAF50; color: white;}</style>"
40
  html_table += "<table><tr><th>Posición</th>"
41
 
@@ -52,8 +59,8 @@ def generar_html_con_colores(serp_results, common_urls, color_palette):
52
  if i < len(serp_results[keyword]):
53
  entry = serp_results[keyword][i]
54
  url = entry["URL"]
55
- if url in common_urls:
56
- color = color_palette[0] # Use a specific color for common URLs
57
  display_url = f"<a href='{url}' target='_blank' style='color:{color};'>{url}</a>"
58
  else:
59
  display_url = f"<a href='{url}' target='_blank'>{url}</a>"
@@ -67,27 +74,21 @@ def generar_html_con_colores(serp_results, common_urls, color_palette):
67
  def analyze_keywords(keywords):
68
  keywords_list = [keyword.strip() for keyword in keywords.split(',')]
69
  serp_results = {keyword: buscar_google(keyword) for keyword in keywords_list}
70
- serps = list(serp_results.values())
71
- common_urls = calcular_coincidencias(serps)
72
 
73
- html_table = generar_html_con_colores(serp_results, common_urls, color_palette)
74
-
75
- # Calcular y mostrar porcentajes de coincidencia
76
- coincidencias_info = ""
77
- for combo in combinations(keywords_list, 2):
78
- serp1, serp2 = serp_results[combo[0]], serp_results[combo[1]]
79
- coincidencias = calcular_coincidencias([serp1, serp2])
80
- porcentaje = round(len(coincidencias) / min(len(serp1), len(serp2)) * 100, 2)
81
- coincidencias_info += f"Coincidencia entre '{combo[0]}' y '{combo[1]}': {porcentaje}%<br>"
82
 
83
- return html_table, coincidencias_info
84
 
85
  iface = gr.Interface(
86
  fn=analyze_keywords,
87
  inputs="text",
88
- outputs=["html", "html"],
89
  title="Comparador de Keywords en Google",
90
- description="Introduce las keywords separadas por comas para encontrar coincidencias en los resultados de búsqueda de Google y calcular el porcentaje de similaridad entre ellos. Las URLs comunes se resaltarán en color."
91
  )
92
 
93
  iface.launch()
 
30
 
31
  return serp_data
32
 
33
+ def identificar_urls_comunes(serps):
34
+ # Extraer todas las URLs de todas las búsquedas
35
+ all_urls = [url for serp in serps for url in serp]
36
+
37
+ # Identificar URLs que aparecen en más de una búsqueda
38
+ urls_comunes = {url for url in all_urls if all_urls.count(url) > 1}
39
+
40
+ return urls_comunes
41
 
42
+ def generar_html_con_colores(serp_results, urls_comunes):
43
+ # Asignar un color único a cada URL común
44
+ url_color_map = {url: color_palette[i % len(color_palette)] for i, url in enumerate(urls_comunes)}
45
+
46
  html_table = "<style>td, th {border: 1px solid #ddd; text-align: left; padding: 8px;} tr:nth-child(even) {background-color: #f2f2f2;} th {padding-top: 11px; padding-bottom: 11px; background-color: #4CAF50; color: white;}</style>"
47
  html_table += "<table><tr><th>Posición</th>"
48
 
 
59
  if i < len(serp_results[keyword]):
60
  entry = serp_results[keyword][i]
61
  url = entry["URL"]
62
+ if url in urls_comunes:
63
+ color = url_color_map[url]
64
  display_url = f"<a href='{url}' target='_blank' style='color:{color};'>{url}</a>"
65
  else:
66
  display_url = f"<a href='{url}' target='_blank'>{url}</a>"
 
74
  def analyze_keywords(keywords):
75
  keywords_list = [keyword.strip() for keyword in keywords.split(',')]
76
  serp_results = {keyword: buscar_google(keyword) for keyword in keywords_list}
 
 
77
 
78
+ # Extraer solo las URLs de cada búsqueda para identificar comunes
79
+ urls_por_keyword = [[entry["URL"] for entry in serp] for serp in serp_results.values()]
80
+ urls_comunes = identificar_urls_comunes(urls_por_keyword)
81
+
82
+ html_table = generar_html_con_colores(serp_results, urls_comunes)
 
 
 
 
83
 
84
+ return html_table
85
 
86
  iface = gr.Interface(
87
  fn=analyze_keywords,
88
  inputs="text",
89
+ outputs="html",
90
  title="Comparador de Keywords en Google",
91
+ description="Introduce las keywords separadas por comas para encontrar coincidencias en los resultados de búsqueda de Google. Las URLs comunes entre las búsquedas se resaltarán en colores únicos."
92
  )
93
 
94
  iface.launch()