| 
				
			 | 
			
			
				@@ -1,5 +1,5 @@ 
			 | 
		
	
		
			
			| 
				1
			 | 
			
				1
			 | 
			
			
				 """ 
			 | 
		
	
		
			
			| 
				2
			 | 
			
				
			 | 
			
			
				- Swisscows (Web) 
			 | 
		
	
		
			
			| 
				
			 | 
			
				2
			 | 
			
			
				+ Swisscows (Web, Images) 
			 | 
		
	
		
			
			| 
				3
			 | 
			
				3
			 | 
			
			
				  
			 | 
		
	
		
			
			| 
				4
			 | 
			
				4
			 | 
			
			
				  @website     https://swisscows.ch 
			 | 
		
	
		
			
			| 
				5
			 | 
			
				5
			 | 
			
			
				  @provide-api no 
			 | 
		
	
	
		
			
			| 
				
			 | 
			
			
				@@ -15,7 +15,7 @@ from urllib import urlencode, unquote 
			 | 
		
	
		
			
			| 
				15
			 | 
			
				15
			 | 
			
			
				 import re 
			 | 
		
	
		
			
			| 
				16
			 | 
			
				16
			 | 
			
			
				  
			 | 
		
	
		
			
			| 
				17
			 | 
			
				17
			 | 
			
			
				 # engine dependent config 
			 | 
		
	
		
			
			| 
				18
			 | 
			
				
			 | 
			
			
				-categories = ['general'] 
			 | 
		
	
		
			
			| 
				
			 | 
			
				18
			 | 
			
			
				+categories = ['general', 'images'] 
			 | 
		
	
		
			
			| 
				19
			 | 
			
				19
			 | 
			
			
				 paging = True 
			 | 
		
	
		
			
			| 
				20
			 | 
			
				20
			 | 
			
			
				 language_support = True 
			 | 
		
	
		
			
			| 
				21
			 | 
			
				21
			 | 
			
			
				  
			 | 
		
	
	
		
			
			| 
				
			 | 
			
			
				@@ -24,7 +24,7 @@ base_url = 'https://swisscows.ch/' 
			 | 
		
	
		
			
			| 
				24
			 | 
			
				24
			 | 
			
			
				 search_string = '?{query}&page={page}' 
			 | 
		
	
		
			
			| 
				25
			 | 
			
				25
			 | 
			
			
				  
			 | 
		
	
		
			
			| 
				26
			 | 
			
				26
			 | 
			
			
				 # regex 
			 | 
		
	
		
			
			| 
				27
			 | 
			
				
			 | 
			
			
				-regex_json = re.compile('initialData: {"Request":(.|\n)*}\]},\s*environment') 
			 | 
		
	
		
			
			| 
				
			 | 
			
				27
			 | 
			
			
				+regex_json = re.compile('initialData: {"Request":(.|\n)*},\s*environment') 
			 | 
		
	
		
			
			| 
				28
			 | 
			
				28
			 | 
			
			
				 regex_json_remove_start = re.compile('^initialData:\s*') 
			 | 
		
	
		
			
			| 
				29
			 | 
			
				29
			 | 
			
			
				 regex_json_remove_end = re.compile(',\s*environment$') 
			 | 
		
	
		
			
			| 
				30
			 | 
			
				30
			 | 
			
			
				 regex_img_url_remove_start = re.compile('^https?://i\.swisscows\.ch/\?link=') 
			 | 
		
	
	
		
			
			| 
				
			 | 
			
			
				@@ -45,6 +45,10 @@ def request(query, params): 
			 | 
		
	
		
			
			| 
				45
			 | 
			
				45
			 | 
			
			
				                          'region': region}), 
			 | 
		
	
		
			
			| 
				46
			 | 
			
				46
			 | 
			
			
				         page=params['pageno']) 
			 | 
		
	
		
			
			| 
				47
			 | 
			
				47
			 | 
			
			
				  
			 | 
		
	
		
			
			| 
				
			 | 
			
				48
			 | 
			
			
				+    # image search query is something like 'image?{query}&page={page}' 
			 | 
		
	
		
			
			| 
				
			 | 
			
				49
			 | 
			
			
				+    if params['category'] == 'images': 
			 | 
		
	
		
			
			| 
				
			 | 
			
				50
			 | 
			
			
				+        search_path = 'image' + search_path 
			 | 
		
	
		
			
			| 
				
			 | 
			
				51
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				48
			 | 
			
				52
			 | 
			
			
				     params['url'] = base_url + search_path 
			 | 
		
	
		
			
			| 
				49
			 | 
			
				53
			 | 
			
			
				  
			 | 
		
	
		
			
			| 
				50
			 | 
			
				54
			 | 
			
			
				     return params 
			 | 
		
	
	
		
			
			| 
				
			 | 
			
			
				@@ -63,12 +67,30 @@ def response(resp): 
			 | 
		
	
		
			
			| 
				63
			 | 
			
				67
			 | 
			
			
				     json_raw = regex_json_remove_end.sub('', regex_json_remove_start.sub('', json_regex.group())) 
			 | 
		
	
		
			
			| 
				64
			 | 
			
				68
			 | 
			
			
				     json = loads(json_raw) 
			 | 
		
	
		
			
			| 
				65
			 | 
			
				69
			 | 
			
			
				  
			 | 
		
	
		
			
			| 
				66
			 | 
			
				
			 | 
			
			
				-    # parse normal results 
			 | 
		
	
		
			
			| 
				
			 | 
			
				70
			 | 
			
			
				+    # parse results 
			 | 
		
	
		
			
			| 
				67
			 | 
			
				71
			 | 
			
			
				     for result in json['Results'].get('items', []): 
			 | 
		
	
		
			
			| 
				68
			 | 
			
				
			 | 
			
			
				-        # append result 
			 | 
		
	
		
			
			| 
				69
			 | 
			
				
			 | 
			
			
				-        results.append({'url': result['Url'].replace(u'\uE000', '').replace(u'\uE001', ''), 
			 | 
		
	
		
			
			| 
				70
			 | 
			
				
			 | 
			
			
				-                        'title': result['Title'].replace(u'\uE000', '').replace(u'\uE001', ''), 
			 | 
		
	
		
			
			| 
				71
			 | 
			
				
			 | 
			
			
				-                        'content': result['Description'].replace(u'\uE000', '').replace(u'\uE001', '')}) 
			 | 
		
	
		
			
			| 
				
			 | 
			
				72
			 | 
			
			
				+        result_title = result['Title'].replace(u'\uE000', '').replace(u'\uE001', '') 
			 | 
		
	
		
			
			| 
				
			 | 
			
				73
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				74
			 | 
			
			
				+        # parse image results 
			 | 
		
	
		
			
			| 
				
			 | 
			
				75
			 | 
			
			
				+        if result.get('ContentType', '').startswith('image'): 
			 | 
		
	
		
			
			| 
				
			 | 
			
				76
			 | 
			
			
				+            img_url = unquote(regex_img_url_remove_start.sub('', result['Url'])) 
			 | 
		
	
		
			
			| 
				
			 | 
			
				77
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				78
			 | 
			
			
				+            # append result 
			 | 
		
	
		
			
			| 
				
			 | 
			
				79
			 | 
			
			
				+            results.append({'url': result['SourceUrl'], 
			 | 
		
	
		
			
			| 
				
			 | 
			
				80
			 | 
			
			
				+                            'title': result['Title'], 
			 | 
		
	
		
			
			| 
				
			 | 
			
				81
			 | 
			
			
				+                            'content': '', 
			 | 
		
	
		
			
			| 
				
			 | 
			
				82
			 | 
			
			
				+                            'img_src': img_url, 
			 | 
		
	
		
			
			| 
				
			 | 
			
				83
			 | 
			
			
				+                            'template': 'images.html'}) 
			 | 
		
	
		
			
			| 
				
			 | 
			
				84
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				85
			 | 
			
			
				+        # parse general results 
			 | 
		
	
		
			
			| 
				
			 | 
			
				86
			 | 
			
			
				+        else: 
			 | 
		
	
		
			
			| 
				
			 | 
			
				87
			 | 
			
			
				+            result_url = result['Url'].replace(u'\uE000', '').replace(u'\uE001', '') 
			 | 
		
	
		
			
			| 
				
			 | 
			
				88
			 | 
			
			
				+            result_content = result['Description'].replace(u'\uE000', '').replace(u'\uE001', '') 
			 | 
		
	
		
			
			| 
				
			 | 
			
				89
			 | 
			
			
				+ 
			 | 
		
	
		
			
			| 
				
			 | 
			
				90
			 | 
			
			
				+            # append result 
			 | 
		
	
		
			
			| 
				
			 | 
			
				91
			 | 
			
			
				+            results.append({'url': result_url, 
			 | 
		
	
		
			
			| 
				
			 | 
			
				92
			 | 
			
			
				+                            'title': result_title, 
			 | 
		
	
		
			
			| 
				
			 | 
			
				93
			 | 
			
			
				+                            'content': result_content}) 
			 | 
		
	
		
			
			| 
				72
			 | 
			
				94
			 | 
			
			
				  
			 | 
		
	
		
			
			| 
				73
			 | 
			
				95
			 | 
			
			
				     # parse images 
			 | 
		
	
		
			
			| 
				74
			 | 
			
				96
			 | 
			
			
				     for result in json.get('Images', []): 
			 |