@@ -7,7 +7,7 @@
7 @using-api no
7 @using-api no
8 @results HTML
8 @results HTML
10− @parse url, title, content
10+ @parse url, title, content, thumbnail
13from datetime import date, timedelta
13from datetime import date, timedelta
@@ -15,7 +15,7 @@ from json import loads
15from lxml import html
15from lxml import html
16from searx.engines.xpath import extract_text
16from searx.engines.xpath import extract_text
17from searx.url_utils import urlencode
17from searx.url_utils import urlencode
20# engine dependent config
20# engine dependent config
21categories = ['videos']
21categories = ['videos']
@@ -25,7 +25,7 @@ time_range_support = True
25number_of_results = 10
25number_of_results = 10
27search_url = 'https://www.google.com/search'\
27search_url = 'https://www.google.com/search'\
28− '?{query}'\
28+ '?q={query}'\
29 '&tbm=vid'\
29 '&tbm=vid'\
30 '&{search_options}'
30 '&{search_options}'
31time_range_attr = "qdr:{range}"
31time_range_attr = "qdr:{range}"
@@ -69,15 +69,27 @@ def response(resp):
69 # parse results
69 # parse results
70 for result in dom.xpath('//div[@class="g"]'):
70 for result in dom.xpath('//div[@class="g"]'):
72− title = extract_text(result.xpath('.//h3/a'))
72+ title = extract_text(result.xpath('.//h3'))
73− url = result.xpath('.//h3/a/@href')[0]
73+ url = result.xpath('.//div[@class="r"]/a/@href')[0]
74 content = extract_text(result.xpath('.//span[@class="st"]'))
74 content = extract_text(result.xpath('.//span[@class="st"]'))
77+ script = str(dom.xpath('//script[contains(., "_setImagesSrc")]')[0].text)
78+ id = result.xpath('.//div[@class="s"]//img/@id')[0]
79+ thumbnails_data = re.findall('s=\'(.*?)(?:\\\\[a-z,1-9,\\\\]+\'|\')\;var ii=\[(?:|[\'vidthumb\d+\',]+)\'' + id,
82+ if len(thumbnails_data) != 0:
83+ tmp = re.findall('(data:image/jpeg;base64,[a-z,A-Z,0-9,/,\+]+)', thumbnails_data[0])
76 # append result
88 # append result
77 results.append({'url': url,
89 results.append({'url': url,
78 'title': title,
90 'title': title,
79 'content': content,
91 'content': content,
80− 'thumbnail': '',
92+ 'thumbnail': thumbnail,
81 'template': 'videos.html'})
93 'template': 'videos.html'})
83 return results
95 return results