summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--searx/engines/findx.py6
-rw-r--r--searx/query.py15
-rw-r--r--searx/search.py9
3 files changed, 19 insertions, 11 deletions
diff --git a/searx/engines/findx.py b/searx/engines/findx.py
index 30a26402a..db4a1aa5f 100644
--- a/searx/engines/findx.py
+++ b/searx/engines/findx.py
@@ -33,12 +33,8 @@ type_map = {
def request(query, params):
- category = 'general'
- if 'category' in params and len(params['category']) == 1:
- category = params['category'][0]
-
params['url'] = search_url.format(
- category=type_map[category],
+ category=type_map[params['category']],
q=urlencode({
'q': query,
'page': params['pageno']
diff --git a/searx/query.py b/searx/query.py
index 6e5f2e883..f7543e3e1 100644
--- a/searx/query.py
+++ b/searx/query.py
@@ -107,14 +107,21 @@ class RawTextQuery(object):
# check if prefix is equal with engine shortcut
if prefix in engine_shortcuts:
parse_next = True
- self.engines.append({'category': 'none',
- 'name': engine_shortcuts[prefix]})
+ engine_name = engine_shortcuts[prefix]
+ if engine_name in engines:
+ for engine_category in engines[engine_name].categories:
+ self.engines.append({'category': engine_category,
+ 'name': engine_name,
+ 'from_bang': True})
# check if prefix is equal with engine name
elif prefix in engines:
parse_next = True
- self.engines.append({'category': 'none',
- 'name': prefix})
+ if prefix in engines:
+ for engine_category in engines[engine_name].categories:
+ self.engines.append({'category': engine_category,
+ 'name': engine_name,
+ 'from_bang': True})
# check if prefix is equal with categorie name
elif prefix in categories:
diff --git a/searx/search.py b/searx/search.py
index b523c2754..945f32197 100644
--- a/searx/search.py
+++ b/searx/search.py
@@ -258,8 +258,13 @@ def get_search_query_from_webapp(preferences, form):
# if engines are calculated from query,
# set categories by using that informations
if query_engines and raw_text_query.specific:
- query_categories = list(set(engine['category']
- for engine in query_engines))
+ additional_categories = set()
+ for engine in query_engines:
+ if 'from_bang' in engine and engine['from_bang']:
+ additional_categories.add('none')
+ else:
+ additional_categories.add(engine['category'])
+ query_categories = list(additional_categories)
# otherwise, using defined categories to
# calculate which engines should be used