mirror of
https://github.com/yt-dlp/yt-dlp.git
synced 2024-11-02 17:22:31 +01:00
[internetvideoarchive] extract all formats
This commit is contained in:
parent
919cf1a62f
commit
0def758782
@ -1163,13 +1163,6 @@ def _extract_m3u8_formats(self, m3u8_url, video_id, ext=None,
|
|||||||
m3u8_id=None, note=None, errnote=None,
|
m3u8_id=None, note=None, errnote=None,
|
||||||
fatal=True, live=False):
|
fatal=True, live=False):
|
||||||
|
|
||||||
formats = [self._m3u8_meta_format(m3u8_url, ext, preference, m3u8_id)]
|
|
||||||
|
|
||||||
format_url = lambda u: (
|
|
||||||
u
|
|
||||||
if re.match(r'^https?://', u)
|
|
||||||
else compat_urlparse.urljoin(m3u8_url, u))
|
|
||||||
|
|
||||||
res = self._download_webpage_handle(
|
res = self._download_webpage_handle(
|
||||||
m3u8_url, video_id,
|
m3u8_url, video_id,
|
||||||
note=note or 'Downloading m3u8 information',
|
note=note or 'Downloading m3u8 information',
|
||||||
@ -1180,6 +1173,13 @@ def _extract_m3u8_formats(self, m3u8_url, video_id, ext=None,
|
|||||||
m3u8_doc, urlh = res
|
m3u8_doc, urlh = res
|
||||||
m3u8_url = urlh.geturl()
|
m3u8_url = urlh.geturl()
|
||||||
|
|
||||||
|
formats = [self._m3u8_meta_format(m3u8_url, ext, preference, m3u8_id)]
|
||||||
|
|
||||||
|
format_url = lambda u: (
|
||||||
|
u
|
||||||
|
if re.match(r'^https?://', u)
|
||||||
|
else compat_urlparse.urljoin(m3u8_url, u))
|
||||||
|
|
||||||
# We should try extracting formats only from master playlists [1], i.e.
|
# We should try extracting formats only from master playlists [1], i.e.
|
||||||
# playlists that describe available qualities. On the other hand media
|
# playlists that describe available qualities. On the other hand media
|
||||||
# playlists [2] should be returned as is since they contain just the media
|
# playlists [2] should be returned as is since they contain just the media
|
||||||
|
@ -48,13 +48,23 @@ def _real_extract(self, url):
|
|||||||
# There are multiple videos in the playlist whlie only the first one
|
# There are multiple videos in the playlist whlie only the first one
|
||||||
# matches the video played in browsers
|
# matches the video played in browsers
|
||||||
video_info = configuration['playlist'][0]
|
video_info = configuration['playlist'][0]
|
||||||
|
title = video_info['title']
|
||||||
|
|
||||||
formats = []
|
formats = []
|
||||||
for source in video_info['sources']:
|
for source in video_info['sources']:
|
||||||
file_url = source['file']
|
file_url = source['file']
|
||||||
if determine_ext(file_url) == 'm3u8':
|
if determine_ext(file_url) == 'm3u8':
|
||||||
formats.extend(self._extract_m3u8_formats(
|
m3u8_formats = self._extract_m3u8_formats(
|
||||||
file_url, video_id, ext='mp4', m3u8_id='hls'))
|
file_url, video_id, 'mp4', 'm3u8_native', m3u8_id='hls', fatal=False)
|
||||||
|
if m3u8_formats:
|
||||||
|
formats.extend(m3u8_formats)
|
||||||
|
file_url = m3u8_formats[0]['url']
|
||||||
|
formats.extend(self._extract_f4m_formats(
|
||||||
|
file_url.replace('.m3u8', '.f4m'),
|
||||||
|
video_id, f4m_id='hds', fatal=False))
|
||||||
|
formats.extend(self._extract_mpd_formats(
|
||||||
|
file_url.replace('.m3u8', '.mpd'),
|
||||||
|
video_id, mpd_id='dash', fatal=False))
|
||||||
else:
|
else:
|
||||||
a_format = {
|
a_format = {
|
||||||
'url': file_url,
|
'url': file_url,
|
||||||
@ -70,7 +80,6 @@ def _real_extract(self, url):
|
|||||||
|
|
||||||
self._sort_formats(formats)
|
self._sort_formats(formats)
|
||||||
|
|
||||||
title = video_info['title']
|
|
||||||
description = video_info.get('description')
|
description = video_info.get('description')
|
||||||
thumbnail = video_info.get('image')
|
thumbnail = video_info.get('image')
|
||||||
else:
|
else:
|
||||||
|
Loading…
Reference in New Issue
Block a user