diff options
Diffstat (limited to 'youtube_dl/extractor/brightcove.py')
| -rw-r--r-- | youtube_dl/extractor/brightcove.py | 18 | 
1 files changed, 12 insertions, 6 deletions
diff --git a/youtube_dl/extractor/brightcove.py b/youtube_dl/extractor/brightcove.py index d8c35465a..66fe0ac9a 100644 --- a/youtube_dl/extractor/brightcove.py +++ b/youtube_dl/extractor/brightcove.py @@ -75,16 +75,22 @@ class BrightcoveIE(InfoExtractor):          params = {'flashID': object_doc.attrib['id'],                    'playerID': find_xpath_attr(object_doc, './param', 'name', 'playerID').attrib['value'],                    } -        playerKey = find_xpath_attr(object_doc, './param', 'name', 'playerKey') +        def find_param(name): +            node = find_xpath_attr(object_doc, './param', 'name', name) +            if node is not None: +                return node.attrib['value'] +            return None +        playerKey = find_param('playerKey')          # Not all pages define this value          if playerKey is not None: -            params['playerKey'] = playerKey.attrib['value'] -        videoPlayer = find_xpath_attr(object_doc, './param', 'name', '@videoPlayer') +            params['playerKey'] = playerKey +        # The three fields hold the id of the video +        videoPlayer = find_param('@videoPlayer') or find_param('videoId') or find_param('videoID')          if videoPlayer is not None: -            params['@videoPlayer'] = videoPlayer.attrib['value'] -        linkBase = find_xpath_attr(object_doc, './param', 'name', 'linkBaseURL') +            params['@videoPlayer'] = videoPlayer +        linkBase = find_param('linkBaseURL')          if linkBase is not None: -            params['linkBaseURL'] = linkBase.attrib['value'] +            params['linkBaseURL'] = linkBase          data = compat_urllib_parse.urlencode(params)          return cls._FEDERATED_URL_TEMPLATE % data  | 
