瀏覽代碼

[enh] smarter currency query parse

asciimoo 11 年之前
父節點
當前提交
a35128f5e0
共有 1 個檔案被更改,包括 8 行新增4 行删除
  1. 8
    4
      searx/engines/currency_convert.py

+ 8
- 4
searx/engines/currency_convert.py 查看文件

@@ -1,21 +1,25 @@
1 1
 from datetime import datetime
2
+import re
2 3
 
3 4
 categories = []
4 5
 url = 'http://finance.yahoo.com/d/quotes.csv?e=.csv&f=sl1d1t1&s={query}=X'
5 6
 weight = 100
6 7
 
8
+parser_re = re.compile(r'^\W*(\d+(?:\.\d+)?)\W*([a-z]{3})\W*(?:in)?\W*([a-z]{3})\W*$')
9
+
7 10
 def request(query, params):
11
+    m = parser_re.match(query)
12
+    if not m:
13
+        # wrong query
14
+        return params
8 15
     try:
9
-        # eg.: "X EUR in USD"
10
-        ammount, from_currency, _, to_currency = query.split()
16
+        ammount, from_currency, to_currency = m.groups()
11 17
         ammount = float(ammount)
12 18
     except:
13 19
         # wrong params
14 20
         return params
15 21
 
16 22
     q = (from_currency+to_currency).upper()
17
-    if not q.isalpha():
18
-        return params
19 23
 
20 24
     params['url'] = url.format(query=q)
21 25
     params['ammount'] = ammount