soundcloud.py 1.4KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. ## Soundcloud (Music)
  2. #
  3. # @website https://soundcloud.com
  4. # @provide-api yes (https://developers.soundcloud.com/)
  5. #
  6. # @using-api yes
  7. # @results JSON
  8. # @stable yes
  9. # @parse url, title, content
  10. from json import loads
  11. from urllib import urlencode
  12. # engine dependent config
  13. categories = ['music']
  14. paging = True
  15. # api-key
  16. guest_client_id = 'b45b1aa10f1ac2941910a7f0d10f8e28'
  17. # search-url
  18. url = 'https://api.soundcloud.com/'
  19. search_url = url + 'search?{query}&facet=model&limit=20&offset={offset}&linked_partitioning=1&client_id={client_id}'
  20. # do search-request
  21. def request(query, params):
  22. offset = (params['pageno'] - 1) * 20
  23. params['url'] = search_url.format(query=urlencode({'q': query}),
  24. offset=offset,
  25. client_id=guest_client_id)
  26. return params
  27. # get response from search-request
  28. def response(resp):
  29. results = []
  30. search_res = loads(resp.text)
  31. # parse results
  32. for result in search_res.get('collection', []):
  33. if result['kind'] in ('track', 'playlist'):
  34. title = result['title']
  35. content = result['description']
  36. # append result
  37. results.append({'url': result['permalink_url'],
  38. 'title': title,
  39. 'content': content})
  40. # return results
  41. return results