diff options
| author | Adam Tauber <asciimoo@gmail.com> | 2015-02-22 23:29:13 +0100 |
|---|---|---|
| committer | Adam Tauber <asciimoo@gmail.com> | 2015-02-22 23:29:13 +0100 |
| commit | 98aa70cd41de5ff26a0d1def77a45153ebf8b712 (patch) | |
| tree | d74516fdcc0962464a17dcc210577edda1f87529 /searx/engines | |
| parent | 03579c225ff34406879bbf3ec4d362815960b59b (diff) | |
| parent | 56ad00bc3292c345dfaa5a671844e222b5f72e5b (diff) | |
Merge pull request #251 from Cqoicebordel/moar-engines
Moar engines
Diffstat (limited to 'searx/engines')
| -rw-r--r-- | searx/engines/spotify.py | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/searx/engines/spotify.py b/searx/engines/spotify.py new file mode 100644 index 000000000..61f3721ec --- /dev/null +++ b/searx/engines/spotify.py @@ -0,0 +1,60 @@ +## Spotify (Music) +# +# @website https://spotify.com +# @provide-api yes (https://developer.spotify.com/web-api/search-item/) +# +# @using-api yes +# @results JSON +# @stable yes +# @parse url, title, content, embedded + +from json import loads +from urllib import urlencode + +# engine dependent config +categories = ['music'] +paging = True + +# search-url +url = 'https://api.spotify.com/' +search_url = url + 'v1/search?{query}&type=track&offset={offset}' + +embedded_url = '<iframe data-src="https://embed.spotify.com/?uri=spotify:track:{audioid}"\ + width="300" height="80" frameborder="0" allowtransparency="true"></iframe>' + + +# do search-request +def request(query, params): + offset = (params['pageno'] - 1) * 20 + + params['url'] = search_url.format(query=urlencode({'q': query}), + offset=offset) + + return params + + +# get response from search-request +def response(resp): + results = [] + + search_res = loads(resp.text) + + # parse results + for result in search_res.get('tracks', {}).get('items', {}): + if result['type'] == 'track': + title = result['name'] + url = result['external_urls']['spotify'] + content = result['artists'][0]['name'] +\ + " • " +\ + result['album']['name'] +\ + " • " + result['name'] + embedded = embedded_url.format(audioid=result['id']) + + # append result + results.append({'url': url, + 'title': title, + 'embedded': embedded, + 'content': content}) + + # return results + return results |