[ted] Extract all formats (Closes #5397)

This commit is contained in:
Sergey M․ 2015-04-10 23:36:28 +06:00
parent cd47a628fc
commit 66ee7b3234

View File

@ -5,9 +5,8 @@ import re
from .common import InfoExtractor from .common import InfoExtractor
from ..compat import ( from ..compat import compat_str
compat_str, from ..utils import int_or_none
)
class TEDIE(InfoExtractor): class TEDIE(InfoExtractor):
@ -170,17 +169,41 @@ class TEDIE(InfoExtractor):
finfo = self._NATIVE_FORMATS.get(f['format_id']) finfo = self._NATIVE_FORMATS.get(f['format_id'])
if finfo: if finfo:
f.update(finfo) f.update(finfo)
else:
# Use rtmp downloads for format_id, resources in talk_info['resources'].items():
formats = [{ if format_id == 'h264':
'format_id': f['name'], for resource in resources:
'url': talk_info['streamer'], bitrate = int_or_none(resource.get('bitrate'))
'play_path': f['file'], formats.append({
'url': resource['file'],
'format_id': '%s-%sk' % (format_id, bitrate),
'tbr': bitrate,
})
elif format_id == 'rtmp':
streamer = talk_info.get('streamer')
if not streamer:
continue
for resource in resources:
formats.append({
'format_id': '%s-%s' % (format_id, resource.get('name')),
'url': streamer,
'play_path': resource['file'],
'ext': 'flv', 'ext': 'flv',
'width': f['width'], 'width': int_or_none(resource.get('width')),
'height': f['height'], 'height': int_or_none(resource.get('height')),
'tbr': f['bitrate'], 'tbr': int_or_none(resource.get('bitrate')),
} for f in talk_info['resources']['rtmp']] })
elif format_id == 'hls':
formats.extend(self._extract_m3u8_formats(
resources.get('stream'), video_name, 'mp4', m3u8_id=format_id))
audio_download = talk_info.get('audioDownload')
if audio_download:
formats.append({
'url': audio_download,
'format_id': 'audio',
})
self._sort_formats(formats) self._sort_formats(formats)
video_id = compat_str(talk_info['id']) video_id = compat_str(talk_info['id'])