tx3bas commited on
Commit
9d0475e
verified
1 Parent(s): 8294e97

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +116 -9
app.py CHANGED
@@ -24,7 +24,7 @@ def fetch_google_suggestions(query, lang_code="es", client="firefox"):
24
  else:
25
  return []
26
 
27
- # Funci贸n para obtener sugerencias de Brave (se reduce en un 65% el impacto)
28
  def fetch_brave_suggestions(query, lang_code="es"):
29
  encoded_query = urllib.parse.quote(query)
30
  url = f"https://search.brave.com/api/suggest?q={encoded_query}"
@@ -34,7 +34,7 @@ def fetch_brave_suggestions(query, lang_code="es"):
34
  data = response.json()
35
  if len(data) > 1 and isinstance(data[1], list):
36
  # Reducir repeticiones en un 65%
37
- return [normalize_keyword(item) for item in data[1] for _ in range(int(0.35 * 5))] # 65% menos
38
  else:
39
  print("No se encontraron sugerencias en el formato esperado (Brave).")
40
  return []
@@ -44,7 +44,114 @@ def fetch_brave_suggestions(query, lang_code="es"):
44
  else:
45
  return []
46
 
47
- # Otras funciones como Qwant, DuckDuckGo, YouTube, Bing, Amazon se mantienen igual (omitidas aqu铆 por brevedad)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
48
 
49
  # Funci贸n para expandir la palabra clave
50
  def expand_keyword(keyword):
@@ -87,7 +194,7 @@ def main(keyword):
87
  for suggestion, count in google_combined.items():
88
  all_suggestions[suggestion]["count"] += count
89
 
90
- # Obtener sugerencias de DuckDuckGo (se mantiene sin cambios)
91
  for exp_keyword in expanded_keywords:
92
  suggestions = fetch_duckduckgo_suggestions(exp_keyword)
93
  duckduckgo_suggestions_all.extend(suggestions)
@@ -96,7 +203,7 @@ def main(keyword):
96
  all_suggestions[suggestion]["count"] += 1
97
  all_suggestions[suggestion]["sources"].add('DuckDuckGo')
98
 
99
- # Obtener sugerencias de YouTube (API anterior y nueva) (sin cambios)
100
  for exp_keyword in expanded_keywords:
101
  suggestions = fetch_youtube_suggestions(exp_keyword)
102
  youtube_suggestions_all.extend(suggestions)
@@ -107,7 +214,7 @@ def main(keyword):
107
  all_suggestions[suggestion]["count"] += 1
108
  all_suggestions[suggestion]["sources"].add('YouTube')
109
 
110
- # Obtener sugerencias de Bing (se mantiene sin cambios)
111
  for exp_keyword in expanded_keywords:
112
  suggestions = fetch_bing_suggestions(exp_keyword)
113
  bing_suggestions_all.extend(suggestions)
@@ -116,7 +223,7 @@ def main(keyword):
116
  all_suggestions[suggestion]["count"] += 1
117
  all_suggestions[suggestion]["sources"].add('Bing')
118
 
119
- # Obtener sugerencias de Amazon (se mantiene sin cambios)
120
  for exp_keyword in expanded_keywords:
121
  suggestions = fetch_amazon_suggestions(exp_keyword)
122
  amazon_suggestions_all.extend(suggestions)
@@ -125,7 +232,7 @@ def main(keyword):
125
  all_suggestions[suggestion]["count"] += 1
126
  all_suggestions[suggestion]["sources"].add('Amazon')
127
 
128
- # Obtener sugerencias de Qwant (se mantiene sin cambios)
129
  for exp_keyword in expanded_keywords:
130
  suggestions = fetch_qwant_suggestions(exp_keyword)
131
  qwant_suggestions_all.extend(suggestions)
@@ -134,7 +241,7 @@ def main(keyword):
134
  all_suggestions[suggestion]["count"] += 1
135
  all_suggestions[suggestion]["sources"].add('Qwant')
136
 
137
- # Obtener sugerencias de Brave (reducidas en un 65%)
138
  for exp_keyword in expanded_keywords:
139
  suggestions = fetch_brave_suggestions(exp_keyword)
140
  brave_suggestions_all.extend(suggestions)
 
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)
30
  url = f"https://search.brave.com/api/suggest?q={encoded_query}"
 
34
  data = response.json()
35
  if len(data) > 1 and isinstance(data[1], list):
36
  # Reducir repeticiones en un 65%
37
+ return [normalize_keyword(item) for item in data[1] for _ in range(int(0.35 * 5))]
38
  else:
39
  print("No se encontraron sugerencias en el formato esperado (Brave).")
40
  return []
 
44
  else:
45
  return []
46
 
47
+ # Funci贸n para obtener sugerencias de Qwant
48
+ def fetch_qwant_suggestions(query, lang_code="es"):
49
+ encoded_query = urllib.parse.quote(query)
50
+ url = f"https://api.qwant.com/api/suggest/?client=opensearch&q={encoded_query}"
51
+ response = requests.get(url)
52
+ if response.status_code == 200:
53
+ try:
54
+ data = response.json()
55
+ if len(data) > 1 and isinstance(data[1], list):
56
+ return [normalize_keyword(item) for item in data[1]]
57
+ else:
58
+ print("No se encontraron sugerencias en el formato esperado (Qwant).")
59
+ return []
60
+ except ValueError:
61
+ print("Error decodificando JSON de Qwant")
62
+ return []
63
+ else:
64
+ return []
65
+
66
+ # Funci贸n para obtener sugerencias de DuckDuckGo
67
+ def fetch_duckduckgo_suggestions(query, lang_code="es"):
68
+ encoded_query = urllib.parse.quote(query)
69
+ url = f"https://duckduckgo.com/ac/?q={encoded_query}&kl={lang_code}"
70
+ response = requests.get(url)
71
+ if response.status_code == 200:
72
+ try:
73
+ data = response.json()
74
+ return [normalize_keyword(item['phrase']) for item in data]
75
+ except ValueError:
76
+ print("Error decodificando JSON de DuckDuckGo")
77
+ return []
78
+ else:
79
+ return []
80
+
81
+ # Funci贸n para obtener sugerencias de YouTube usando la API anterior
82
+ def fetch_youtube_suggestions(query, lang_code="es"):
83
+ encoded_query = urllib.parse.quote(query)
84
+ url = f"http://suggestqueries.google.com/complete/search?client=youtube&hl={lang_code}&q={encoded_query}"
85
+ response = requests.get(url)
86
+ if response.status_code == 200:
87
+ try:
88
+ match = re.search(r'window\.google\.ac\.h\(\["[^"]*",\[(.*?)\],', response.text)
89
+ if match:
90
+ suggestions_data = match.group(1)
91
+ return [normalize_keyword(suggestion) for suggestion in re.findall(r'\["([^"]+)"', suggestions_data)]
92
+ else:
93
+ print("No se encontraron sugerencias en el formato esperado (YouTube antiguo).")
94
+ return []
95
+ except Exception as e:
96
+ print(f"Error procesando la respuesta de YouTube (antiguo): {e}")
97
+ return []
98
+ else:
99
+ return []
100
+
101
+ # Funci贸n para obtener sugerencias de YouTube usando la nueva API
102
+ def fetch_youtube_suggestions_new(query, lang_code="es"):
103
+ encoded_query = urllib.parse.quote(query)
104
+ url = f"https://suggestqueries-clients6.youtube.com/complete/search?client=youtube&ds=yt&q={encoded_query}&hl={lang_code}"
105
+ response = requests.get(url)
106
+ if response.status_code == 200:
107
+ try:
108
+ match = re.search(r'window\.google\.ac\.h\(\["[^"]*",\[(.*?)\],', response.text)
109
+ if match:
110
+ suggestions_data = match.group(1)
111
+ return [normalize_keyword(suggestion) for suggestion in re.findall(r'\["([^"]+)"', suggestions_data)]
112
+ else:
113
+ print("No se encontraron sugerencias en el formato esperado (nueva API de YouTube).")
114
+ return []
115
+ except Exception as e:
116
+ print(f"Error procesando la respuesta de la nueva API de YouTube: {e}")
117
+ return []
118
+ else:
119
+ return []
120
+
121
+ # Funci贸n para obtener sugerencias de Bing
122
+ def fetch_bing_suggestions(query, market="en-US"):
123
+ url = "https://api.bing.com/qsml.aspx"
124
+ params = {"Market": market, "query": query}
125
+ headers = {"User-agent": "Mozilla/5.0"}
126
+ response = requests.get(url, params=params, headers=headers)
127
+ if response.status_code == 200:
128
+ try:
129
+ obj = xmltodict.parse(response.content)
130
+ suggestions = obj['SearchSuggestion']['Section']['Item']
131
+ if isinstance(suggestions, list):
132
+ return [normalize_keyword(s['Text']) for s in suggestions]
133
+ elif isinstance(suggestions, dict):
134
+ return [normalize_keyword(suggestions['Text'])]
135
+ except Exception as e:
136
+ print(f"Error procesando la respuesta de Bing: {e}")
137
+ return []
138
+ else:
139
+ return []
140
+
141
+ # Funci贸n para obtener sugerencias de Amazon
142
+ def fetch_amazon_suggestions(query, market_id="ATVPDKIKX0DER", alias="aps"):
143
+ url = "https://completion.amazon.com/api/2017/suggestions"
144
+ params = {"mid": market_id, "alias": alias, "prefix": query}
145
+ response = requests.get(url, params=params)
146
+ if response.status_code == 200:
147
+ try:
148
+ data = response.json()
149
+ return [normalize_keyword(item['value']) for item in data.get('suggestions', [])]
150
+ except ValueError:
151
+ print("Error decodificando JSON de Amazon")
152
+ return []
153
+ else:
154
+ return []
155
 
156
  # Funci贸n para expandir la palabra clave
157
  def expand_keyword(keyword):
 
194
  for suggestion, count in google_combined.items():
195
  all_suggestions[suggestion]["count"] += count
196
 
197
+ # Obtener sugerencias de DuckDuckGo
198
  for exp_keyword in expanded_keywords:
199
  suggestions = fetch_duckduckgo_suggestions(exp_keyword)
200
  duckduckgo_suggestions_all.extend(suggestions)
 
203
  all_suggestions[suggestion]["count"] += 1
204
  all_suggestions[suggestion]["sources"].add('DuckDuckGo')
205
 
206
+ # Obtener sugerencias de YouTube (API anterior y nueva)
207
  for exp_keyword in expanded_keywords:
208
  suggestions = fetch_youtube_suggestions(exp_keyword)
209
  youtube_suggestions_all.extend(suggestions)
 
214
  all_suggestions[suggestion]["count"] += 1
215
  all_suggestions[suggestion]["sources"].add('YouTube')
216
 
217
+ # Obtener sugerencias de Bing
218
  for exp_keyword in expanded_keywords:
219
  suggestions = fetch_bing_suggestions(exp_keyword)
220
  bing_suggestions_all.extend(suggestions)
 
223
  all_suggestions[suggestion]["count"] += 1
224
  all_suggestions[suggestion]["sources"].add('Bing')
225
 
226
+ # Obtener sugerencias de Amazon
227
  for exp_keyword in expanded_keywords:
228
  suggestions = fetch_amazon_suggestions(exp_keyword)
229
  amazon_suggestions_all.extend(suggestions)
 
232
  all_suggestions[suggestion]["count"] += 1
233
  all_suggestions[suggestion]["sources"].add('Amazon')
234
 
235
+ # Obtener sugerencias de Qwant
236
  for exp_keyword in expanded_keywords:
237
  suggestions = fetch_qwant_suggestions(exp_keyword)
238
  qwant_suggestions_all.extend(suggestions)
 
241
  all_suggestions[suggestion]["count"] += 1
242
  all_suggestions[suggestion]["sources"].add('Qwant')
243
 
244
+ # Obtener sugerencias de Brave
245
  for exp_keyword in expanded_keywords:
246
  suggestions = fetch_brave_suggestions(exp_keyword)
247
  brave_suggestions_all.extend(suggestions)