summaryrefslogtreecommitdiff
path: root/searx/engines/yahoo.py
diff options
context:
space:
mode:
authorAdam Tauber <asciimoo@gmail.com>2016-12-28 20:09:57 +0100
committerGitHub <noreply@github.com>2016-12-28 20:09:57 +0100
commit9743bde25ef2ce6b765b8192aafcdc0a15739b17 (patch)
tree00fd6b0b14773c0e20425d4a6478d67f244d64ed /searx/engines/yahoo.py
parentea034fafa994227ea89662710901e73cb901e28c (diff)
parent8bff42f049dcac77559beaf2932a47921feb1d49 (diff)
Merge pull request #748 from a01200356/languages
[mod] Allow users to search in most engine supported languages
Diffstat (limited to 'searx/engines/yahoo.py')
-rw-r--r--searx/engines/yahoo.py22
1 files changed, 21 insertions, 1 deletions
diff --git a/searx/engines/yahoo.py b/searx/engines/yahoo.py
index 2bb34b83d..5c62c2ed8 100644
--- a/searx/engines/yahoo.py
+++ b/searx/engines/yahoo.py
@@ -27,6 +27,8 @@ base_url = 'https://search.yahoo.com/'
search_url = 'search?{query}&b={offset}&fl=1&vl=lang_{lang}'
search_url_with_time = 'search?{query}&b={offset}&fl=1&vl=lang_{lang}&age={age}&btf={btf}&fr2=time'
+supported_languages_url = 'https://search.yahoo.com/web/advanced'
+
# specific xpath variables
results_xpath = "//div[contains(concat(' ', normalize-space(@class), ' '), ' Sr ')]"
url_xpath = './/h3/a/@href'
@@ -72,7 +74,13 @@ def _get_url(query, offset, language, time_range):
def _get_language(params):
if params['language'] == 'all':
return 'en'
- return params['language'].split('_')[0]
+ elif params['language'][:2] == 'zh':
+ if params['language'] == 'zh' or params['language'] == 'zh-CH':
+ return 'szh'
+ else:
+ return 'tzh'
+ else:
+ return params['language'].split('-')[0]
# do search-request
@@ -132,3 +140,15 @@ def response(resp):
# return results
return results
+
+
+# get supported languages from their site
+def _fetch_supported_languages(resp):
+ supported_languages = []
+ dom = html.fromstring(resp.text)
+ options = dom.xpath('//div[@id="yschlang"]/span/label/input')
+ for option in options:
+ code = option.xpath('./@value')[0][5:].replace('_', '-')
+ supported_languages.append(code)
+
+ return supported_languages