@@ -13,7 +13,7 @@
13from datetime import date, timedelta
13from datetime import date, timedelta
14from json import loads
14from json import loads
15from lxml import html
15from lxml import html
16−from searx.url_utils import urlencode
16+from searx.url_utils import urlencode, urlparse, parse_qs
19# engine dependent config
19# engine dependent config
@@ -25,10 +25,9 @@ number_of_results = 100
26search_url = 'https://www.google.com/search'\
26search_url = 'https://www.google.com/search'\
27 '?{query}'\
27 '?{query}'\
29− '&async=_id:rg_s,_pms:s'\
30 '&tbm=isch'\
28 '&tbm=isch'\
31− '&yv=2'\
29+ '&gbv=1'\
32 '&{search_options}'
31 '&{search_options}'
33time_range_attr = "qdr:{range}"
32time_range_attr = "qdr:{range}"
34time_range_custom_attr = "cdr:1,cd_min:{start},cd_max{end}"
33time_range_custom_attr = "cdr:1,cd_min:{start},cd_max{end}"
@@ -66,30 +65,22 @@ def request(query, params):
66def response(resp):
65def response(resp):
67 results = []
66 results = []
69− g_result = loads(resp.text)
71− dom = html.fromstring(g_result[1][1])
68+ dom = html.fromstring(resp.text)
73 # parse results
70 # parse results
74− for result in dom.xpath('//div[@data-ved]'):
71+ for img in dom.xpath('//a'):
77− metadata = loads(''.join(result.xpath('./div[contains(@class, "rg_meta")]/text()')))
73+ 'title': u' '.join(img.xpath('.//div[class="rg_ilmbg"]//text()')),
78− except:
74+ 'content': '',
79− continue
75+ 'template': 'images.html',
81− thumbnail_src = metadata['tu']
77+ url = urlparse(img.xpath('.//@href')[0])
82−
78+ query = parse_qs(url.query)
83− # http to https
79+ r['url'] = query['imgrefurl'][0]
80+ r['img_src'] = query['imgurl'][0]
84− thumbnail_src = thumbnail_src.replace("http://", "https://")
81+ r['thumbnail_src'] = r['img_src']
86 # append result
82 # append result
87− results.append({'url': metadata['ru'],
83+ results.append(r)
88− 'title': metadata['pt'],
89− 'content': metadata['s'],
90− 'thumbnail_src': thumbnail_src,
91− 'img_src': metadata['ou'],
92− 'template': 'images.html'})
94 # return results
85 # return results
95 return results
86 return results