on master help sign in
[fix] no lambda anymore, cgi.escape
commitbc806bfab1cc75279dc912bf443dc39178a872dd authorpotato <mail@crazypotato.tk> dateTue 6 Sep 2016, 14:12 (10 years ago) parent5416f0f
1 file changed+22−21
searx/engines/dictzone.py+22−21
searx/engines/dictzone.py+22−21
@@ -1,6 +1,7 @@
11import re
22from urlparse import urljoin
33from lxml import html
4+from cgi import escape
45from searx.engines.xpath import extract_text
56from searx.languages import language_codes
67
@@ -12,6 +13,19 @@ parser_re = re.compile(u'.*?([a-z]+)-([a-z]+) (.+)', re.I)
1213results_xpath = './/table[@id="r"]/tr'
1314
1415
16+def is_valid_lang(lang):
17+ is_abbr = (len(lang) == 2)
18+ if is_abbr:
19+ for l in language_codes:
20+ if l[0][:2] == lang.lower():
21+ return (True, l[1].lower())
22+ return False
23+ else:
24+ for l in language_codes:
25+ if l[1].lower() == lang.lower():
26+ return (True, l[1].lower())
27+ return False
28+
1529def request(query, params):
1630 m = parser_re.match(unicode(query, 'utf8'))
1731 if not m:
@@ -19,28 +33,15 @@ def request(query, params):
1933
2034 from_lang, to_lang, query = m.groups()
2135
22− if len(from_lang) == 2:
23− lan = filter(lambda x: x[0][:2] == from_lang, language_codes)
24− if lan:
25− from_lang = lan[0][1].lower()
26− else:
27− return params
28− elif from_lang.lower() not in [x[1].lower() for x in language_codes]:
29− return params
30−
36+ from_lang = is_valid_lang(from_lang)
37+ to_lang = is_valid_lang(to_lang)
3138
32− if len(to_lang) == 2:
33− lan = filter(lambda x: x[0][:2] == to_lang, language_codes)
34− if lan:
35− to_lang = lan[0][1].lower()
36− else:
37− return params
38− elif to_lang.lower() not in [x[1].lower() for x in language_codes]:
39+ if not from_lang or not to_lang:
3940 return params
4041
41− params['url'] = url.format(from_lang=from_lang, to_lang=to_lang,query=query)
42− params['from_lang'] = from_lang
43− params['to_lang'] = to_lang
42+ params['url'] = url.format(from_lang=from_lang[1], to_lang=to_lang[1],query=query)
43+ params['from_lang'] = from_lang[1]
44+ params['to_lang'] = to_lang[1]
4445 params['query'] = query
4546
4647 return params
@@ -64,8 +65,8 @@ def response(resp):
6465
6566 results.append({
6667 'url': urljoin(resp.url, '?%d' % k),
67− 'title': from_result.text_content(),
68− 'content': '; '.join(to_results)
68+ 'title': escape(from_result.text_content()),
69+ 'content': escape('; '.join(to_results))
6970 })
7071
7172 return results