瀏覽代碼

[fix] no lambda anymore, cgi.escape

potato 8 年之前
父節點
當前提交
bc806bfab1
共有 1 個檔案被更改,包括 22 行新增21 行删除
  1. 22
    21
      searx/engines/dictzone.py

+ 22
- 21
searx/engines/dictzone.py 查看文件

1
 import re
1
 import re
2
 from urlparse import urljoin
2
 from urlparse import urljoin
3
 from lxml import html
3
 from lxml import html
4
+from cgi import escape
4
 from searx.engines.xpath import extract_text
5
 from searx.engines.xpath import extract_text
5
 from searx.languages import language_codes
6
 from searx.languages import language_codes
6
 
7
 
12
 results_xpath = './/table[@id="r"]/tr'
13
 results_xpath = './/table[@id="r"]/tr'
13
 
14
 
14
 
15
 
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
+
15
 def request(query, params):
29
 def request(query, params):
16
     m = parser_re.match(unicode(query, 'utf8'))
30
     m = parser_re.match(unicode(query, 'utf8'))
17
     if not m:
31
     if not m:
19
 
33
 
20
     from_lang, to_lang, query = m.groups()
34
     from_lang, to_lang, query = m.groups()
21
 
35
 
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)
31
 
38
 
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:
39
         return params
40
         return params
40
 
41
 
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]
44
     params['query'] = query
45
     params['query'] = query
45
 
46
 
46
     return params
47
     return params
64
 
65
 
65
         results.append({
66
         results.append({
66
             'url': urljoin(resp.url, '?%d' % k),
67
             '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))
69
         })
70
         })
70
 
71
 
71
     return results
72
     return results