diff options
Diffstat (limited to 'youtube_dl/extractor/common.py')
| -rw-r--r-- | youtube_dl/extractor/common.py | 43 | 
1 files changed, 43 insertions, 0 deletions
| diff --git a/youtube_dl/extractor/common.py b/youtube_dl/extractor/common.py index 4f738b9fc..c00023458 100644 --- a/youtube_dl/extractor/common.py +++ b/youtube_dl/extractor/common.py @@ -1795,6 +1795,49 @@ class InfoExtractor(object):              m3u8_id='hls', fatal=False))          return formats +    def _extract_wowza_formats(self, url, video_id, m3u8_entry_protocol='m3u8_native', skip_protocols=[]): +        url = re.sub(r'/(?:manifest|playlist|jwplayer)\.(?:m3u8|f4m|mpd|smil)', '', url) +        url_base = self._search_regex(r'(?:https?|rtmp|rtsp)(://[^?]+)', url, 'format url') +        http_base_url = 'http' + url_base +        formats = [] +        if 'm3u8' not in skip_protocols: +            formats.extend(self._extract_m3u8_formats( +                http_base_url + '/playlist.m3u8', video_id, 'mp4', +                m3u8_entry_protocol, m3u8_id='hls', fatal=False)) +        if 'f4m' not in skip_protocols: +            formats.extend(self._extract_f4m_formats( +                http_base_url + '/manifest.f4m', +                video_id, f4m_id='hds', fatal=False)) +        if re.search(r'(?:/smil:|\.smil)', url_base): +            if 'dash' not in skip_protocols: +                formats.extend(self._extract_mpd_formats( +                    http_base_url + '/manifest.mpd', +                    video_id, mpd_id='dash', fatal=False)) +            if 'smil' not in skip_protocols: +                rtmp_formats = self._extract_smil_formats( +                    http_base_url + '/jwplayer.smil', +                    video_id, fatal=False) +                for rtmp_format in rtmp_formats: +                    rtsp_format = rtmp_format.copy() +                    rtsp_format['url'] = '%s/%s' % (rtmp_format['url'], rtmp_format['play_path']) +                    del rtsp_format['play_path'] +                    del rtsp_format['ext'] +                    rtsp_format.update({ +                        'url': rtsp_format['url'].replace('rtmp://', 'rtsp://'), +                        'format_id': rtmp_format['format_id'].replace('rtmp', 'rtsp'), +                        'protocol': 'rtsp', +                    }) +                    formats.extend([rtmp_format, rtsp_format]) +        else: +            for protocol in ('rtmp', 'rtsp'): +                if protocol not in skip_protocols: +                    formats.append({ +                        'url': protocol + url_base, +                        'format_id': protocol, +                        'protocol': protocol, +                    }) +        return formats +      def _live_title(self, name):          """ Generate the title for a live video """          now = datetime.datetime.now() | 
