'Return a list of all Brightcove URLs from the webpage'

@classmethod
def _extract_brightcove_urls(cls, webpage):

    url_m = re.search(u'(?x)\n                                                                <meta\\s+\n                                                                                (?:property|itemprop)=([\\\'"])(?:og:video|embedURL)\\1[^>]+\n                                                                                content=([\\\'"])(?P<url>https?://(?:secure|c)\\.brightcove.com/(?:(?!\\2).)+)\\2\n                                                ', webpage)
    if url_m:
        url = unescapeHTML(url_m.group(u'url'))
        if ((u'playerKey' in url) or (u'videoId' in url) or (u'idVideo' in url)):
            return [url]
    matches = re.findall(u'(?sx)<object\n                                                (?:\n                                                                [^>]+?class=[\\\'"][^>]*?BrightcoveExperience.*?[\\\'"]    |\n                                                                [^>]*?>\\s*<param\\s+name="movie"\\s+value="https?://[^/]*brightcove\\.com/\n                                                ).+?>\\s*</object>', webpage)
    if matches:
        return list(filter(None, [cls._build_brighcove_url(m) for m in matches]))
    matches = re.findall(u'(customBC\\.createVideo\\(.+?\\);)', webpage)
    if matches:
        return list(filter(None, [cls._build_brighcove_url_from_js(custom_bc) for custom_bc in matches]))
    return [src for (_, src) in re.findall(u'<iframe[^>]+src=([\\\'"])((?:https?:)?//link\\.brightcove\\.com/services/player/(?!\\1).+)\\1', webpage)]
