on master help sign in
bugfix: fetch_supported_languages bing, -news, -videos, -images

Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>

commite0c99d9dcbe4c2eee0a7c6f4a7326a8376467640 authorMarkus Heiser <markus.heiser@darmarit.de> dateSun 1 Mar 2020, 08:01 (7 years ago) parent40843fe
4 files changed+19−30
searx/engines/bing.py+14−9 searx/engines/bing_images.py+2−19 searx/engines/bing_news.py+2−1 searx/engines/bing_videos.py+1−1
searx/engines/bing.py+14−9
@@ -110,13 +110,18 @@ def response(resp):
110110
111111# get supported languages from their site
112112def _fetch_supported_languages(resp):
113− supported_languages = []
113+ lang_tags = set()
114+
115+ setmkt = re.compile('setmkt=([^&]*)')
114116 dom = html.fromstring(resp.text)
115− options = eval_xpath(dom, '//div[@id="limit-languages"]//input')
116− for option in options:
117− code = eval_xpath(option, './@id')[0].replace('_', '-')
118− if code == 'nb':
119− code = 'no'
120− supported_languages.append(code)
121−
122− return supported_languages
117+ lang_links = eval_xpath(dom, "//li/a[contains(@href, 'setmkt')]")
118+
119+ for a in lang_links:
120+ href = eval_xpath(a, './@href')[0]
121+ match = setmkt.search(href)
122+ l_tag = match.groups()[0]
123+ _lang, _nation = l_tag.split('-',1)
124+ l_tag = _lang.lower() + '-' + _nation.upper()
125+ lang_tags.add(l_tag)
126+
127+ return list(lang_tags)
searx/engines/bing_images.py+2−19
@@ -18,6 +18,8 @@ import re
1818from searx.url_utils import urlencode
1919from searx.utils import match_language
2020
21+from searx.engines.bing import _fetch_supported_languages, supported_languages_url, language_aliases
22+
2123# engine dependent config
2224categories = ['images']
2325paging = True
@@ -103,22 +105,3 @@ def response(resp):
103105 continue
104106
105107 return results
106−
107−
108−# get supported languages from their site
109−def _fetch_supported_languages(resp):
110− supported_languages = []
111− dom = html.fromstring(resp.text)
112−
113− regions_xpath = '//div[@id="region-section-content"]' \
114− + '//ul[@class="b_vList"]/li/a/@href'
115−
116− regions = dom.xpath(regions_xpath)
117− for region in regions:
118− code = re.search('setmkt=[^\&]+', region).group()[7:]
119− if code == 'nb-NO':
120− code = 'no-NO'
121−
122− supported_languages.append(code)
123−
124− return supported_languages
searx/engines/bing_news.py+2−1
@@ -15,9 +15,10 @@ from datetime import datetime
1515from dateutil import parser
1616from lxml import etree
1717from searx.utils import list_get, match_language
18−from searx.engines.bing import _fetch_supported_languages, supported_languages_url, language_aliases
1918from searx.url_utils import urlencode, urlparse, parse_qsl
2019
20+from searx.engines.bing import _fetch_supported_languages, supported_languages_url, language_aliases
21+
2122# engine dependent config
2223categories = ['news']
2324paging = True
searx/engines/bing_videos.py+1−1
@@ -12,10 +12,10 @@
1212
1313from json import loads
1414from lxml import html
15−from searx.engines.bing_images import _fetch_supported_languages, supported_languages_url
1615from searx.url_utils import urlencode
1716from searx.utils import match_language
1817
18+from searx.engines.bing import _fetch_supported_languages, supported_languages_url, language_aliases
1919
2020categories = ['videos']
2121paging = True