[videolecturesnet] Check http format URLs (Closes #4968)
authorSergey M? <dstftw@gmail.com>
Tue, 17 Feb 2015 16:34:29 +0000 (22:34 +0600)
committerSergey M․ <dstftw@gmail.com>
Tue, 17 Feb 2015 16:35:27 +0000 (22:35 +0600)
youtube_dl/extractor/videolecturesnet.py

index ebd2a3dca3ac0e7bd812226c80c356a19b3677ab..1ec5298e9e5102a1a5a732898239cda84dde23df 100644 (file)
@@ -49,15 +49,30 @@ class VideoLecturesNetIE(InfoExtractor):
         thumbnail = (
             None if thumbnail_el is None else thumbnail_el.attrib.get('src'))
 
-        formats = [{
-            'url': v.attrib['src'],
-            'width': int_or_none(v.attrib.get('width')),
-            'height': int_or_none(v.attrib.get('height')),
-            'filesize': int_or_none(v.attrib.get('size')),
-            'tbr': int_or_none(v.attrib.get('systemBitrate')) / 1000.0,
-            'ext': v.attrib.get('ext'),
-        } for v in switch.findall('./video')
-            if v.attrib.get('proto') == 'http']
+        formats = []
+        for v in switch.findall('./video'):
+            proto = v.attrib.get('proto')
+            if not proto in ['http', 'rtmp']:
+                continue
+            f = {
+                'width': int_or_none(v.attrib.get('width')),
+                'height': int_or_none(v.attrib.get('height')),
+                'filesize': int_or_none(v.attrib.get('size')),
+                'tbr': int_or_none(v.attrib.get('systemBitrate')) / 1000.0,
+                'ext': v.attrib.get('ext'),
+            }
+            src = v.attrib['src']
+            if proto == 'http':
+                if self._is_valid_url(src, video_id):
+                    f['url'] = src
+                    formats.append(f)
+            elif proto == 'rtmp':
+                f.update({
+                    'url': v.attrib['streamer'],
+                    'play_path': src,
+                })
+                formats.append(f)
+        self._sort_formats(formats)
 
         return {
             'id': video_id,