@@ -1,3 +1,4 @@
1+from collections import defaultdict
1from typing import Dict, List, Optional, Tuple
2from typing import Dict, List, Optional, Tuple
2from searx.exceptions import SearxParameterException
3from searx.exceptions import SearxParameterException
3from searx.webutils import VALID_LANGUAGE_CODE
4from searx.webutils import VALID_LANGUAGE_CODE
@@ -196,6 +197,15 @@ def parse_generic(preferences: Preferences, form: Dict[str, str], disabled_engin
196 return query_engineref_list
197 return query_engineref_list
200+def parse_engine_data(form):
201+ engine_data = defaultdict(dict)
202+ for k, v in form.items():
203+ if k.startswith("engine_data"):
204+ _, engine, key = k.split('-')
205+ engine_data[engine][key] = v
199def get_search_query_from_webapp(preferences: Preferences, form: Dict[str, str])\
209def get_search_query_from_webapp(preferences: Preferences, form: Dict[str, str])\
200 -> Tuple[SearchQuery, RawTextQuery, List[EngineRef], List[EngineRef]]:
210 -> Tuple[SearchQuery, RawTextQuery, List[EngineRef], List[EngineRef]]:
201 # no text for the query ?
211 # no text for the query ?
@@ -217,6 +227,7 @@ def get_search_query_from_webapp(preferences: Preferences, form: Dict[str, str])
217 query_time_range = parse_time_range(form)
227 query_time_range = parse_time_range(form)
218 query_timeout = parse_timeout(form, raw_text_query)
228 query_timeout = parse_timeout(form, raw_text_query)
219 external_bang = raw_text_query.external_bang
229 external_bang = raw_text_query.external_bang
230+ engine_data = parse_engine_data(form)
221 if not is_locked('categories') and raw_text_query.enginerefs and raw_text_query.specific:
232 if not is_locked('categories') and raw_text_query.enginerefs and raw_text_query.specific:
222 # if engines are calculated from query,
233 # if engines are calculated from query,
@@ -232,7 +243,8 @@ def get_search_query_from_webapp(preferences: Preferences, form: Dict[str, str])
232 validate_engineref_list(query_engineref_list, preferences)
243 validate_engineref_list(query_engineref_list, preferences)
234 return (SearchQuery(query, query_engineref_list, query_lang, query_safesearch, query_pageno,
245 return (SearchQuery(query, query_engineref_list, query_lang, query_safesearch, query_pageno,
235− query_time_range, query_timeout, external_bang=external_bang),
246+ query_time_range, query_timeout, external_bang=external_bang,
247+ engine_data=engine_data),
236 raw_text_query,
248 raw_text_query,
237 query_engineref_list_unknown,
249 query_engineref_list_unknown,
238 query_engineref_list_notoken)
250 query_engineref_list_notoken)