]> jfr.im git - yt-dlp.git/blobdiff - yt_dlp/extractor/sonyliv.py
[extractor] Better error message for DRM (#729)
[yt-dlp.git] / yt_dlp / extractor / sonyliv.py
index ec7b4f37f69b757b7c2ec46ba1d91779a5fa6bf0..c3ed442753da2aa57cd6659bc9b3ab8886d2d05b 100644 (file)
@@ -83,7 +83,7 @@ def _real_extract(self, url):
         content = self._call_api(
             '1.5', 'IN/CONTENT/VIDEOURL/VOD/' + video_id, video_id)
         if not self.get_param('allow_unplayable_formats') and content.get('isEncrypted'):
-            raise ExtractorError('This video is DRM protected.', expected=True)
+            self.report_drm(video_id)
         dash_url = content['videoURL']
         headers = {
             'x-playback-session-id': '%s-%d' % (uuid.uuid4().hex, time.time() * 1000)
@@ -100,7 +100,14 @@ def _real_extract(self, url):
         metadata = self._call_api(
             '1.6', 'IN/DETAIL/' + video_id, video_id)['containers'][0]['metadata']
         title = metadata['episodeTitle']
-
+        subtitles = {}
+        for sub in content.get('subtitle', []):
+            sub_url = sub.get('subtitleUrl')
+            if not sub_url:
+                continue
+            subtitles.setdefault(sub.get('subtitleLanguageName', 'ENG'), []).append({
+                'url': sub_url,
+            })
         return {
             'id': video_id,
             'title': title,
@@ -113,6 +120,7 @@ def _real_extract(self, url):
             'series': metadata.get('title'),
             'episode_number': int_or_none(metadata.get('episodeNumber')),
             'release_year': int_or_none(metadata.get('year')),
+            'subtitles': subtitles,
         }