vimeo.py 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. # SPDX-License-Identifier: AGPL-3.0-or-later
  2. """
  3. Wikipedia (Web
  4. """
  5. from urllib.parse import urlencode
  6. from json import loads
  7. from dateutil import parser
  8. from searx.utils import extr
  9. # about
  10. about = {
  11. "website": 'https://vimeo.com/',
  12. "wikidata_id": 'Q156376',
  13. "official_api_documentation": 'http://developer.vimeo.com/api',
  14. "use_official_api": False,
  15. "require_api_key": False,
  16. "results": 'HTML',
  17. }
  18. # engine dependent config
  19. categories = ['videos']
  20. paging = True
  21. # search-url
  22. base_url = 'https://vimeo.com/'
  23. search_url = base_url + 'search/page:{pageno}?{query}'
  24. # do search-request
  25. def request(query, params):
  26. params['url'] = search_url.format(pageno=params['pageno'], query=urlencode({'q': query}))
  27. return params
  28. # get response from search-request
  29. def response(resp):
  30. results = []
  31. data = loads(extr(resp.text, 'var data = ', ';\n'))
  32. # parse results
  33. for result in data['filtered']['data']:
  34. result = result[result['type']]
  35. videoid = result['uri'].split('/')[-1]
  36. url = base_url + videoid
  37. title = result['name']
  38. thumbnail = result['pictures']['sizes'][-1]['link']
  39. publishedDate = parser.parse(result['created_time'])
  40. # append result
  41. results.append(
  42. {
  43. 'url': url,
  44. 'title': title,
  45. 'content': '',
  46. 'template': 'videos.html',
  47. 'publishedDate': publishedDate,
  48. 'iframe_src': "https://player.vimeo.com/video/" + videoid,
  49. 'thumbnail': thumbnail,
  50. }
  51. )
  52. # return results
  53. return results