]> jfr.im git - yt-dlp.git/commitdiff
[go,viu] Extract subtitles from the m3u8 manifest (#3219)
authorFelix S <redacted>
Sun, 27 Mar 2022 09:35:14 +0000 (09:35 +0000)
committerGitHub <redacted>
Sun, 27 Mar 2022 09:35:14 +0000 (02:35 -0700)
Authored by: fstirlitz

yt_dlp/extractor/go.py
yt_dlp/extractor/viu.py

index 2ccc6df21e2199d15bb477171aebba953b375184..f92e16600ea6893681f92f6ee5494164e4557303 100644 (file)
@@ -217,6 +217,7 @@ def _real_extract(self, url):
         title = video_data['title']
 
         formats = []
+        subtitles = {}
         for asset in video_data.get('assets', {}).get('asset', []):
             asset_url = asset.get('value')
             if not asset_url:
@@ -256,8 +257,10 @@ def _real_extract(self, url):
                     error_message = ', '.join([error['message'] for error in errors])
                     raise ExtractorError('%s said: %s' % (self.IE_NAME, error_message), expected=True)
                 asset_url += '?' + entitlement['uplynkData']['sessionKey']
-                formats.extend(self._extract_m3u8_formats(
-                    asset_url, video_id, 'mp4', m3u8_id=format_id or 'hls', fatal=False))
+                fmts, subs = self._extract_m3u8_formats_and_subtitles(
+                    asset_url, video_id, 'mp4', m3u8_id=format_id or 'hls', fatal=False)
+                formats.extend(fmts)
+                self._merge_subtitles(subs, target=subtitles)
             else:
                 f = {
                     'format_id': format_id,
@@ -281,7 +284,6 @@ def _real_extract(self, url):
                 formats.append(f)
         self._sort_formats(formats)
 
-        subtitles = {}
         for cc in video_data.get('closedcaption', {}).get('src', []):
             cc_url = cc.get('value')
             if not cc_url:
index abd553f1870ce3dae196ecb52a7a731ff01b08f5..b0a1fca6824c13a06fc54c220645a9a796c4a205 100644 (file)
@@ -88,10 +88,9 @@ def _real_extract(self, url):
             #     r'(/hlsc_)[a-z]+(\d+\.m3u8)',
             #     r'\1whe\2', video_data['href'])
             m3u8_url = video_data['href']
-        formats = self._extract_m3u8_formats(m3u8_url, video_id, 'mp4')
+        formats, subtitles = self._extract_m3u8_formats_and_subtitles(m3u8_url, video_id, 'mp4')
         self._sort_formats(formats)
 
-        subtitles = {}
         for key, value in video_data.items():
             mobj = re.match(r'^subtitle_(?P<lang>[^_]+)_(?P<ext>(vtt|srt))', key)
             if not mobj: