From 8df1f0c47e03fe7525c40a2856dba950bab8998b Mon Sep 17 00:00:00 2001 From: Markus Heiser Date: Mon, 1 Aug 2022 17:01:59 +0200 Subject: [mod] add 'Accept-Language' HTTP header to online processores Most engines that support languages (and regions) use the Accept-Language from the WEB browser to build a response that fits to the language (and region). - add new engine option: send_accept_language_header Signed-off-by: Markus Heiser --- searx/search/models.py | 9 +++++++++ searx/search/processors/online.py | 11 +++++++++++ 2 files changed, 20 insertions(+) (limited to 'searx/search') diff --git a/searx/search/models.py b/searx/search/models.py index ff5897966..bbca1cd1d 100644 --- a/searx/search/models.py +++ b/searx/search/models.py @@ -1,6 +1,7 @@ # SPDX-License-Identifier: AGPL-3.0-or-later import typing +import babel class EngineRef: @@ -29,6 +30,7 @@ class SearchQuery: 'query', 'engineref_list', 'lang', + 'locale', 'safesearch', 'pageno', 'time_range', @@ -59,6 +61,13 @@ class SearchQuery: self.external_bang = external_bang self.engine_data = engine_data or {} + self.locale = None + if self.lang: + try: + self.locale = babel.Locale.parse(self.lang, sep='-') + except babel.core.UnknownLocaleError: + pass + @property def categories(self): return list(set(map(lambda engineref: engineref.category, self.engineref_list))) diff --git a/searx/search/processors/online.py b/searx/search/processors/online.py index 0cfe6e123..17e9b6a96 100644 --- a/searx/search/processors/online.py +++ b/searx/search/processors/online.py @@ -60,6 +60,17 @@ class OnlineProcessor(EngineProcessor): # add an user agent params['headers']['User-Agent'] = gen_useragent() + # add Accept-Language header + if self.engine.send_accept_language_header and search_query.locale: + ac_lang = search_query.locale.language + if search_query.locale.territory: + ac_lang = "%s-%s,%s;q=0.9,*;q=0.5" % ( + search_query.locale.language, + search_query.locale.territory, + search_query.locale.language, + ) + params['headers']['Accept-Language'] = ac_lang + return params def _send_http_request(self, params): -- cgit v1.2.3