diff options
| -rw-r--r-- | ChangeLog | 7 | ||||
| -rw-r--r-- | youtube_dl/extractor/brightcove.py | 20 | ||||
| -rw-r--r-- | youtube_dl/extractor/generic.py | 16 | 
3 files changed, 40 insertions, 3 deletions
| @@ -1,3 +1,10 @@ +version <unreleased> + +Extractors ++ [generic] Support Brightcove videos in <iframe> (#12482) ++ [brightcove] Support URLs with bcpid instead of playerID (#12482) + +  version 2017.04.17  Extractors diff --git a/youtube_dl/extractor/brightcove.py b/youtube_dl/extractor/brightcove.py index c4fd96b3d..a2db705b0 100644 --- a/youtube_dl/extractor/brightcove.py +++ b/youtube_dl/extractor/brightcove.py @@ -131,6 +131,12 @@ class BrightcoveLegacyIE(InfoExtractor):              },              'playlist_mincount': 10,          }, +        { +            # playerID inferred from bcpid +            # from http://www.un.org/chinese/News/story.asp?NewsID=27724 +            'url': 'https://link.brightcove.com/services/player/bcpid1722935254001/?bctid=5360463607001&autoStart=false&secureConnections=true&width=650&height=350', +            'only_matching': True,  # Tested in GenericIE +        }      ]      FLV_VCODECS = {          1: 'SORENSON', @@ -266,9 +272,13 @@ class BrightcoveLegacyIE(InfoExtractor):          if matches:              return list(filter(None, [cls._build_brighcove_url(m) for m in matches])) -        return list(filter(None, [ -            cls._build_brighcove_url_from_js(custom_bc) -            for custom_bc in re.findall(r'(customBC\.createVideo\(.+?\);)', webpage)])) +        matches = re.findall(r'(customBC\.createVideo\(.+?\);)', webpage) +        if matches: +            return list(filter(None, [ +                cls._build_brighcove_url_from_js(custom_bc) +                for custom_bc in matches])) +        return [url for _, url in re.findall( +            r'<iframe[^>]+src=([\'"])((?:https?:)?//link\.brightcove\.com/services/player/(?!\1).+)\1', webpage)]      def _real_extract(self, url):          url, smuggled_data = unsmuggle_url(url, {}) @@ -285,6 +295,10 @@ class BrightcoveLegacyIE(InfoExtractor):          if videoPlayer:              # We set the original url as the default 'Referer' header              referer = smuggled_data.get('Referer', url) +            if 'playerID' not in query: +                mobj = re.search(r'/bcpid(\d+)', url) +                if mobj is not None: +                    query['playerID'] = [mobj.group(1)]              return self._get_video_info(                  videoPlayer[0], query, referer=referer)          elif 'playerKey' in query: diff --git a/youtube_dl/extractor/generic.py b/youtube_dl/extractor/generic.py index b22c3122a..67184bc5d 100644 --- a/youtube_dl/extractor/generic.py +++ b/youtube_dl/extractor/generic.py @@ -431,6 +431,22 @@ class GenericIE(InfoExtractor):              },          },          { +            # Brightcove video in <iframe> +            'url': 'http://www.un.org/chinese/News/story.asp?NewsID=27724', +            'md5': '36d74ef5e37c8b4a2ce92880d208b968', +            'info_dict': { +                'id': '5360463607001', +                'ext': 'mp4', +                'title': '叙利亚失明儿童在废墟上演唱《心跳》  呼吁获得正常童年生活', +                'description': '联合国儿童基金会中东和北非区域大使、作曲家扎德·迪拉尼(Zade Dirani)在3月15日叙利亚冲突爆发7周年纪念日之际发布了为叙利亚谱写的歌曲《心跳》(HEARTBEAT),为受到六年冲突影响的叙利亚儿童发出强烈呐喊,呼吁世界做出共同努力,使叙利亚儿童重新获得享有正常童年生活的权利。', +                'uploader': 'United Nations', +                'uploader_id': '1362235914001', +                'timestamp': 1489593889, +                'upload_date': '20170315', +            }, +            'add_ie': ['BrightcoveLegacy'], +        }, +        {              # Brightcove with alternative playerID key              'url': 'http://www.nature.com/nmeth/journal/v9/n7/fig_tab/nmeth.2062_SV1.html',              'info_dict': { | 
