diff options
| -rw-r--r-- | youtube_dl/extractor/brightcove.py | 38 | 
1 files changed, 32 insertions, 6 deletions
diff --git a/youtube_dl/extractor/brightcove.py b/youtube_dl/extractor/brightcove.py index 6b98bd278..b550fad25 100644 --- a/youtube_dl/extractor/brightcove.py +++ b/youtube_dl/extractor/brightcove.py @@ -15,6 +15,7 @@ from ..utils import (      compat_urllib_request,      compat_parse_qs, +    determine_ext,      ExtractorError,      unsmuggle_url,      unescapeHTML, @@ -70,7 +71,20 @@ class BrightcoveIE(InfoExtractor):                  'description': 'md5:363109c02998fee92ec02211bd8000df',                  'uploader': 'National Ballet of Canada',              }, -        } +        }, +        { +            # test flv videos served by akamaihd.net +            # From http://www.redbull.com/en/bike/stories/1331655643987/replay-uci-dh-world-cup-2014-from-fort-william +            'url': 'http://c.brightcove.com/services/viewer/htmlFederated?%40videoPlayer=ref%3ABC2996102916001&linkBaseURL=http%3A%2F%2Fwww.redbull.com%2Fen%2Fbike%2Fvideos%2F1331655630249%2Freplay-uci-fort-william-2014-dh&playerKey=AQ%7E%7E%2CAAAApYJ7UqE%7E%2Cxqr_zXk0I-zzNndy8NlHogrCb5QdyZRf&playerID=1398061561001#__youtubedl_smuggle=%7B%22Referer%22%3A+%22http%3A%2F%2Fwww.redbull.com%2Fen%2Fbike%2Fstories%2F1331655643987%2Freplay-uci-dh-world-cup-2014-from-fort-william%22%7D', +            # The md5 checksum changes on each download +            'info_dict': { +                'id': '2996102916001', +                'ext': 'flv', +                'title': 'UCI MTB World Cup 2014: Fort William, UK - Downhill Finals', +                'uploader': 'Red Bull TV', +                'description': 'UCI MTB World Cup 2014: Fort William, UK - Downhill Finals', +            }, +        },      ]      @classmethod @@ -220,11 +234,23 @@ class BrightcoveIE(InfoExtractor):          renditions = video_info.get('renditions')          if renditions:              renditions = sorted(renditions, key=lambda r: r['size']) -            info['formats'] = [{ -                'url': rend['defaultURL'], -                'height': rend.get('frameHeight'), -                'width': rend.get('frameWidth'), -            } for rend in renditions] +            formats = [] +            for rend in renditions: +                url = rend['defaultURL'] +                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' +                else: +                    ext = determine_ext(url) +                formats.append({ +                    'url': url, +                    'ext': ext, +                    'height': rend.get('frameHeight'), +                    'width': rend.get('frameWidth'), +                }) +            info['formats'] = formats          elif video_info.get('FLVFullLengthURL') is not None:              info.update({                  'url': video_info['FLVFullLengthURL'],  | 
