diff options
| author | Allen <64094914+allendema@users.noreply.github.com> | 2024-05-23 23:21:58 +0000 |
|---|---|---|
| committer | Markus Heiser <markus.heiser@darmarIT.de> | 2024-05-29 17:56:17 +0200 |
| commit | 0fa81fc782feb104bbd6616d87a6f441aad7d5bd (patch) | |
| tree | 4fd2f697240307d616f8b49614787852e5923fc4 /searx/engines/duckduckgo.py | |
| parent | 0fb3f0e4aeecf62612cb6568910cf0f97c98cab9 (diff) | |
[enh] add re-usable func to filter text
Diffstat (limited to 'searx/engines/duckduckgo.py')
| -rw-r--r-- | searx/engines/duckduckgo.py | 17 |
1 files changed, 7 insertions, 10 deletions
diff --git a/searx/engines/duckduckgo.py b/searx/engines/duckduckgo.py index b874ca2f8..fced014c1 100644 --- a/searx/engines/duckduckgo.py +++ b/searx/engines/duckduckgo.py @@ -392,7 +392,9 @@ def fetch_traits(engine_traits: EngineTraits): SearXNG's locale. """ - # pylint: disable=too-many-branches, too-many-statements + # pylint: disable=too-many-branches, too-many-statements, disable=import-outside-toplevel + from searx.utils import extr, js_variable_to_python + # fetch regions engine_traits.all_locale = 'wt-wt' @@ -403,11 +405,9 @@ def fetch_traits(engine_traits: EngineTraits): if not resp.ok: # type: ignore print("ERROR: response from DuckDuckGo is not OK.") - pos = resp.text.find('regions:{') + 8 # type: ignore - js_code = resp.text[pos:] # type: ignore - pos = js_code.find('}') + 1 - regions = json.loads(js_code[:pos]) + js_code = extr(resp.text, 'regions:', ',snippetLengths') + regions = json.loads(js_code) for eng_tag, name in regions.items(): if eng_tag == 'wt-wt': @@ -439,12 +439,9 @@ def fetch_traits(engine_traits: EngineTraits): engine_traits.custom['lang_region'] = {} - pos = resp.text.find('languages:{') + 10 # type: ignore - js_code = resp.text[pos:] # type: ignore - pos = js_code.find('}') + 1 - js_code = '{"' + js_code[1:pos].replace(':', '":').replace(',', ',"') - languages = json.loads(js_code) + js_code = extr(resp.text, 'languages:', ',regions') + languages = js_variable_to_python(js_code) for eng_lang, name in languages.items(): if eng_lang == 'wt_WT': |