on master help sign in
Removes what looks like tracking parameters
b9ada93Denis Wernert
searx/engines/unsplash.py+16−4
@@ -10,7 +10,7 @@
10 @parse url, title, img_src, thumbnail_src
10 @parse url, title, img_src, thumbnail_src
11"""
11"""
12
12
13−from searx.url_utils import urlencode
13+from searx.url_utils import urlencode, urlparse, urlunparse, parse_qsl
14from json import loads
14from json import loads
15
15
16url = 'https://unsplash.com/'
16url = 'https://unsplash.com/'
@@ -20,6 +20,18 @@ page_size = 20
20paging = True
20paging = True
21
21
22
22
23+def clean_url(url):
24+ parsed = urlparse(url)
25+ query = [(k, v) for (k, v) in parse_qsl(parsed.query) if k not in ['ixid', 's']]
26+
27+ return urlunparse((parsed.scheme,
28+ parsed.netloc,
29+ parsed.path,
30+ parsed.params,
31+ urlencode(query),
32+ parsed.fragment))
33+
34+
23def request(query, params):
35def request(query, params):
24 params['url'] = search_url + urlencode({'query': query, 'page': params['pageno'], 'per_page': page_size})
36 params['url'] = search_url + urlencode({'query': query, 'page': params['pageno'], 'per_page': page_size})
25 return params
37 return params
@@ -32,9 +44,9 @@ def response(resp):
32 if 'results' in json_data:
44 if 'results' in json_data:
33 for result in json_data['results']:
45 for result in json_data['results']:
34 results.append({'template': 'images.html',
46 results.append({'template': 'images.html',
35− 'url': result['links']['html'],
47+ 'url': clean_url(result['links']['html']),
36− 'thumbnail_src': result['urls']['thumb'],
48+ 'thumbnail_src': clean_url(result['urls']['thumb']),
37− 'img_src': result['urls']['raw'],
49+ 'img_src': clean_url(result['urls']['raw']),
38 'title': result['description'],
50 'title': result['description'],
39 'content': ''})
51 'content': ''})
40 return results
52 return results
tests/unit/engines/test_unsplash.py+3−3
@@ -32,7 +32,7 @@ class TestUnsplashEngine(SearxTestCase):
32 self.assertEqual(result[0]['title'], 'low angle photography of swimming penguin')
32 self.assertEqual(result[0]['title'], 'low angle photography of swimming penguin')
33 self.assertEqual(result[0]['url'], 'https://unsplash.com/photos/FY8d721UO_4')
33 self.assertEqual(result[0]['url'], 'https://unsplash.com/photos/FY8d721UO_4')
34 self.assertEqual(result[0]['thumbnail_src'], 'https://images.unsplash.com/photo-1523557148507-1b77641c7e7c?ixlib=rb-0.3.5&q=80\
34 self.assertEqual(result[0]['thumbnail_src'], 'https://images.unsplash.com/photo-1523557148507-1b77641c7e7c?ixlib=rb-0.3.5&q=80\
35−&fm=jpg&crop=entropy&cs=tinysrgb&w=200&fit=max&ixid=eyJhcHBfaWQiOjEyMDd9&s=a9b9e56e63efc6f4611a87ce7e9a48f8')
35+&fm=jpg&crop=entropy&cs=tinysrgb&w=200&fit=max')
36− self.assertEqual(result[0]['img_src'], 'https://images.unsplash.com/photo-1523557148507-1b77641c7e7c?ixlib=rb-0.3.5\
36+ self.assertEqual(result[0]['img_src'], 'https://images.unsplash.com/photo-1523557148507-1b77641c7e7c\
37−&ixid=eyJhcHBfaWQiOjEyMDd9&s=095c5fc319c5a77c705f49ad63e0f195')
37+?ixlib=rb-0.3.5')
38 self.assertEqual(result[0]['content'], '')
38 self.assertEqual(result[0]['content'], '')