|
|
@ -49,15 +49,30 @@ class VideoLecturesNetIE(InfoExtractor):
|
|
|
|
thumbnail = (
|
|
|
|
thumbnail = (
|
|
|
|
None if thumbnail_el is None else thumbnail_el.attrib.get('src'))
|
|
|
|
None if thumbnail_el is None else thumbnail_el.attrib.get('src'))
|
|
|
|
|
|
|
|
|
|
|
|
formats = [{
|
|
|
|
formats = []
|
|
|
|
'url': v.attrib['src'],
|
|
|
|
for v in switch.findall('./video'):
|
|
|
|
'width': int_or_none(v.attrib.get('width')),
|
|
|
|
proto = v.attrib.get('proto')
|
|
|
|
'height': int_or_none(v.attrib.get('height')),
|
|
|
|
if not proto in ['http', 'rtmp']:
|
|
|
|
'filesize': int_or_none(v.attrib.get('size')),
|
|
|
|
continue
|
|
|
|
'tbr': int_or_none(v.attrib.get('systemBitrate')) / 1000.0,
|
|
|
|
f = {
|
|
|
|
'ext': v.attrib.get('ext'),
|
|
|
|
'width': int_or_none(v.attrib.get('width')),
|
|
|
|
} for v in switch.findall('./video')
|
|
|
|
'height': int_or_none(v.attrib.get('height')),
|
|
|
|
if v.attrib.get('proto') == 'http']
|
|
|
|
'filesize': int_or_none(v.attrib.get('size')),
|
|
|
|
|
|
|
|
'tbr': int_or_none(v.attrib.get('systemBitrate')) / 1000.0,
|
|
|
|
|
|
|
|
'ext': v.attrib.get('ext'),
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
src = v.attrib['src']
|
|
|
|
|
|
|
|
if proto == 'http':
|
|
|
|
|
|
|
|
if self._is_valid_url(src, video_id):
|
|
|
|
|
|
|
|
f['url'] = src
|
|
|
|
|
|
|
|
formats.append(f)
|
|
|
|
|
|
|
|
elif proto == 'rtmp':
|
|
|
|
|
|
|
|
f.update({
|
|
|
|
|
|
|
|
'url': v.attrib['streamer'],
|
|
|
|
|
|
|
|
'play_path': src,
|
|
|
|
|
|
|
|
})
|
|
|
|
|
|
|
|
formats.append(f)
|
|
|
|
|
|
|
|
self._sort_formats(formats)
|
|
|
|
|
|
|
|
|
|
|
|
return {
|
|
|
|
return {
|
|
|
|
'id': video_id,
|
|
|
|
'id': video_id,
|
|
|
|