Merge branch 'cliphunter' of https://github.com/pornophage/youtube-dl
[youtube-dl] / youtube_dl / extractor / brightcove.py
index b873dc0d4487565564d2eb1f262ab9cdac633139..443294e6f0550f67ca1802a52d012ca9b7ecfecf 100644 (file)
@@ -90,9 +90,12 @@ class BrightcoveIE(InfoExtractor):
         object_doc = xml.etree.ElementTree.fromstring(object_str)
 
         fv_el = find_xpath_attr(object_doc, './param', 'name', 'flashVars')
-        flashvars = dict(
-            (k, v[0])
-            for k, v in compat_parse_qs(fv_el.attrib['value']).items())
+        if fv_el is not None:
+            flashvars = dict(
+                (k, v[0])
+                for k, v in compat_parse_qs(fv_el.attrib['value']).items())
+        else:
+            flashvars = {}
 
         def find_param(name):
             if name in flashvars:
@@ -131,7 +134,7 @@ class BrightcoveIE(InfoExtractor):
         m_brightcove = re.search(
             r'''(?sx)<object
             (?:
-                :[^>]+?class=([\'"])[^>]*?BrightcoveExperience.*?\1 |
+                [^>]+?class=([\'"])[^>]*?BrightcoveExperience.*?\1 |
                 [^>]*?>\s*<param\s+name="movie"\s+value="https?://[^/]*brightcove\.com/
             ).+?</object>''',
             webpage)
@@ -195,7 +198,7 @@ class BrightcoveIE(InfoExtractor):
     def _extract_video_info(self, video_info):
         info = {
             'id': compat_str(video_info['id']),
-            'title': video_info['displayName'],
+            'title': video_info['displayName'].strip(),
             'description': video_info.get('shortDescription'),
             'thumbnail': video_info.get('videoStillURL') or video_info.get('thumbnailURL'),
             'uploader': video_info.get('publisherName'),
@@ -230,6 +233,6 @@ class BrightcoveIE(InfoExtractor):
                 else:
                     return ad_info
 
-        if 'url' not in info:
+        if 'url' not in info and not info.get('formats'):
             raise ExtractorError('Unable to extract video url for %s' % info['id'])
         return info