summaryrefslogtreecommitdiff
path: root/searx/external_bang.py
diff options
context:
space:
mode:
authorAlexandre Flament <alex@al-f.net>2022-01-12 22:00:18 +0100
committerGitHub <noreply@github.com>2022-01-12 22:00:18 +0100
commit687bdef4108f9d76e5b4dc3d847479ba257626c8 (patch)
tree963f04ea17af3ba3abad0e60ccb8dc5dbaff41eb /searx/external_bang.py
parent94736d7465ddf2ac2628a61039aa58106559d618 (diff)
parenta7c3c352d836e5c75ae4b6d84b2566f3d21c7b13 (diff)
Merge pull request #740 from return42/fix-bang
[fix] get_bang_url: handle ambiguous !!bangs without error
Diffstat (limited to 'searx/external_bang.py')
-rw-r--r--searx/external_bang.py13
1 files changed, 9 insertions, 4 deletions
diff --git a/searx/external_bang.py b/searx/external_bang.py
index f8e872693..a56737c73 100644
--- a/searx/external_bang.py
+++ b/searx/external_bang.py
@@ -2,6 +2,8 @@
from searx.data import EXTERNAL_BANGS
+LEAF_KEY = chr(16)
+
def get_node(external_bangs_db, bang):
node = external_bangs_db['trie']
@@ -26,8 +28,8 @@ def get_bang_definition_and_ac(external_bangs_db, bang):
if k.startswith(after):
bang_ac_list.append(before + k)
elif isinstance(node, dict):
- bang_definition = node.get('*')
- bang_ac_list = [before + k for k in node.keys() if k != '*']
+ bang_definition = node.get(LEAF_KEY)
+ bang_ac_list = [before + k for k in node.keys() if k != LEAF_KEY]
elif isinstance(node, str):
bang_definition = node
bang_ac_list = []
@@ -77,11 +79,14 @@ def get_bang_url(search_query, external_bangs_db=None):
:param search_query: This is a search_query object which contains preferences and the submitted queries.
:return: None if the bang was invalid, else a string of the redirect url.
"""
+ ret_val = None
+
if external_bangs_db is None:
external_bangs_db = EXTERNAL_BANGS
if search_query.external_bang:
bang_definition, _ = get_bang_definition_and_ac(external_bangs_db, search_query.external_bang)
- return resolve_bang_definition(bang_definition, search_query.query)[0] if bang_definition else None
+ if bang_definition and isinstance(bang_definition, str):
+ ret_val = resolve_bang_definition(bang_definition, search_query.query)[0]
- return None
+ return ret_val