on master help sign in
bugfix: fetch_supported_languages bing, -news, -videos, -images
e0c99d9Markus Heiser
searx/engines/bing.py+14−9
@@ -110,13 +110,18 @@ def response(resp):
110
110
111# get supported languages from their site
111# get supported languages from their site
112def _fetch_supported_languages(resp):
112def _fetch_supported_languages(resp):
113− supported_languages = []
113+ lang_tags = set()
114+
115+ setmkt = re.compile('setmkt=([^&]*)')
114 dom = html.fromstring(resp.text)
116 dom = html.fromstring(resp.text)
115− options = eval_xpath(dom, '//div[@id="limit-languages"]//input')
117+ lang_links = eval_xpath(dom, "//li/a[contains(@href, 'setmkt')]")
116− for option in options:
118+
119+ for a in lang_links:
117− code = eval_xpath(option, './@id')[0].replace('_', '-')
120+ href = eval_xpath(a, './@href')[0]
118− if code == 'nb':
121+ match = setmkt.search(href)
119− code = 'no'
122+ l_tag = match.groups()[0]
120− supported_languages.append(code)
123+ _lang, _nation = l_tag.split('-',1)
121−
124+ l_tag = _lang.lower() + '-' + _nation.upper()
122− return supported_languages
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
18from searx.url_utils import urlencode
18from searx.url_utils import urlencode
19from searx.utils import match_language
19from searx.utils import match_language
20
20
21+from searx.engines.bing import _fetch_supported_languages, supported_languages_url, language_aliases
22+
21# engine dependent config
23# engine dependent config
22categories = ['images']
24categories = ['images']
23paging = True
25paging = True
@@ -103,22 +105,3 @@ def response(resp):
103 continue
105 continue
104
106
105 return results
107 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
15from dateutil import parser
15from dateutil import parser
16from lxml import etree
16from lxml import etree
17from searx.utils import list_get, match_language
17from searx.utils import list_get, match_language
18−from searx.engines.bing import _fetch_supported_languages, supported_languages_url, language_aliases
19from searx.url_utils import urlencode, urlparse, parse_qsl
18from searx.url_utils import urlencode, urlparse, parse_qsl
20
19
20+from searx.engines.bing import _fetch_supported_languages, supported_languages_url, language_aliases
21+
21# engine dependent config
22# engine dependent config
22categories = ['news']
23categories = ['news']
23paging = True
24paging = True
searx/engines/bing_videos.py+1−1
@@ -12,10 +12,10 @@
12
12
13from json import loads
13from json import loads
14from lxml import html
14from lxml import html
15−from searx.engines.bing_images import _fetch_supported_languages, supported_languages_url
16from searx.url_utils import urlencode
15from searx.url_utils import urlencode
17from searx.utils import match_language
16from searx.utils import match_language
18
17
18+from searx.engines.bing import _fetch_supported_languages, supported_languages_url, language_aliases
19
19
20categories = ['videos']
20categories = ['videos']
21paging = True
21paging = True