tx3bas commited on
Commit
cfbd1f3
·
verified ·
1 Parent(s): 3d16f93

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +54 -38
app.py CHANGED
@@ -10,6 +10,20 @@ import unicodedata
10
  def normalize_keyword(keyword):
11
  return ''.join(c for c in unicodedata.normalize('NFD', keyword.lower()) if unicodedata.category(c) != 'Mn')
12
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
13
  # Función para obtener sugerencias de Brave
14
  def fetch_brave_suggestions(query, lang_code="es"):
15
  encoded_query = urllib.parse.quote(query)
@@ -63,20 +77,6 @@ def fetch_duckduckgo_suggestions(query, lang_code="es"):
63
  else:
64
  return []
65
 
66
- # Función para obtener sugerencias de Google
67
- def fetch_google_suggestions(query, lang_code="es"):
68
- encoded_query = urllib.parse.quote(query)
69
- url = f"http://suggestqueries.google.com/complete/search?client=firefox&hl={lang_code}&q={encoded_query}"
70
- response = requests.get(url)
71
- if response.status_code == 200:
72
- try:
73
- return [normalize_keyword(suggestion) for suggestion in response.json()[1]]
74
- except ValueError:
75
- print("Error decodificando JSON de Google")
76
- return []
77
- else:
78
- return []
79
-
80
  # Función para obtener sugerencias de YouTube usando la API anterior
81
  def fetch_youtube_suggestions(query, lang_code="es"):
82
  encoded_query = urllib.parse.quote(query)
@@ -177,19 +177,25 @@ def main(keyword):
177
  qwant_suggestions_all = []
178
  brave_suggestions_all = []
179
 
 
 
 
 
 
 
 
 
 
 
 
180
  # Obtener sugerencias de DuckDuckGo
181
  for exp_keyword in expanded_keywords:
182
  suggestions = fetch_duckduckgo_suggestions(exp_keyword)
183
  duckduckgo_suggestions_all.extend(suggestions)
184
  for suggestion in suggestions:
185
- all_suggestions.setdefault(suggestion, set()).add('DuckDuckGo')
186
-
187
- # Obtener sugerencias de Google
188
- for exp_keyword in expanded_keywords:
189
- suggestions = fetch_google_suggestions(exp_keyword)
190
- google_suggestions_all.extend(suggestions)
191
- for suggestion in suggestions:
192
- all_suggestions.setdefault(suggestion, set()).add('Google')
193
 
194
  # Obtener sugerencias de YouTube (API anterior y nueva)
195
  for exp_keyword in expanded_keywords:
@@ -198,35 +204,48 @@ def main(keyword):
198
  new_suggestions = fetch_youtube_suggestions_new(exp_keyword)
199
  youtube_suggestions_all.extend(new_suggestions)
200
  for suggestion in suggestions + new_suggestions:
201
- all_suggestions.setdefault(suggestion, set()).add('YouTube')
 
 
202
 
203
  # Obtener sugerencias de Bing
204
  for exp_keyword in expanded_keywords:
205
  suggestions = fetch_bing_suggestions(exp_keyword)
206
  bing_suggestions_all.extend(suggestions)
207
  for suggestion in suggestions:
208
- all_suggestions.setdefault(suggestion, set()).add('Bing')
 
 
209
 
210
  # Obtener sugerencias de Amazon
211
  for exp_keyword in expanded_keywords:
212
  suggestions = fetch_amazon_suggestions(exp_keyword)
213
  amazon_suggestions_all.extend(suggestions)
214
  for suggestion in suggestions:
215
- all_suggestions.setdefault(suggestion, set()).add('Amazon')
 
 
216
 
217
  # Obtener sugerencias de Qwant
218
  for exp_keyword in expanded_keywords:
219
  suggestions = fetch_qwant_suggestions(exp_keyword)
220
  qwant_suggestions_all.extend(suggestions)
221
  for suggestion in suggestions:
222
- all_suggestions.setdefault(suggestion, set()).add('Qwant')
 
 
223
 
224
  # Obtener sugerencias de Brave
225
  for exp_keyword in expanded_keywords:
226
  suggestions = fetch_brave_suggestions(exp_keyword)
227
  brave_suggestions_all.extend(suggestions)
228
  for suggestion in suggestions:
229
- all_suggestions.setdefault(suggestion, set()).add('Brave')
 
 
 
 
 
230
 
231
  # Obtener las top 3 de cada plataforma
232
  google_top_3 = get_top_suggestions(google_suggestions_all, top_n=3)
@@ -237,21 +256,18 @@ def main(keyword):
237
  qwant_top_3 = get_top_suggestions(qwant_suggestions_all, top_n=3)
238
  brave_top_3 = get_top_suggestions(brave_suggestions_all, top_n=3)
239
 
240
- # Obtener el top 10 combinado basado en el número de buscadores que mencionaron una palabra clave
241
- combined_top_10 = sorted(all_suggestions.items(), key=lambda item: len(item[1]), reverse=True)[:10]
242
-
243
- # Crear una tabla con todas las sugerencias y el número de buscadores en los que aparecen
244
- all_suggestions_str = "<table><tr><th>Keyword</th><th>Buscadores</th></tr>"
245
- for suggestion, platforms in sorted(all_suggestions.items(), key=lambda item: len(item[1]), reverse=True):
246
- all_suggestions_str += f"<tr><td>{suggestion}</td><td>{', '.join(platforms)}</td></tr>"
247
  all_suggestions_str += "</table>"
248
 
249
  # Crear el HTML de salida
250
  html_output = f"""
251
  <div>
252
- <h3>Top 10 combinadas (basado en la cantidad de buscadores):</h3>
253
  <ul>
254
- {''.join([f'<li>{sug} (aparece en {len(platforms)} buscadores)</li>' for sug, platforms in combined_top_10])}
255
  </ul>
256
 
257
  <h4>Top 3 Sugerencias de Google:</h4>
@@ -289,7 +305,7 @@ def main(keyword):
289
  {''.join([f'<li>{sug} ({freq})</li>' for sug, freq in brave_top_3])}
290
  </ul>
291
 
292
- <h4>Tabla completa de palabras clave y en cuántos buscadores aparecen:</h4>
293
  {all_suggestions_str}
294
  </div>
295
  """
@@ -302,7 +318,7 @@ iface = gr.Interface(
302
  inputs="text",
303
  outputs=gr.HTML(),
304
  title="Sugerencias Combinadas de Múltiples Motores de Búsqueda",
305
- description="Ingrese una palabra clave para obtener sugerencias de búsqueda relacionadas de Google, DuckDuckGo, YouTube, Bing, Amazon, Qwant y Brave.",
306
  )
307
 
308
  iface.launch()
 
10
  def normalize_keyword(keyword):
11
  return ''.join(c for c in unicodedata.normalize('NFD', keyword.lower()) if unicodedata.category(c) != 'Mn')
12
 
13
+ # Función para obtener sugerencias de Google con un client específico (firefox o chrome)
14
+ def fetch_google_suggestions(query, lang_code="es", client="firefox"):
15
+ encoded_query = urllib.parse.quote(query)
16
+ url = f"http://suggestqueries.google.com/complete/search?client={client}&hl={lang_code}&q={encoded_query}"
17
+ response = requests.get(url)
18
+ if response.status_code == 200:
19
+ try:
20
+ return [normalize_keyword(suggestion) for suggestion in response.json()[1]]
21
+ except ValueError:
22
+ print("Error decodificando JSON de Google")
23
+ return []
24
+ else:
25
+ return []
26
+
27
  # Función para obtener sugerencias de Brave
28
  def fetch_brave_suggestions(query, lang_code="es"):
29
  encoded_query = urllib.parse.quote(query)
 
77
  else:
78
  return []
79
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
80
  # Función para obtener sugerencias de YouTube usando la API anterior
81
  def fetch_youtube_suggestions(query, lang_code="es"):
82
  encoded_query = urllib.parse.quote(query)
 
177
  qwant_suggestions_all = []
178
  brave_suggestions_all = []
179
 
180
+ # Obtener sugerencias de Google con dos clients (firefox y chrome)
181
+ for exp_keyword in expanded_keywords:
182
+ google_firefox_suggestions = fetch_google_suggestions(exp_keyword, client="firefox")
183
+ google_chrome_suggestions = fetch_google_suggestions(exp_keyword, client="chrome")
184
+ combined_google_suggestions = google_firefox_suggestions + google_chrome_suggestions
185
+ google_suggestions_all.extend(combined_google_suggestions)
186
+ for suggestion in combined_google_suggestions:
187
+ all_suggestions.setdefault(suggestion, {"count": 0, "sources": set()})
188
+ all_suggestions[suggestion]["count"] += 1
189
+ all_suggestions[suggestion]["sources"].add('Google')
190
+
191
  # Obtener sugerencias de DuckDuckGo
192
  for exp_keyword in expanded_keywords:
193
  suggestions = fetch_duckduckgo_suggestions(exp_keyword)
194
  duckduckgo_suggestions_all.extend(suggestions)
195
  for suggestion in suggestions:
196
+ all_suggestions.setdefault(suggestion, {"count": 0, "sources": set()})
197
+ all_suggestions[suggestion]["count"] += 1
198
+ all_suggestions[suggestion]["sources"].add('DuckDuckGo')
 
 
 
 
 
199
 
200
  # Obtener sugerencias de YouTube (API anterior y nueva)
201
  for exp_keyword in expanded_keywords:
 
204
  new_suggestions = fetch_youtube_suggestions_new(exp_keyword)
205
  youtube_suggestions_all.extend(new_suggestions)
206
  for suggestion in suggestions + new_suggestions:
207
+ all_suggestions.setdefault(suggestion, {"count": 0, "sources": set()})
208
+ all_suggestions[suggestion]["count"] += 1
209
+ all_suggestions[suggestion]["sources"].add('YouTube')
210
 
211
  # Obtener sugerencias de Bing
212
  for exp_keyword in expanded_keywords:
213
  suggestions = fetch_bing_suggestions(exp_keyword)
214
  bing_suggestions_all.extend(suggestions)
215
  for suggestion in suggestions:
216
+ all_suggestions.setdefault(suggestion, {"count": 0, "sources": set()})
217
+ all_suggestions[suggestion]["count"] += 1
218
+ all_suggestions[suggestion]["sources"].add('Bing')
219
 
220
  # Obtener sugerencias de Amazon
221
  for exp_keyword in expanded_keywords:
222
  suggestions = fetch_amazon_suggestions(exp_keyword)
223
  amazon_suggestions_all.extend(suggestions)
224
  for suggestion in suggestions:
225
+ all_suggestions.setdefault(suggestion, {"count": 0, "sources": set()})
226
+ all_suggestions[suggestion]["count"] += 1
227
+ all_suggestions[suggestion]["sources"].add('Amazon')
228
 
229
  # Obtener sugerencias de Qwant
230
  for exp_keyword in expanded_keywords:
231
  suggestions = fetch_qwant_suggestions(exp_keyword)
232
  qwant_suggestions_all.extend(suggestions)
233
  for suggestion in suggestions:
234
+ all_suggestions.setdefault(suggestion, {"count": 0, "sources": set()})
235
+ all_suggestions[suggestion]["count"] += 1
236
+ all_suggestions[suggestion]["sources"].add('Qwant')
237
 
238
  # Obtener sugerencias de Brave
239
  for exp_keyword in expanded_keywords:
240
  suggestions = fetch_brave_suggestions(exp_keyword)
241
  brave_suggestions_all.extend(suggestions)
242
  for suggestion in suggestions:
243
+ all_suggestions.setdefault(suggestion, {"count": 0, "sources": set()})
244
+ all_suggestions[suggestion]["count"] += 1
245
+ all_suggestions[suggestion]["sources"].add('Brave')
246
+
247
+ # Calcular relevancia combinada: basándonos en cuántos buscadores mencionan una palabra y cuántas veces se repite
248
+ combined_suggestions = sorted(all_suggestions.items(), key=lambda item: (len(item[1]["sources"]), item[1]["count"]), reverse=True)
249
 
250
  # Obtener las top 3 de cada plataforma
251
  google_top_3 = get_top_suggestions(google_suggestions_all, top_n=3)
 
256
  qwant_top_3 = get_top_suggestions(qwant_suggestions_all, top_n=3)
257
  brave_top_3 = get_top_suggestions(brave_suggestions_all, top_n=3)
258
 
259
+ # Crear una tabla con todas las sugerencias, su relevancia y el número de buscadores
260
+ all_suggestions_str = "<table><tr><th>Keyword</th><th>Buscadores</th><th>Relevancia (Total)</th></tr>"
261
+ for suggestion, data in combined_suggestions:
262
+ all_suggestions_str += f"<tr><td>{suggestion}</td><td>{', '.join(data['sources'])}</td><td>{data['count']}</td></tr>"
 
 
 
263
  all_suggestions_str += "</table>"
264
 
265
  # Crear el HTML de salida
266
  html_output = f"""
267
  <div>
268
+ <h3>Top 10 combinadas (basado en la cantidad de buscadores y repeticiones):</h3>
269
  <ul>
270
+ {''.join([f'<li>{sug} (en {len(data["sources"])} buscadores, {data["count"]} repeticiones)</li>' for sug, data in combined_suggestions[:10]])}
271
  </ul>
272
 
273
  <h4>Top 3 Sugerencias de Google:</h4>
 
305
  {''.join([f'<li>{sug} ({freq})</li>' for sug, freq in brave_top_3])}
306
  </ul>
307
 
308
+ <h4>Tabla completa de palabras clave y su relevancia:</h4>
309
  {all_suggestions_str}
310
  </div>
311
  """
 
318
  inputs="text",
319
  outputs=gr.HTML(),
320
  title="Sugerencias Combinadas de Múltiples Motores de Búsqueda",
321
+ description="Ingrese una palabra clave para obtener sugerencias de búsqueda relacionadas de Google (Firefox y Chrome), DuckDuckGo, YouTube, Bing, Amazon, Qwant y Brave.",
322
  )
323
 
324
  iface.launch()