summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarkus Heiser <markus.heiser@darmarit.de>2023-12-23 19:39:05 +0100
committerMarkus Heiser <markus.heiser@darmarIT.de>2023-12-24 08:28:32 +0100
commit6df922b9dad281b025419e05db269c02e2b263cc (patch)
tree865444d4cb26b2970a673fc3663f1b98aabcb665
parentd6ac2b5a55c31824380ec109e430e1cec1f4d19f (diff)
[fix] fetch_traits of google and zlibrary
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
-rw-r--r--searx/engines/google.py9
-rw-r--r--searx/engines/zlibrary.py2
2 files changed, 6 insertions, 5 deletions
diff --git a/searx/engines/google.py b/searx/engines/google.py
index 90b58e27..0bf7fdb0 100644
--- a/searx/engines/google.py
+++ b/searx/engines/google.py
@@ -430,14 +430,13 @@ def fetch_traits(engine_traits: EngineTraits, add_domains: bool = True):
if not resp.ok: # type: ignore
raise RuntimeError("Response from Google's preferences is not OK.")
- dom = html.fromstring(resp.text) # type: ignore
+ dom = html.fromstring(resp.text.replace('<?xml version="1.0" encoding="UTF-8"?>', ''))
# supported language codes
lang_map = {'no': 'nb'}
- for x in eval_xpath_list(dom, '//*[@id="langSec"]//input[@name="lr"]'):
-
- eng_lang = x.get("value").split('_')[-1]
+ for x in eval_xpath_list(dom, "//select[@name='hl']/option"):
+ eng_lang = x.get("value")
try:
locale = babel.Locale.parse(lang_map.get(eng_lang, eng_lang), sep='-')
except babel.UnknownLocaleError:
@@ -457,7 +456,7 @@ def fetch_traits(engine_traits: EngineTraits, add_domains: bool = True):
# supported region codes
- for x in eval_xpath_list(dom, '//*[@name="region"]/..//input[@name="region"]'):
+ for x in eval_xpath_list(dom, "//select[@name='gl']/option"):
eng_country = x.get("value")
if eng_country in skip_countries:
diff --git a/searx/engines/zlibrary.py b/searx/engines/zlibrary.py
index 813d52f6..dd32004f 100644
--- a/searx/engines/zlibrary.py
+++ b/searx/engines/zlibrary.py
@@ -200,6 +200,8 @@ def fetch_traits(engine_traits: EngineTraits) -> None:
for locale in babel.core.localedata.locale_identifiers(): # type: ignore
# Create a Locale object for the current locale
loc = babel.Locale.parse(locale)
+ if loc.english_name is None:
+ continue
language_name_locale_map[loc.english_name.lower()] = loc # type: ignore
for x in eval_xpath_list(dom, "//div[@id='advSearch-noJS']//select[@id='sf_languages']/option"):