Loading searx/engines/youtube_noapi.py +33 −17 Original line number Diff line number Diff line Loading @@ -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"]' # 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 def request(query, params): params['url'] = search_url.format(query=quote_plus(query), Loading @@ -50,13 +66,13 @@ def response(resp): # parse results 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 thumbnail = 'https://i.ytimg.com/vi/' + videoid + '/hqdefault.jpg' title = extract_text(result.xpath(title_xpath)[0]) content = extract_text(result.xpath(content_xpath)[0]) title = extract_text_from_dom(result, title_xpath) or videoid content = extract_text_from_dom(result, content_xpath) embedded = embedded_url.format(videoid=videoid) Loading Loading
searx/engines/youtube_noapi.py +33 −17 Original line number Diff line number Diff line Loading @@ -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"]' # 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 def request(query, params): params['url'] = search_url.format(query=quote_plus(query), Loading @@ -50,13 +66,13 @@ def response(resp): # parse results 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 thumbnail = 'https://i.ytimg.com/vi/' + videoid + '/hqdefault.jpg' title = extract_text(result.xpath(title_xpath)[0]) content = extract_text(result.xpath(content_xpath)[0]) title = extract_text_from_dom(result, title_xpath) or videoid content = extract_text_from_dom(result, content_xpath) embedded = embedded_url.format(videoid=videoid) Loading