X-Git-Url: http://git.bitcoin.ninja/index.cgi?a=blobdiff_plain;ds=sidebyside;f=youtube_dl%2Fextractor%2Fbrightcove.py;h=14ee05f213843de58445a7f054299ead92c1c963;hb=b328295910c2d69822819450617cff2a1cf53106;hp=1c7783dcb25348b63c0cba5a62e0b9b0981cee13;hpb=24af85298ed1862ac809677e70ff59f3e9ee3234;p=youtube-dl diff --git a/youtube_dl/extractor/brightcove.py b/youtube_dl/extractor/brightcove.py index 1c7783dcb..14ee05f21 100644 --- a/youtube_dl/extractor/brightcove.py +++ b/youtube_dl/extractor/brightcove.py @@ -20,13 +20,12 @@ from ..utils import ( ExtractorError, find_xpath_attr, fix_xml_ampersands, - unescapeHTML, - unsmuggle_url, - js_to_json, float_or_none, + js_to_json, int_or_none, parse_iso8601, - extract_attributes, + unescapeHTML, + unsmuggle_url, ) @@ -357,7 +356,7 @@ class BrightcoveLegacyIE(InfoExtractor): class BrightcoveNewIE(InfoExtractor): IE_NAME = 'brightcove:new' _VALID_URL = r'https?://players\.brightcove\.net/(?P\d+)/(?P[^/]+)_(?P[^/]+)/index\.html\?.*videoId=(?P\d+)' - _TEST = { + _TESTS = [{ 'url': 'http://players.brightcove.net/929656772001/e41d32dc-ec74-459e-a845-6c69f7b724ea_default/index.html?videoId=4463358922001', 'md5': 'c8100925723840d4b0d243f7025703be', 'info_dict': { @@ -365,12 +364,30 @@ class BrightcoveNewIE(InfoExtractor): 'ext': 'mp4', 'title': 'Meet the man behind Popcorn Time', 'description': 'md5:eac376a4fe366edc70279bfb681aea16', + 'duration': 165.768, 'timestamp': 1441391203, 'upload_date': '20150904', - 'duration': 165768, 'uploader_id': '929656772001', + 'formats': 'mincount:22', + }, + }, { + # with rtmp streams + 'url': 'http://players.brightcove.net/4036320279001/5d112ed9-283f-485f-a7f9-33f42e8bc042_default/index.html?videoId=4279049078001', + 'info_dict': { + 'id': '4279049078001', + 'ext': 'mp4', + 'title': 'Titansgrave: Chapter 0', + 'description': 'Titansgrave: Chapter 0', + 'duration': 1242.058, + 'timestamp': 1433556729, + 'upload_date': '20150606', + 'uploader_id': '4036320279001', + 'formats': 'mincount:41', + }, + 'params': { + 'skip_download': True, } - } + }] @staticmethod def _extract_urls(webpage): @@ -385,10 +402,11 @@ class BrightcoveNewIE(InfoExtractor): for _, url in re.findall( r']+src=(["\'])((?:https?:)//players\.brightcove\.net/\d+/[^/]+/index\.html.+?)\1', webpage): entries.append(url) + # Look for embed_in_page embeds [2] - # According to examples from [3] it's unclear whether video id may be optional - # and what to do when it is for video_id, account_id, player_id, embed in re.findall( + # According to examples from [3] it's unclear whether video id + # may be optional and what to do when it is r'''(?sx) ]+ data-video-id=["\'](\d+)["\'][^>]*>.*? @@ -400,6 +418,7 @@ class BrightcoveNewIE(InfoExtractor): entries.append( 'http://players.brightcove.net/%s/%s_%s/index.html?videoId=%s' % (account_id, player_id, embed, video_id)) + return entries def _real_extract(self, url):