[screenwavemedia] Make more robust
authorSergey M․ <dstftw@gmail.com>
Sun, 16 Aug 2015 14:18:15 +0000 (20:18 +0600)
committerSergey M․ <dstftw@gmail.com>
Sun, 16 Aug 2015 14:18:15 +0000 (20:18 +0600)
youtube_dl/extractor/screenwavemedia.py

index 78b068be2828b40e2f8a6c666f2176b260521b9b..220d39078fab15e0e4191a1d1a33b162f342ffb8 100644 (file)
@@ -51,19 +51,38 @@ class ScreenwaveMediaIE(InfoExtractor):
                     )
                 )
             ),
-            video_id
+            video_id, fatal=False
         )
 
+        # Fallback to hardcoded sources if JS changes again
+        if not sources:
+            sources = [{
+                'file': 'http://%s/vod/%s_%s.mp4' % (videoserver, video_id, format_id),
+                'type': 'mp4',
+                'label': format_label,
+            } for format_id, format_label in (
+                ('low', '144p Low'), ('med', '160p Med'), ('high', '360p High'), ('hd1', '720p HD1'))]
+            sources.append({
+                'file': 'http://%s/vod/smil:%s.smil/playlist.m3u8' % (videoserver, video_id),
+                'type': 'hls',
+            })
+
         formats = []
         for source in sources:
             if source['type'] == 'hls':
                 formats.extend(self._extract_m3u8_formats(source['file'], video_id))
             else:
+                file_ = source.get('file')
+                if not file_:
+                    continue
                 format_label = source.get('label')
+                format_id = self._search_regex(
+                    r'_(.+?)\.[^.]+$', file_, 'format id', default=None)
                 height = int_or_none(self._search_regex(
                     r'^(\d+)[pP]', format_label, 'height', default=None))
                 formats.append({
                     'url': source['file'],
+                    'format_id': format_id,
                     'format': format_label,
                     'ext': source.get('type'),
                     'height': height,