mirror of
https://github.com/yt-dlp/yt-dlp.git
synced 2024-12-22 06:00:00 +00:00
[extractor/common] Extend _extract_akamai_formats to also extract subtitle tracks
This commit is contained in:
parent
fd76a14259
commit
f6a1d69a87
1 changed files with 14 additions and 3 deletions
|
@ -3023,7 +3023,16 @@ def _media_formats(src, cur_media_type, type_info={}):
|
||||||
entries.append(media_info)
|
entries.append(media_info)
|
||||||
return entries
|
return entries
|
||||||
|
|
||||||
def _extract_akamai_formats(self, manifest_url, video_id, hosts={}):
|
def _extract_akamai_formats(self, *args, **kwargs):
|
||||||
|
fmts, subs = self._extract_akamai_formats_and_subtitles(*args, **kwargs)
|
||||||
|
if subs:
|
||||||
|
self.report_warning(bug_reports_message(
|
||||||
|
"Ignoring subtitle tracks found in the manifests; "
|
||||||
|
"if any subtitle tracks are missing,"
|
||||||
|
))
|
||||||
|
return fmts
|
||||||
|
|
||||||
|
def _extract_akamai_formats_and_subtitles(self, manifest_url, video_id, hosts={}):
|
||||||
signed = 'hdnea=' in manifest_url
|
signed = 'hdnea=' in manifest_url
|
||||||
if not signed:
|
if not signed:
|
||||||
# https://learn.akamai.com/en-us/webhelp/media-services-on-demand/stream-packaging-user-guide/GUID-BE6C0F73-1E06-483B-B0EA-57984B91B7F9.html
|
# https://learn.akamai.com/en-us/webhelp/media-services-on-demand/stream-packaging-user-guide/GUID-BE6C0F73-1E06-483B-B0EA-57984B91B7F9.html
|
||||||
|
@ -3032,6 +3041,7 @@ def _extract_akamai_formats(self, manifest_url, video_id, hosts={}):
|
||||||
'', manifest_url).strip('?')
|
'', manifest_url).strip('?')
|
||||||
|
|
||||||
formats = []
|
formats = []
|
||||||
|
subtitles = {}
|
||||||
|
|
||||||
hdcore_sign = 'hdcore=3.7.0'
|
hdcore_sign = 'hdcore=3.7.0'
|
||||||
f4m_url = re.sub(r'(https?://[^/]+)/i/', r'\1/z/', manifest_url).replace('/master.m3u8', '/manifest.f4m')
|
f4m_url = re.sub(r'(https?://[^/]+)/i/', r'\1/z/', manifest_url).replace('/master.m3u8', '/manifest.f4m')
|
||||||
|
@ -3050,10 +3060,11 @@ def _extract_akamai_formats(self, manifest_url, video_id, hosts={}):
|
||||||
hls_host = hosts.get('hls')
|
hls_host = hosts.get('hls')
|
||||||
if hls_host:
|
if hls_host:
|
||||||
m3u8_url = re.sub(r'(https?://)[^/]+', r'\1' + hls_host, m3u8_url)
|
m3u8_url = re.sub(r'(https?://)[^/]+', r'\1' + hls_host, m3u8_url)
|
||||||
m3u8_formats = self._extract_m3u8_formats(
|
m3u8_formats, m3u8_subtitles = self._extract_m3u8_formats_and_subtitles(
|
||||||
m3u8_url, video_id, 'mp4', 'm3u8_native',
|
m3u8_url, video_id, 'mp4', 'm3u8_native',
|
||||||
m3u8_id='hls', fatal=False)
|
m3u8_id='hls', fatal=False)
|
||||||
formats.extend(m3u8_formats)
|
formats.extend(m3u8_formats)
|
||||||
|
subtitles = self._merge_subtitles(subtitles, m3u8_subtitles)
|
||||||
|
|
||||||
http_host = hosts.get('http')
|
http_host = hosts.get('http')
|
||||||
if http_host and m3u8_formats and not signed:
|
if http_host and m3u8_formats and not signed:
|
||||||
|
@ -3077,7 +3088,7 @@ def _extract_akamai_formats(self, manifest_url, video_id, hosts={}):
|
||||||
formats.append(http_f)
|
formats.append(http_f)
|
||||||
i += 1
|
i += 1
|
||||||
|
|
||||||
return formats
|
return formats, subtitles
|
||||||
|
|
||||||
def _extract_wowza_formats(self, url, video_id, m3u8_entry_protocol='m3u8_native', skip_protocols=[]):
|
def _extract_wowza_formats(self, url, video_id, m3u8_entry_protocol='m3u8_native', skip_protocols=[]):
|
||||||
query = compat_urlparse.urlparse(url).query
|
query = compat_urlparse.urlparse(url).query
|
||||||
|
|
Loading…
Reference in a new issue