[livestream] Do not fail if SMIL download fails

This commit is contained in:
Philipp Hagemeister 2014-07-25 11:53:52 +02:00
parent 7fa547ab02
commit 8f3034d871
1 changed files with 44 additions and 35 deletions

View File

@ -33,28 +33,18 @@ class LivestreamIE(InfoExtractor):
} }
} }
def _extract_video_info(self, video_data): def _parse_smil(self, video_id, smil_url):
video_id = compat_str(video_data['id']) formats = []
FORMAT_KEYS = (
('sd', 'progressive_url'),
('hd', 'progressive_url_hd'),
)
formats = [{
'format_id': format_id,
'url': video_data[key],
'quality': i + 1,
} for i, (format_id, key) in enumerate(FORMAT_KEYS)
if video_data.get(key)]
smil_url = video_data.get('smil_url')
if smil_url:
_SWITCH_XPATH = ( _SWITCH_XPATH = (
'.//{http://www.w3.org/2001/SMIL20/Language}body/' './/{http://www.w3.org/2001/SMIL20/Language}body/'
'{http://www.w3.org/2001/SMIL20/Language}switch') '{http://www.w3.org/2001/SMIL20/Language}switch')
smil_doc = self._download_xml( smil_doc = self._download_xml(
smil_url, video_id, note='Downloading SMIL information') smil_url, video_id,
note='Downloading SMIL information',
errnote='Unable to download SMIL information',
fatal=False)
if smil_doc is False: # Download failed
return formats
title_node = find_xpath_attr( title_node = find_xpath_attr(
smil_doc, './/{http://www.w3.org/2001/SMIL20/Language}meta', smil_doc, './/{http://www.w3.org/2001/SMIL20/Language}meta',
'name', 'title') 'name', 'title')
@ -84,6 +74,25 @@ class LivestreamIE(InfoExtractor):
'tbr': tbr, 'tbr': tbr,
'preference': -1000, 'preference': -1000,
}) })
return formats
def _extract_video_info(self, video_data):
video_id = compat_str(video_data['id'])
FORMAT_KEYS = (
('sd', 'progressive_url'),
('hd', 'progressive_url_hd'),
)
formats = [{
'format_id': format_id,
'url': video_data[key],
'quality': i + 1,
} for i, (format_id, key) in enumerate(FORMAT_KEYS)
if video_data.get(key)]
smil_url = video_data.get('smil_url')
if smil_url:
formats.extend(self._parse_smil(video_id, smil_url))
self._sort_formats(formats) self._sort_formats(formats)
return { return {