| 
									
										
										
										
											2013-11-10 22:03:16 +01:00
										 |  |  | from datetime import datetime | 
					
						
							| 
									
										
										
										
											2013-12-01 16:41:24 +01:00
										 |  |  | import re | 
					
						
							| 
									
										
										
										
											2013-11-04 21:47:16 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | categories = [] | 
					
						
							|  |  |  | url = 'http://finance.yahoo.com/d/quotes.csv?e=.csv&f=sl1d1t1&s={query}=X' | 
					
						
							| 
									
										
										
										
											2013-11-10 21:20:22 +01:00
										 |  |  | weight = 100 | 
					
						
							| 
									
										
										
										
											2013-11-04 21:47:16 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-12-01 16:42:37 +01:00
										 |  |  | parser_re = re.compile(r'^\W*(\d+(?:\.\d+)?)\W*([a-z]{3})\W*(?:in)?\W*([a-z]{3})\W*$', re.I) | 
					
						
							| 
									
										
										
										
											2013-12-01 16:41:24 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-11-04 21:47:16 +01:00
										 |  |  | def request(query, params): | 
					
						
							| 
									
										
										
										
											2013-12-01 16:41:24 +01:00
										 |  |  |     m = parser_re.match(query) | 
					
						
							|  |  |  |     if not m: | 
					
						
							|  |  |  |         # wrong query | 
					
						
							|  |  |  |         return params | 
					
						
							| 
									
										
										
										
											2013-11-04 21:47:16 +01:00
										 |  |  |     try: | 
					
						
							| 
									
										
										
										
											2013-12-01 16:41:24 +01:00
										 |  |  |         ammount, from_currency, to_currency = m.groups() | 
					
						
							| 
									
										
										
										
											2013-11-04 21:47:16 +01:00
										 |  |  |         ammount = float(ammount) | 
					
						
							|  |  |  |     except: | 
					
						
							|  |  |  |         # wrong params | 
					
						
							|  |  |  |         return params | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     q = (from_currency+to_currency).upper() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     params['url'] = url.format(query=q) | 
					
						
							|  |  |  |     params['ammount'] = ammount | 
					
						
							|  |  |  |     params['from'] = from_currency | 
					
						
							|  |  |  |     params['to'] = to_currency | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     return params | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | def response(resp): | 
					
						
							|  |  |  |     global base_url | 
					
						
							|  |  |  |     results = [] | 
					
						
							|  |  |  |     try: | 
					
						
							|  |  |  |         _,conversion_rate,_ = resp.text.split(',', 2) | 
					
						
							|  |  |  |         conversion_rate = float(conversion_rate) | 
					
						
							|  |  |  |     except: | 
					
						
							|  |  |  |         return results | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     title = '{0} {1} in {2} is {3}'.format(resp.search_params['ammount'] | 
					
						
							|  |  |  |                                           ,resp.search_params['from'] | 
					
						
							|  |  |  |                                           ,resp.search_params['to'] | 
					
						
							|  |  |  |                                           ,resp.search_params['ammount']*conversion_rate | 
					
						
							|  |  |  |                                           ) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     content = '1 {0} is {1} {2}'.format(resp.search_params['from'], conversion_rate, resp.search_params['to']) | 
					
						
							| 
									
										
										
										
											2013-11-10 22:03:16 +01:00
										 |  |  |     now_date = datetime.now().strftime('%Y%m%d') | 
					
						
							|  |  |  |     url = 'http://finance.yahoo.com/currency/converter-results/{0}/{1}-{2}-to-{3}.html' | 
					
						
							|  |  |  |     url = url.format(now_date | 
					
						
							|  |  |  |                     ,resp.search_params['ammount'] | 
					
						
							|  |  |  |                     ,resp.search_params['from'].lower() | 
					
						
							|  |  |  |                     ,resp.search_params['to'].lower() | 
					
						
							|  |  |  |                     ) | 
					
						
							| 
									
										
										
										
											2013-11-04 21:47:16 +01:00
										 |  |  |     results.append({'title': title, 'content': content, 'url': url}) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     return results |