- try:
- _, _, ext = rendition.attrib['type'].partition('/')
- rtmp_video_url = rendition.find('./src').text
- if rtmp_video_url.endswith('siteunavail.png'):
- continue
- new_urls = self._transform_rtmp_url(rtmp_video_url)
- formats.extend([{
- 'ext': 'flv' if new_url.startswith('rtmp') else ext,
- 'url': new_url,
- 'format_id': '-'.join(filter(None, [kind, rendition.get('bitrate')])),
- 'width': int(rendition.get('width')),
- 'height': int(rendition.get('height')),
- } for kind, new_url in new_urls.items()])
- except (KeyError, TypeError):
- raise ExtractorError('Invalid rendition field.')
+ if rendition.attrib['method'] == 'hls':
+ hls_url = rendition.find('./src').text
+ formats.extend(self._extract_m3u8_formats(hls_url, video_id, ext='mp4'))
+ else:
+ # fms
+ try:
+ _, _, ext = rendition.attrib['type'].partition('/')
+ rtmp_video_url = rendition.find('./src').text
+ if rtmp_video_url.endswith('siteunavail.png'):
+ continue
+ new_urls = self._transform_rtmp_url(rtmp_video_url)
+ formats.extend([{
+ 'ext': 'flv' if new_url.startswith('rtmp') else ext,
+ 'url': new_url,
+ 'format_id': '-'.join(filter(None, [kind, rendition.get('bitrate')])),
+ 'width': int(rendition.get('width')),
+ 'height': int(rendition.get('height')),
+ } for kind, new_url in new_urls.items()])
+ except (KeyError, TypeError):
+ raise ExtractorError('Invalid rendition field.')