google_images.py 1.8KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. ## Google (Images)
  2. #
  3. # @website https://www.google.com
  4. # @provide-api yes (https://developers.google.com/web-search/docs/),
  5. # deprecated!
  6. #
  7. # @using-api yes
  8. # @results JSON
  9. # @stable yes (but deprecated)
  10. # @parse url, title, img_src
  11. from urllib import urlencode, unquote
  12. from json import loads
  13. # engine dependent config
  14. categories = ['images']
  15. paging = True
  16. safesearch = True
  17. # search-url
  18. url = 'https://ajax.googleapis.com/'
  19. search_url = url + 'ajax/services/search/images?v=1.0&start={offset}&rsz=large&safe={safesearch}&filter=off&{query}'
  20. # do search-request
  21. def request(query, params):
  22. offset = (params['pageno'] - 1) * 8
  23. if params['safesearch'] == 0:
  24. safesearch = 'off'
  25. else:
  26. safesearch = 'on'
  27. params['url'] = search_url.format(query=urlencode({'q': query}),
  28. offset=offset,
  29. safesearch=safesearch)
  30. return params
  31. # get response from search-request
  32. def response(resp):
  33. results = []
  34. search_res = loads(resp.text)
  35. # return empty array if there are no results
  36. if not search_res.get('responseData', {}).get('results'):
  37. return []
  38. # parse results
  39. for result in search_res['responseData']['results']:
  40. href = result['originalContextUrl']
  41. title = result['title']
  42. if 'url' not in result:
  43. continue
  44. thumbnail_src = result['tbUrl']
  45. # append result
  46. results.append({'url': href,
  47. 'title': title,
  48. 'content': result['content'],
  49. 'thumbnail_src': thumbnail_src,
  50. 'img_src': unquote(result['url']),
  51. 'template': 'images.html'})
  52. # return results
  53. return results