Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4e0f079a authored by Dalf's avatar Dalf
Browse files

[fix] youtube_noapi : don't crash when there is no content

parent 8ce60438
Loading
Loading
Loading
Loading
+33 −17
Original line number Diff line number Diff line
@@ -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),
@@ -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)