diff options
| -rw-r--r-- | youtube_dl/extractor/common.py | 14 | ||||
| -rw-r--r-- | youtube_dl/extractor/internetvideoarchive.py | 15 | 
2 files changed, 19 insertions, 10 deletions
| diff --git a/youtube_dl/extractor/common.py b/youtube_dl/extractor/common.py index a82968162..6edd5a769 100644 --- a/youtube_dl/extractor/common.py +++ b/youtube_dl/extractor/common.py @@ -1163,13 +1163,6 @@ class InfoExtractor(object):                                m3u8_id=None, note=None, errnote=None,                                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(              m3u8_url, video_id,              note=note or 'Downloading m3u8 information', @@ -1180,6 +1173,13 @@ class InfoExtractor(object):          m3u8_doc, urlh = res          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.          # playlists that describe available qualities. On the other hand media          # playlists [2] should be returned as is since they contain just the media diff --git a/youtube_dl/extractor/internetvideoarchive.py b/youtube_dl/extractor/internetvideoarchive.py index 45add007f..76cc5ec3e 100644 --- a/youtube_dl/extractor/internetvideoarchive.py +++ b/youtube_dl/extractor/internetvideoarchive.py @@ -48,13 +48,23 @@ class InternetVideoArchiveIE(InfoExtractor):              # There are multiple videos in the playlist whlie only the first one              # matches the video played in browsers              video_info = configuration['playlist'][0] +            title = video_info['title']              formats = []              for source in video_info['sources']:                  file_url = source['file']                  if determine_ext(file_url) == 'm3u8': -                    formats.extend(self._extract_m3u8_formats( -                        file_url, video_id, ext='mp4', m3u8_id='hls')) +                    m3u8_formats = self._extract_m3u8_formats( +                        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:                      a_format = {                          'url': file_url, @@ -70,7 +80,6 @@ class InternetVideoArchiveIE(InfoExtractor):              self._sort_formats(formats) -            title = video_info['title']              description = video_info.get('description')              thumbnail = video_info.get('image')          else: | 
