logo

searx

My custom branche(s) on searx, a meta-search engine git clone https://hacktivis.me/git/searx.git

dailymotion.py (2798B)


  1. """
  2. Dailymotion (Videos)
  3. @website https://www.dailymotion.com
  4. @provide-api yes (http://www.dailymotion.com/developer)
  5. @using-api yes
  6. @results JSON
  7. @stable yes
  8. @parse url, title, thumbnail, publishedDate, embedded
  9. @todo set content-parameter with correct data
  10. """
  11. from json import loads
  12. from datetime import datetime
  13. from searx.url_utils import urlencode
  14. from searx.utils import match_language
  15. # engine dependent config
  16. categories = ['videos']
  17. paging = True
  18. language_support = True
  19. # search-url
  20. # see http://www.dailymotion.com/doc/api/obj-video.html
  21. search_url = 'https://api.dailymotion.com/videos?fields=created_time,title,description,duration,url,thumbnail_360_url,id&sort=relevance&limit=5&page={pageno}&{query}' # noqa
  22. embedded_url = '<iframe frameborder="0" width="540" height="304" ' +\
  23. 'data-src="//www.dailymotion.com/embed/video/{videoid}" allowfullscreen></iframe>'
  24. supported_languages_url = 'https://api.dailymotion.com/languages'
  25. # do search-request
  26. def request(query, params):
  27. locale = match_language(params['language'], supported_languages)
  28. params['url'] = search_url.format(
  29. query=urlencode({'search': query, 'localization': locale}),
  30. pageno=params['pageno'])
  31. return params
  32. # get response from search-request
  33. def response(resp):
  34. results = []
  35. search_res = loads(resp.text)
  36. # return empty array if there are no results
  37. if 'list' not in search_res:
  38. return []
  39. # parse results
  40. for res in search_res['list']:
  41. title = res['title']
  42. url = res['url']
  43. content = res['description']
  44. thumbnail = res['thumbnail_360_url']
  45. publishedDate = datetime.fromtimestamp(res['created_time'], None)
  46. embedded = embedded_url.format(videoid=res['id'])
  47. # http to https
  48. thumbnail = thumbnail.replace("http://", "https://")
  49. results.append({'template': 'videos.html',
  50. 'url': url,
  51. 'title': title,
  52. 'content': content,
  53. 'publishedDate': publishedDate,
  54. 'embedded': embedded,
  55. 'thumbnail': thumbnail})
  56. # return results
  57. return results
  58. # get supported languages from their site
  59. def _fetch_supported_languages(resp):
  60. supported_languages = {}
  61. response_json = loads(resp.text)
  62. for language in response_json['list']:
  63. supported_languages[language['code']] = {}
  64. name = language['native_name']
  65. if name:
  66. supported_languages[language['code']]['name'] = name
  67. english_name = language['name']
  68. if english_name:
  69. supported_languages[language['code']]['english_name'] = english_name
  70. return supported_languages