adobe_stock.py 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. # SPDX-License-Identifier: AGPL-3.0-or-later
  2. """Adobe Stock (images)
  3. """
  4. from urllib.parse import urlencode
  5. from searx.utils import gen_useragent
  6. about = {
  7. "website": 'https://stock.adobe.com/',
  8. "wikidata_id": 'Q5977430',
  9. "official_api_documentation": None,
  10. "use_official_api": False,
  11. "require_api_key": False,
  12. "results": 'JSON',
  13. }
  14. categories = ['images']
  15. paging = True
  16. base_url = 'https://stock.adobe.com'
  17. results_per_page = 10
  18. adobe_order = "relevance" # one of 'relevant', 'featured', 'creation' or 'nb_downloads'
  19. def request(query, params):
  20. args = {
  21. 'k': query,
  22. 'limit': results_per_page,
  23. 'order': adobe_order,
  24. 'search_page': params['pageno'],
  25. 'search_type': 'pagination',
  26. 'filters[content_type:video]': 0,
  27. 'filters[content_type:audio]': 0,
  28. }
  29. params['url'] = f"{base_url}/de/Ajax/Search?{urlencode(args)}"
  30. # headers required to bypass bot-detection
  31. params['headers'] = {
  32. "User-Agent": gen_useragent(),
  33. "Accept-Language": "en-US,en;q=0.5",
  34. }
  35. return params
  36. def response(resp):
  37. results = []
  38. json_resp = resp.json()
  39. for item in json_resp['items'].values():
  40. results.append(
  41. {
  42. 'template': 'images.html',
  43. 'url': item['content_url'],
  44. 'title': item['title'],
  45. 'content': '',
  46. 'img_src': item['content_thumb_extra_large_url'],
  47. 'thumbnail_src': item['thumbnail_url'],
  48. 'resolution': f"{item['content_original_width']}x{item['content_original_height']}",
  49. 'img_format': item['format'],
  50. 'author': item['author'],
  51. }
  52. )
  53. return results