forked from zaclys/searxng
Merge pull request #1658 from dalf/video-fixes
Fix dailymotion, google_videos and youtube_noapi engines
This commit is contained in:
commit
1bed39e6cb
|
@ -15,7 +15,7 @@
|
||||||
from json import loads
|
from json import loads
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
from searx.url_utils import urlencode
|
from searx.url_utils import urlencode
|
||||||
from searx.utils import match_language
|
from searx.utils import match_language, html_to_text
|
||||||
|
|
||||||
# engine dependent config
|
# engine dependent config
|
||||||
categories = ['videos']
|
categories = ['videos']
|
||||||
|
@ -59,7 +59,7 @@ def response(resp):
|
||||||
for res in search_res['list']:
|
for res in search_res['list']:
|
||||||
title = res['title']
|
title = res['title']
|
||||||
url = res['url']
|
url = res['url']
|
||||||
content = res['description']
|
content = html_to_text(res['description'])
|
||||||
thumbnail = res['thumbnail_360_url']
|
thumbnail = res['thumbnail_360_url']
|
||||||
publishedDate = datetime.fromtimestamp(res['created_time'], None)
|
publishedDate = datetime.fromtimestamp(res['created_time'], None)
|
||||||
embedded = embedded_url.format(videoid=res['id'])
|
embedded = embedded_url.format(videoid=res['id'])
|
||||||
|
|
|
@ -75,15 +75,17 @@ def response(resp):
|
||||||
|
|
||||||
# get thumbnails
|
# get thumbnails
|
||||||
script = str(dom.xpath('//script[contains(., "_setImagesSrc")]')[0].text)
|
script = str(dom.xpath('//script[contains(., "_setImagesSrc")]')[0].text)
|
||||||
id = result.xpath('.//div[@class="s"]//img/@id')[0]
|
ids = result.xpath('.//div[@class="s"]//img/@id')
|
||||||
thumbnails_data = re.findall('s=\'(.*?)(?:\\\\[a-z,1-9,\\\\]+\'|\')\;var ii=\[(?:|[\'vidthumb\d+\',]+)\'' + id,
|
if len(ids) > 0:
|
||||||
script)
|
thumbnails_data = \
|
||||||
tmp = []
|
re.findall('s=\'(.*?)(?:\\\\[a-z,1-9,\\\\]+\'|\')\;var ii=\[(?:|[\'vidthumb\d+\',]+)\'' + ids[0],
|
||||||
if len(thumbnails_data) != 0:
|
script)
|
||||||
tmp = re.findall('(data:image/jpeg;base64,[a-z,A-Z,0-9,/,\+]+)', thumbnails_data[0])
|
tmp = []
|
||||||
thumbnail = ''
|
if len(thumbnails_data) != 0:
|
||||||
if len(tmp) != 0:
|
tmp = re.findall('(data:image/jpeg;base64,[a-z,A-Z,0-9,/,\+]+)', thumbnails_data[0])
|
||||||
thumbnail = tmp[-1]
|
thumbnail = ''
|
||||||
|
if len(tmp) != 0:
|
||||||
|
thumbnail = tmp[-1]
|
||||||
|
|
||||||
# append result
|
# append result
|
||||||
results.append({'url': url,
|
results.append({'url': url,
|
||||||
|
|
|
@ -67,12 +67,8 @@ def response(resp):
|
||||||
if videoid is not None:
|
if videoid is not None:
|
||||||
url = base_youtube_url + videoid
|
url = base_youtube_url + videoid
|
||||||
thumbnail = 'https://i.ytimg.com/vi/' + videoid + '/hqdefault.jpg'
|
thumbnail = 'https://i.ytimg.com/vi/' + videoid + '/hqdefault.jpg'
|
||||||
title = video.get('title', {}).get('simpleText', videoid)
|
title = get_text_from_json(video.get('title', {}))
|
||||||
description_snippet = video.get('descriptionSnippet', {})
|
content = get_text_from_json(video.get('descriptionSnippet', {}))
|
||||||
if 'runs' in description_snippet:
|
|
||||||
content = reduce(lambda a, b: a + b.get('text', ''), description_snippet.get('runs'), '')
|
|
||||||
else:
|
|
||||||
content = description_snippet.get('simpleText', '')
|
|
||||||
embedded = embedded_url.format(videoid=videoid)
|
embedded = embedded_url.format(videoid=videoid)
|
||||||
|
|
||||||
# append result
|
# append result
|
||||||
|
@ -85,3 +81,10 @@ def response(resp):
|
||||||
|
|
||||||
# return results
|
# return results
|
||||||
return results
|
return results
|
||||||
|
|
||||||
|
|
||||||
|
def get_text_from_json(element):
|
||||||
|
if 'runs' in element:
|
||||||
|
return reduce(lambda a, b: a + b.get('text', ''), element.get('runs'), '')
|
||||||
|
else:
|
||||||
|
return element.get('simpleText', '')
|
||||||
|
|
Loading…
Reference in New Issue