diff options
| author | Markus Heiser <markus.heiser@darmarIT.de> | 2023-04-03 09:59:16 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-04-03 09:59:16 +0200 |
| commit | 464e69665cef7fb0b4bbd1c08578fcdd0ecfd48c (patch) | |
| tree | 2e07ddc1e356bfc7b60fed66b1a63f3db356a5d0 | |
| parent | b8100e4e160c24494d3beabaee7e229a10b53523 (diff) | |
| parent | a762172bf748f6d4d590faaf9df50e778ebf09ba (diff) | |
Merge pull request #2309 from return42/fix-392
[fix] engine ddg: quote !bangs in a request send to ddg
| -rw-r--r-- | searx/engines/duckduckgo.py | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/searx/engines/duckduckgo.py b/searx/engines/duckduckgo.py index 85e977bdb..4dd23c759 100644 --- a/searx/engines/duckduckgo.py +++ b/searx/engines/duckduckgo.py @@ -6,6 +6,7 @@ DuckDuckGo Lite """ from typing import TYPE_CHECKING +import re from urllib.parse import urlencode import json import babel @@ -15,6 +16,7 @@ from searx import ( network, locales, redislib, + external_bang, ) from searx import redisdb from searx.utils import ( @@ -197,6 +199,17 @@ ddg_lang_map = { def request(query, params): + # quote ddg bangs + query_parts = [] + # for val in re.split(r'(\s+)', query): + for val in re.split(r'(\s+)', query): + if not val.strip(): + continue + if val.startswith('!') and external_bang.get_node(external_bang.EXTERNAL_BANGS, val[1:]): + val = f"'{val}'" + query_parts.append(val) + query = ' '.join(query_parts) + eng_region = traits.get_region(params['searxng_locale'], traits.all_locale) # eng_lang = get_ddg_lang(traits, params['searxng_locale']) |