@@ -1,5 +1,5 @@
11"""
2− Swisscows (Web)
2+ Swisscows (Web, Images)
33
44 @website https://swisscows.ch
55 @provide-api no
@@ -15,7 +15,7 @@ from urllib import urlencode, unquote
1515import re
1616
1717# engine dependent config
18−categories = ['general']
18+categories = ['general', 'images']
1919paging = True
2020language_support = True
2121
@@ -24,7 +24,7 @@ base_url = 'https://swisscows.ch/'
2424search_string = '?{query}&page={page}'
2525
2626# regex
27−regex_json = re.compile('initialData: {"Request":(.|\n)*}\]},\s*environment')
27+regex_json = re.compile('initialData: {"Request":(.|\n)*},\s*environment')
2828regex_json_remove_start = re.compile('^initialData:\s*')
2929regex_json_remove_end = re.compile(',\s*environment$')
3030regex_img_url_remove_start = re.compile('^https?://i\.swisscows\.ch/\?link=')
@@ -45,6 +45,10 @@ def request(query, params):
4545 'region': region}),
4646 page=params['pageno'])
4747
48+ # image search query is something like 'image?{query}&page={page}'
49+ if params['category'] == 'images':
50+ search_path = 'image' + search_path
51+
4852 params['url'] = base_url + search_path
4953
5054 return params
@@ -63,12 +67,30 @@ def response(resp):
6367 json_raw = regex_json_remove_end.sub('', regex_json_remove_start.sub('', json_regex.group()))
6468 json = loads(json_raw)
6569
66− # parse normal results
70+ # parse results
6771 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})
7294
7395 # parse images
7496 for result in json.get('Images', []):