diff --git a/searx/data/engine_traits.json b/searx/data/engine_traits.json index 66f8b19c1..76026886f 100644 --- a/searx/data/engine_traits.json +++ b/searx/data/engine_traits.json @@ -8576,46 +8576,6 @@ "zh-classical": "zh-classical" } }, - "yahoo": { - "all_locale": "any", - "custom": {}, - "data_type": "traits_v1", - "languages": { - "ar": "ar", - "bg": "bg", - "cs": "cs", - "da": "da", - "de": "de", - "el": "el", - "en": "en", - "es": "es", - "et": "et", - "fi": "fi", - "fr": "fr", - "he": "he", - "hr": "hr", - "hu": "hu", - "it": "it", - "ja": "ja", - "ko": "ko", - "lt": "lt", - "lv": "lv", - "nl": "nl", - "no": "no", - "pl": "pl", - "pt": "pt", - "ro": "ro", - "ru": "ru", - "sk": "sk", - "sl": "sl", - "sv": "sv", - "th": "th", - "tr": "tr", - "zh_Hans": "zh_chs", - "zh_Hant": "zh_cht" - }, - "regions": {} - }, "z-library": { "all_locale": "", "custom": { diff --git a/searx/engines/yahoo.py b/searx/engines/yahoo.py index 8dba443c7..a882c6947 100644 --- a/searx/engines/yahoo.py +++ b/searx/engines/yahoo.py @@ -63,21 +63,52 @@ lang2domain = { } """Map language to domain""" -locale_aliases = { - 'zh': 'zh_Hans', - 'zh-HK': 'zh_Hans', - 'zh-CN': 'zh_Hans', # dead since 2015 / routed to hk.search.yahoo.com - 'zh-TW': 'zh_Hant', +yahoo_languages = { + "all": "any", + "ar": "ar", + "bg": "bg", + "cs": "cs", + "da": "da", + "de": "de", + "el": "el", + "en": "en", + "es": "es", + "et": "et", + "fi": "fi", + "fr": "fr", + "he": "he", + "hr": "hr", + "hu": "hu", + "it": "it", + "ja": "ja", + "ko": "ko", + "lt": "lt", + "lv": "lv", + "nl": "nl", + "no": "no", + "pl": "pl", + "pt": "pt", + "ro": "ro", + "ru": "ru", + "sk": "sk", + "sl": "sl", + "sv": "sv", + "th": "th", + "tr": "tr", + "zh": "zh_chs", + "zh_Hans": "zh_chs", + 'zh-CN': "zh_chs", + "zh_Hant": "zh_cht", + "zh-HK": "zh_cht", + 'zh-TW': "zh_cht", } def request(query, params): """build request""" - lang = locale_aliases.get(params['language'], None) - if not lang: - lang = params['language'].split('-')[0] - lang = traits.get_language(lang, traits.all_locale) + lang = params["language"].split("-")[0] + lang = yahoo_languages.get(lang, "any") offset = (params['pageno'] - 1) * 7 + 1 age, btf = time_range_dict.get(params['time_range'], ('', '')) @@ -154,39 +185,3 @@ def response(resp): results.append({'suggestion': extract_text(suggestion)}) return results - - -def fetch_traits(engine_traits: EngineTraits): - """Fetch languages from yahoo""" - - # pylint: disable=import-outside-toplevel - import babel - from searx import network - from searx.locales import language_tag - - engine_traits.all_locale = 'any' - - resp = network.get('https://search.yahoo.com/preferences/languages') - if not resp.ok: - print("ERROR: response from yahoo is not OK.") - - dom = html.fromstring(resp.text) - offset = len('lang_') - - eng2sxng = {'zh_chs': 'zh_Hans', 'zh_cht': 'zh_Hant'} - - for val in eval_xpath_list(dom, '//div[contains(@class, "lang-item")]/input/@value'): - eng_tag = val[offset:] - - try: - sxng_tag = language_tag(babel.Locale.parse(eng2sxng.get(eng_tag, eng_tag))) - except babel.UnknownLocaleError: - print('ERROR: unknown language --> %s' % eng_tag) - continue - - conflict = engine_traits.languages.get(sxng_tag) - if conflict: - if conflict != eng_tag: - print("CONFLICT: babel %s --> %s, %s" % (sxng_tag, conflict, eng_tag)) - continue - engine_traits.languages[sxng_tag] = eng_tag