summaryrefslogtreecommitdiff
path: root/searx
diff options
context:
space:
mode:
authorNoémi Ványi <kvch@users.noreply.github.com>2019-01-19 12:01:04 +0100
committerGitHub <noreply@github.com>2019-01-19 12:01:04 +0100
commit3e6d5ba35e198ba7e41c25115caf1612d508402b (patch)
treefa96a97dc1802986e7eb182f4814ce5018b116f0 /searx
parent89dd3dd93f7f6611e135583364c9d58099652835 (diff)
parente946350b4e660917be6bd14d69c045ebb2531a22 (diff)
Merge pull request #1412 from d-tux/engines/unsplash
Unsplash image engine
Diffstat (limited to 'searx')
-rw-r--r--searx/engines/unsplash.py52
-rw-r--r--searx/settings.yml5
2 files changed, 57 insertions, 0 deletions
diff --git a/searx/engines/unsplash.py b/searx/engines/unsplash.py
new file mode 100644
index 000000000..2e8d6fdfc
--- /dev/null
+++ b/searx/engines/unsplash.py
@@ -0,0 +1,52 @@
+"""
+ Unsplash
+
+ @website https://unsplash.com
+ @provide-api yes (https://unsplash.com/developers)
+
+ @using-api no
+ @results JSON (using search portal's infiniscroll API)
+ @stable no (JSON format could change any time)
+ @parse url, title, img_src, thumbnail_src
+"""
+
+from searx.url_utils import urlencode, urlparse, urlunparse, parse_qsl
+from json import loads
+
+url = 'https://unsplash.com/'
+search_url = url + 'napi/search/photos?'
+categories = ['images']
+page_size = 20
+paging = True
+
+
+def clean_url(url):
+ parsed = urlparse(url)
+ query = [(k, v) for (k, v) in parse_qsl(parsed.query) if k not in ['ixid', 's']]
+
+ return urlunparse((parsed.scheme,
+ parsed.netloc,
+ parsed.path,
+ parsed.params,
+ urlencode(query),
+ parsed.fragment))
+
+
+def request(query, params):
+ params['url'] = search_url + urlencode({'query': query, 'page': params['pageno'], 'per_page': page_size})
+ return params
+
+
+def response(resp):
+ results = []
+ json_data = loads(resp.text)
+
+ if 'results' in json_data:
+ for result in json_data['results']:
+ results.append({'template': 'images.html',
+ 'url': clean_url(result['links']['html']),
+ 'thumbnail_src': clean_url(result['urls']['thumb']),
+ 'img_src': clean_url(result['urls']['raw']),
+ 'title': result['description'],
+ 'content': ''})
+ return results
diff --git a/searx/settings.yml b/searx/settings.yml
index 00b001b6c..f4d6e537c 100644
--- a/searx/settings.yml
+++ b/searx/settings.yml
@@ -616,6 +616,11 @@ engines:
# content_xpath : //*[@class="meaning"]
# shortcut : ud
+ - name : unsplash
+ engine : unsplash
+ disabled: True
+ shortcut : us
+
- name : yahoo
engine : yahoo
shortcut : yh