on master help sign in
[enh] multilingual autocomplete

implemented for wikipedia, qwant and google

commit94cb3a7f11d252dc8dabd6bce4d7f4d67a1ececd authora01200356 <a01200356@itesm.mx> dateTue 29 Mar 2016, 18:53 (11 years ago) parent71de593
2 files changed+18−12
searx/autocomplete.py+10−10 searx/webapp.py+8−2
searx/autocomplete.py+10−10
@@ -110,7 +110,7 @@ def searx_bang(full_query):
110110 return list(result_set)
111111
112112
113−def dbpedia(query):
113+def dbpedia(query, lang):
114114 # dbpedia autocompleter, no HTTPS
115115 autocomplete_url = 'http://lookup.dbpedia.org/api/search.asmx/KeywordSearch?'
116116
@@ -126,7 +126,7 @@ def dbpedia(query):
126126 return results
127127
128128
129−def duckduckgo(query):
129+def duckduckgo(query, lang):
130130 # duckduckgo autocompleter
131131 url = 'https://ac.duckduckgo.com/ac/?{0}&type=list'
132132
@@ -136,11 +136,11 @@ def duckduckgo(query):
136136 return []
137137
138138
139−def google(query):
139+def google(query, lang):
140140 # google autocompleter
141141 autocomplete_url = 'https://suggestqueries.google.com/complete/search?client=toolbar&'
142142
143− response = get(autocomplete_url + urlencode(dict(q=query)))
143+ response = get(autocomplete_url + urlencode(dict(hl=lang, q=query)))
144144
145145 results = []
146146
@@ -151,8 +151,8 @@ def google(query):
151151 return results
152152
153153
154−def startpage(query):
155− # wikipedia autocompleter
154+def startpage(query, lang):
155+ # startpage autocompleter
156156 url = 'https://startpage.com/do/suggest?{query}'
157157
158158 resp = get(url.format(query=urlencode({'query': query}))).text.split('\n')
@@ -161,11 +161,11 @@ def startpage(query):
161161 return []
162162
163163
164−def qwant(query):
164+def qwant(query, lang):
165165 # qwant autocompleter (additional parameter : lang=en_en&count=xxx )
166166 url = 'https://api.qwant.com/api/suggest?{query}'
167167
168− resp = get(url.format(query=urlencode({'q': query})))
168+ resp = get(url.format(query=urlencode({'q': query, 'lang': lang})))
169169
170170 results = []
171171
@@ -178,9 +178,9 @@ def qwant(query):
178178 return results
179179
180180
181−def wikipedia(query):
181+def wikipedia(query, lang):
182182 # wikipedia autocompleter
183− url = 'https://en.wikipedia.org/w/api.php?action=opensearch&{0}&limit=10&namespace=0&format=json'
183+ url = 'https://' + lang + '.wikipedia.org/w/api.php?action=opensearch&{0}&limit=10&namespace=0&format=json'
184184
185185 resp = loads(get(url.format(urlencode(dict(search=query)))).text)
186186 if len(resp) > 1:
searx/webapp.py+8−2
@@ -492,7 +492,7 @@ def autocompleter():
492492 if not query.getSearchQuery():
493493 return '', 400
494494
495− # run autocompleter
495+ # get autocompleter
496496 completer = autocomplete_backends.get(request.cookies.get('autocomplete', settings['search']['autocomplete']))
497497
498498 # parse searx specific autocompleter results like !bang
@@ -500,8 +500,14 @@ def autocompleter():
500500
501501 # normal autocompletion results only appear if max 3 inner results returned
502502 if len(raw_results) <= 3 and completer:
503+ # get language from cookie
504+ language = request.cookies.get('language')
505+ if not language or language == 'all':
506+ language = 'en'
507+ else:
508+ language = language.split('_')[0]
503509 # run autocompletion
504− raw_results.extend(completer(query.getSearchQuery()))
510+ raw_results.extend(completer(query.getSearchQuery(), language))
505511
506512 # parse results (write :language and !engine back to result string)
507513 results = []