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