mirror of
https://github.com/searxng/searxng
synced 2024-11-09 01:10:26 +00:00
[fix] youtube_noapi : don't crash when there is no content
This commit is contained in:
parent
8ce6043859
commit
4e0f079a8c
@ -34,6 +34,22 @@ title_xpath = './/div[@class="yt-lockup-content"]/h3/a'
|
|||||||
content_xpath = './/div[@class="yt-lockup-content"]/div[@class="yt-lockup-description yt-ui-ellipsis yt-ui-ellipsis-2"]'
|
content_xpath = './/div[@class="yt-lockup-content"]/div[@class="yt-lockup-description yt-ui-ellipsis yt-ui-ellipsis-2"]'
|
||||||
|
|
||||||
|
|
||||||
|
# get element in list or default value
|
||||||
|
def list_get(a_list, index, default=None):
|
||||||
|
if len(a_list) > index:
|
||||||
|
return a_list[index]
|
||||||
|
else:
|
||||||
|
return default
|
||||||
|
|
||||||
|
|
||||||
|
# returns extract_text on the first result selected by the xpath or None
|
||||||
|
def extract_text_from_dom(result, xpath):
|
||||||
|
r = result.xpath(xpath)
|
||||||
|
if len(r) > 0:
|
||||||
|
return extract_text(r[0])
|
||||||
|
return None
|
||||||
|
|
||||||
|
|
||||||
# do search-request
|
# do search-request
|
||||||
def request(query, params):
|
def request(query, params):
|
||||||
params['url'] = search_url.format(query=quote_plus(query),
|
params['url'] = search_url.format(query=quote_plus(query),
|
||||||
@ -50,13 +66,13 @@ def response(resp):
|
|||||||
|
|
||||||
# parse results
|
# parse results
|
||||||
for result in dom.xpath(results_xpath):
|
for result in dom.xpath(results_xpath):
|
||||||
videoid = result.xpath('@data-context-item-id')[0]
|
videoid = list_get(result.xpath('@data-context-item-id'), 0)
|
||||||
|
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 = extract_text(result.xpath(title_xpath)[0])
|
title = extract_text_from_dom(result, title_xpath) or videoid
|
||||||
content = extract_text(result.xpath(content_xpath)[0])
|
content = extract_text_from_dom(result, content_xpath)
|
||||||
|
|
||||||
embedded = embedded_url.format(videoid=videoid)
|
embedded = embedded_url.format(videoid=videoid)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user