on master help sign in
Merge pull request #1658 from dalf/video-fixes
1bed39eAlexandre Flament
searx/engines/dailymotion.py+2−2
@@ -15,7 +15,7 @@
15from json import loads
15from json import loads
16from datetime import datetime
16from datetime import datetime
17from searx.url_utils import urlencode
17from searx.url_utils import urlencode
18−from searx.utils import match_language
18+from searx.utils import match_language, html_to_text
19
19
20# engine dependent config
20# engine dependent config
21categories = ['videos']
21categories = ['videos']
@@ -59,7 +59,7 @@ def response(resp):
59 for res in search_res['list']:
59 for res in search_res['list']:
60 title = res['title']
60 title = res['title']
61 url = res['url']
61 url = res['url']
62− content = res['description']
62+ content = html_to_text(res['description'])
63 thumbnail = res['thumbnail_360_url']
63 thumbnail = res['thumbnail_360_url']
64 publishedDate = datetime.fromtimestamp(res['created_time'], None)
64 publishedDate = datetime.fromtimestamp(res['created_time'], None)
65 embedded = embedded_url.format(videoid=res['id'])
65 embedded = embedded_url.format(videoid=res['id'])
searx/engines/google_videos.py+11−9
@@ -75,15 +75,17 @@ def response(resp):
75
75
76 # get thumbnails
76 # get thumbnails
77 script = str(dom.xpath('//script[contains(., "_setImagesSrc")]')[0].text)
77 script = str(dom.xpath('//script[contains(., "_setImagesSrc")]')[0].text)
78− id = result.xpath('.//div[@class="s"]//img/@id')[0]
78+ ids = result.xpath('.//div[@class="s"]//img/@id')
79+ if len(ids) > 0:
80+ thumbnails_data = \
79− thumbnails_data = re.findall('s=\'(.*?)(?:\\\\[a-z,1-9,\\\\]+\'|\')\;var ii=\[(?:|[\'vidthumb\d+\',]+)\'' + id,
81+ re.findall('s=\'(.*?)(?:\\\\[a-z,1-9,\\\\]+\'|\')\;var ii=\[(?:|[\'vidthumb\d+\',]+)\'' + ids[0],
80− script)
82+ script)
81− tmp = []
83+ tmp = []
82− if len(thumbnails_data) != 0:
84+ if len(thumbnails_data) != 0:
83− tmp = re.findall('(data:image/jpeg;base64,[a-z,A-Z,0-9,/,\+]+)', thumbnails_data[0])
85+ tmp = re.findall('(data:image/jpeg;base64,[a-z,A-Z,0-9,/,\+]+)', thumbnails_data[0])
84− thumbnail = ''
86+ thumbnail = ''
85− if len(tmp) != 0:
87+ if len(tmp) != 0:
86− thumbnail = tmp[-1]
88+ thumbnail = tmp[-1]
87
89
88 # append result
90 # append result
89 results.append({'url': url,
91 results.append({'url': url,
searx/engines/youtube_noapi.py+9−6
@@ -67,12 +67,8 @@ def response(resp):
67 if videoid is not None:
67 if videoid is not None:
68 url = base_youtube_url + videoid
68 url = base_youtube_url + videoid
69 thumbnail = 'https://i.ytimg.com/vi/' + videoid + '/hqdefault.jpg'
69 thumbnail = 'https://i.ytimg.com/vi/' + videoid + '/hqdefault.jpg'
70− title = video.get('title', {}).get('simpleText', videoid)
70+ title = get_text_from_json(video.get('title', {}))
71− description_snippet = video.get('descriptionSnippet', {})
71+ content = get_text_from_json(video.get('descriptionSnippet', {}))
72− if 'runs' in description_snippet:
73− content = reduce(lambda a, b: a + b.get('text', ''), description_snippet.get('runs'), '')
74− else:
75− content = description_snippet.get('simpleText', '')
76 embedded = embedded_url.format(videoid=videoid)
72 embedded = embedded_url.format(videoid=videoid)
77
73
78 # append result
74 # append result
@@ -85,3 +81,10 @@ def response(resp):
85
81
86 # return results
82 # return results
87 return results
83 return results
84+
85+
86+def get_text_from_json(element):
87+ if 'runs' in element:
88+ return reduce(lambda a, b: a + b.get('text', ''), element.get('runs'), '')
89+ else:
90+ return element.get('simpleText', '')