[dispeak] DRY and update tests (closes #28970)
authorSergey M․ <dstftw@gmail.com>
Tue, 4 May 2021 19:30:42 +0000 (02:30 +0700)
committerSergey M․ <dstftw@gmail.com>
Tue, 4 May 2021 19:30:42 +0000 (02:30 +0700)
youtube_dl/extractor/dispeak.py

index e776ac00ca28c6b6c537cd38959349f7dc918a68..276fd4b09285836d4a551feecbb449b4b1ac3193 100644 (file)
@@ -33,13 +33,17 @@ class DigitallySpeakingIE(InfoExtractor):
         'url': 'http://sevt.dispeak.com/ubm/gdc/eur10/xml/11256_1282118587281VNIT.xml',
         'only_matching': True,
     }, {
-        # From https://gdcvault.com/play/1016624
+        # From https://gdcvault.com/play/1016624, empty speakerVideo
         'url': 'https://sevt.dispeak.com/ubm/gdc/online12/xml/201210-822101_1349794556671DDDD.xml',
         'info_dict': {
             'id': '201210-822101_1349794556671DDDD',
             'ext': 'flv',
             'title': 'Pre-launch - Preparing to Take the Plunge',
         },
+    }, {
+        # From http://www.gdcvault.com/play/1014846/Conference-Keynote-Shigeru, empty slideVideo
+        'url': 'http://events.digitallyspeaking.com/gdc/project25/xml/p25-miyamoto1999_1282467389849HSVB.xml',
+        'only_matching': True,
     }]
 
     def _parse_mp4(self, metadata):
@@ -92,27 +96,19 @@ class DigitallySpeakingIE(InfoExtractor):
                 'vcodec': 'none',
                 'format_id': audio.get('code'),
             })
-        slide_video_path = xpath_text(metadata, './slideVideo')
-        if slide_video_path:
-            formats.append({
-                'url': 'rtmp://%s/ondemand?ovpfv=1.1' % akamai_url,
-                'play_path': remove_end(slide_video_path, '.flv'),
-                'ext': 'flv',
-                'format_note': 'slide deck video',
-                'quality': -2,
-                'preference': -2,
-                'format_id': 'slides',
-            })
-        speaker_video_path = xpath_text(metadata, './speakerVideo')
-        if speaker_video_path:
+        for video_key, format_id, preference in (
+                ('slide', 'slides', -2), ('speaker', 'speaker', -1)):
+            video_path = xpath_text(metadata, './%sVideo' % video_key)
+            if not video_path:
+                continue
             formats.append({
                 'url': 'rtmp://%s/ondemand?ovpfv=1.1' % akamai_url,
-                'play_path': remove_end(speaker_video_path, '.flv'),
+                'play_path': remove_end(video_path, '.flv'),
                 'ext': 'flv',
-                'format_note': 'speaker video',
-                'quality': -1,
-                'preference': -1,
-                'format_id': 'speaker',
+                'format_note': '%s video' % video_key,
+                'quality': preference,
+                'preference': preference,
+                'format_id': format_id,
             })
         return formats