diff options
Diffstat (limited to 'youtube_dl/extractor/brightcove.py')
| -rw-r--r-- | youtube_dl/extractor/brightcove.py | 19 | 
1 files changed, 14 insertions, 5 deletions
| diff --git a/youtube_dl/extractor/brightcove.py b/youtube_dl/extractor/brightcove.py index ad22cbafd..a6920685e 100644 --- a/youtube_dl/extractor/brightcove.py +++ b/youtube_dl/extractor/brightcove.py @@ -14,6 +14,7 @@ from ..utils import (      compat_str,      compat_urllib_request,      compat_parse_qs, +    compat_urllib_parse_urlparse,      determine_ext,      ExtractorError, @@ -23,7 +24,7 @@ from ..utils import (  class BrightcoveIE(InfoExtractor): -    _VALID_URL = r'https?://.*brightcove\.com/(services|viewer).*\?(?P<query>.*)' +    _VALID_URL = r'https?://.*brightcove\.com/(services|viewer).*?\?(?P<query>.*)'      _FEDERATED_URL_TEMPLATE = 'http://c.brightcove.com/services/viewer/htmlFederated?%s'      _TESTS = [ @@ -260,11 +261,19 @@ class BrightcoveIE(InfoExtractor):              formats = []              for rend in renditions:                  url = rend['defaultURL'] +                if not url: +                    continue                  if rend['remote']: -                    # This type of renditions are served through akamaihd.net, -                    # but they don't use f4m manifests -                    url = url.replace('control/', '') + '?&v=3.3.0&fp=13&r=FEEFJ&g=RTSJIMBMPFPB' -                    ext = 'flv' +                    url_comp = compat_urllib_parse_urlparse(url) +                    if url_comp.path.endswith('.m3u8'): +                        formats.extend( +                            self._extract_m3u8_formats(url, info['id'], 'mp4')) +                        continue +                    elif 'akamaihd.net' in url_comp.netloc: +                        # This type of renditions are served through +                        # akamaihd.net, but they don't use f4m manifests +                        url = url.replace('control/', '') + '?&v=3.3.0&fp=13&r=FEEFJ&g=RTSJIMBMPFPB' +                        ext = 'flv'                  else:                      ext = determine_ext(url)                  size = rend.get('size') | 
