[fix] qwant engine - prevent API locale exception on lang 'all'
Has been reported in [1], error message::
Error
Error: searx.exceptions.SearxEngineAPIException
Percentage: 0
Parameters: ('API error::locale must be a string,locale must be one of
the following values: en_gb, en_ie, en_us, en_ca, en_in, en_my, en_au,
en_nz, cy_gb, gd_gb, de_de, de_ch, de_at, fr_fr, br_fr, fr_be, fr_ch,
fr_ca, fr_ad, fc_ca, ec_ca, co_fr, es_es, es_ar, es_cl, es_co, es_mx,
es_pe, es_ad, ca_es, ca_ad, ca_fr, eu_es, eu_fr, it_it, it_ch, pt_br,
pt_pt, pt_ad, nl_be, nl_nl, pl_pl, zh_hk, zh_cn, fi_fi, bg_bg, et_ee,
hu_hu, da_dk, nb_no, sv_se, ko_kr, th_th, cs_cz, ro_ro, el_gr',)
File name: searx/engines/qwant.py:114
Function: response
Code: raise SearxEngineAPIException('API error::' + msg)
[1] https://github.com/searxng/searxng/issues/222
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
searx/engines/qwant.py+6−4
@@ -84,14 +84,16 @@ def request(query, params):
8484 )
8585
8686 # add language tag
87− if params['language'] != 'all':
87+ if params['language'] == 'all':
88+ params['url'] += '&locale=en_us'
89+ else:
8890 language = match_language(
8991 params['language'],
9092 # pylint: disable=undefined-variable
9193 supported_languages,
9294 language_aliases,
9395 )
94− params['url'] += '&locale=' + language.replace('-', '_')
96+ params['url'] += '&locale=' + language.replace('-', '_').lower()
9597
9698 params['raise_for_httperror'] = False
9799 return params
@@ -144,8 +146,8 @@ def response(resp):
144146 mainline_items = row.get('items', [])
145147 for item in mainline_items:
146148
147− title = item['title']
148− res_url = item['url']
149+ title = item.get('title', None)
150+ res_url = item.get('url', None)
149151
150152 if mainline_type == 'web':
151153 content = item['desc']