| 
				
			 | 
			
			
				@@ -1,15 +1,21 @@ 
			 | 
		
	
		
			
			| 
				1
			 | 
			
				1
			 | 
			
			
				 # import htmlentitydefs 
			 | 
		
	
		
			
			| 
				
			 | 
			
				2
			 | 
			
			
				+import locale 
			 | 
		
	
		
			
			| 
				
			 | 
			
				3
			 | 
			
			
				+import dateutil.parser 
			 | 
		
	
		
			
			| 
				
			 | 
			
				4
			 | 
			
			
				+import cStringIO 
			 | 
		
	
		
			
			| 
				
			 | 
			
				5
			 | 
			
			
				+import csv 
			 | 
		
	
		
			
			| 
				
			 | 
			
				6
			 | 
			
			
				+import os 
			 | 
		
	
		
			
			| 
				
			 | 
			
				7
			 | 
			
			
				+import re 
			 | 
		
	
		
			
			| 
				
			 | 
			
				8
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				2
			 | 
			
				9
			 | 
			
			
				 from codecs import getincrementalencoder 
			 | 
		
	
		
			
			| 
				3
			 | 
			
				10
			 | 
			
			
				 from HTMLParser import HTMLParser 
			 | 
		
	
		
			
			| 
				4
			 | 
			
				11
			 | 
			
			
				 from random import choice 
			 | 
		
	
		
			
			| 
				5
			 | 
			
				12
			 | 
			
			
				  
			 | 
		
	
		
			
			| 
				6
			 | 
			
				13
			 | 
			
			
				 from searx.version import VERSION_STRING 
			 | 
		
	
		
			
			| 
				7
			 | 
			
				14
			 | 
			
			
				 from searx import settings 
			 | 
		
	
		
			
			| 
				
			 | 
			
				15
			 | 
			
			
				+from searx import logger 
			 | 
		
	
		
			
			| 
				8
			 | 
			
				16
			 | 
			
			
				  
			 | 
		
	
		
			
			| 
				9
			 | 
			
				
			 | 
			
			
				-import cStringIO 
			 | 
		
	
		
			
			| 
				10
			 | 
			
				
			 | 
			
			
				-import csv 
			 | 
		
	
		
			
			| 
				11
			 | 
			
				
			 | 
			
			
				-import os 
			 | 
		
	
		
			
			| 
				12
			 | 
			
				
			 | 
			
			
				-import re 
			 | 
		
	
		
			
			| 
				
			 | 
			
				17
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				18
			 | 
			
			
				+logger = logger.getChild('utils') 
			 | 
		
	
		
			
			| 
				13
			 | 
			
				19
			 | 
			
			
				  
			 | 
		
	
		
			
			| 
				14
			 | 
			
				20
			 | 
			
			
				 ua_versions = ('29.0', 
			 | 
		
	
		
			
			| 
				15
			 | 
			
				21
			 | 
			
			
				                '30.0', 
			 | 
		
	
	
		
			
			| 
				
			 | 
			
			
				@@ -181,3 +187,22 @@ def get_result_templates(base_path): 
			 | 
		
	
		
			
			| 
				181
			 | 
			
				187
			 | 
			
			
				                 f = os.path.join(directory[base_path_length:], filename) 
			 | 
		
	
		
			
			| 
				182
			 | 
			
				188
			 | 
			
			
				                 result_templates.add(f) 
			 | 
		
	
		
			
			| 
				183
			 | 
			
				189
			 | 
			
			
				     return result_templates 
			 | 
		
	
		
			
			| 
				
			 | 
			
				190
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				191
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				192
			 | 
			
			
				+def format_date_by_locale(date_string, locale_string): 
			 | 
		
	
		
			
			| 
				
			 | 
			
				193
			 | 
			
			
				+    # strftime works only on dates after 1900 
			 | 
		
	
		
			
			| 
				
			 | 
			
				194
			 | 
			
			
				+    parsed_date = dateutil.parser.parse(date_string) 
			 | 
		
	
		
			
			| 
				
			 | 
			
				195
			 | 
			
			
				+    if parsed_date.year <= 1900: 
			 | 
		
	
		
			
			| 
				
			 | 
			
				196
			 | 
			
			
				+        return parsed_date.isoformat().split('T')[0] 
			 | 
		
	
		
			
			| 
				
			 | 
			
				197
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				198
			 | 
			
			
				+    orig_locale = locale.getlocale()[0] 
			 | 
		
	
		
			
			| 
				
			 | 
			
				199
			 | 
			
			
				+    try: 
			 | 
		
	
		
			
			| 
				
			 | 
			
				200
			 | 
			
			
				+        locale.setlocale(locale.LC_ALL, locale_string) 
			 | 
		
	
		
			
			| 
				
			 | 
			
				201
			 | 
			
			
				+    except: 
			 | 
		
	
		
			
			| 
				
			 | 
			
				202
			 | 
			
			
				+        logger.warning('cannot set locale: {0}'.format(locale_string)) 
			 | 
		
	
		
			
			| 
				
			 | 
			
				203
			 | 
			
			
				+    formatted_date = parsed_date.strftime(locale.nl_langinfo(locale.D_FMT)) 
			 | 
		
	
		
			
			| 
				
			 | 
			
				204
			 | 
			
			
				+    try: 
			 | 
		
	
		
			
			| 
				
			 | 
			
				205
			 | 
			
			
				+        locale.setlocale(locale.LC_ALL, orig_locale) 
			 | 
		
	
		
			
			| 
				
			 | 
			
				206
			 | 
			
			
				+    except: 
			 | 
		
	
		
			
			| 
				
			 | 
			
				207
			 | 
			
			
				+        logger.warning('cannot set original locale: {0}'.format(orig_locale)) 
			 | 
		
	
		
			
			| 
				
			 | 
			
				208
			 | 
			
			
				+    return formatted_date 
			 |