[spiegeltv] Extract all formats and prefer hls (Closes #5843)

This commit is contained in:
Sergey M․ 2015-06-09 20:36:08 +06:00
parent e1b9322b09
commit d9cf48e81e

View File

@ -2,7 +2,11 @@
from __future__ import unicode_literals from __future__ import unicode_literals
from .common import InfoExtractor from .common import InfoExtractor
from ..utils import float_or_none from ..compat import compat_urllib_parse_urlparse
from ..utils import (
determine_ext,
float_or_none,
)
class SpiegeltvIE(InfoExtractor): class SpiegeltvIE(InfoExtractor):
@ -17,7 +21,7 @@ class SpiegeltvIE(InfoExtractor):
'thumbnail': 're:http://.*\.jpg$', 'thumbnail': 're:http://.*\.jpg$',
}, },
'params': { 'params': {
# rtmp download # m3u8 download
'skip_download': True, 'skip_download': True,
} }
}, { }, {
@ -53,7 +57,35 @@ class SpiegeltvIE(InfoExtractor):
server_json = self._download_json( server_json = self._download_json(
'http://spiegeltv-prod-static.s3.amazonaws.com/projectConfigs/projectConfig.json', 'http://spiegeltv-prod-static.s3.amazonaws.com/projectConfigs/projectConfig.json',
video_id, note='Downloading server information') video_id, note='Downloading server information')
server = server_json['streamingserver'][0]['endpoint']
format = '16x9' if is_wide else '4x3'
formats = []
for streamingserver in server_json['streamingserver']:
endpoint = streamingserver.get('endpoint')
if not endpoint:
continue
play_path = 'mp4:%s_spiegeltv_0500_%s.m4v' % (uuid, format)
if endpoint.startswith('rtmp'):
formats.append({
'url': endpoint,
'format_id': 'rtmp',
'app': compat_urllib_parse_urlparse(endpoint).path[1:],
'play_path': play_path,
'player_path': 'http://prod-static.spiegel.tv/frontend-076.swf',
'ext': 'flv',
'rtmp_live': True,
})
elif determine_ext(endpoint) == 'm3u8':
formats.extend(self._extract_m3u8_formats(
endpoint.replace('[video]', play_path),
video_id, 'm4v',
preference=1, # Prefer hls since it allows to workaround georestriction
m3u8_id='hls'))
else:
formats.append({
'url': endpoint,
})
thumbnails = [] thumbnails = []
for image in media_json['images']: for image in media_json['images']:
@ -65,17 +97,12 @@ class SpiegeltvIE(InfoExtractor):
description = media_json['subtitle'] description = media_json['subtitle']
duration = float_or_none(media_json.get('duration_in_ms'), scale=1000) duration = float_or_none(media_json.get('duration_in_ms'), scale=1000)
format = '16x9' if is_wide else '4x3'
url = server + 'mp4:' + uuid + '_spiegeltv_0500_' + format + '.m4v'
return { return {
'id': video_id, 'id': video_id,
'title': title, 'title': title,
'url': url,
'ext': 'm4v',
'description': description, 'description': description,
'duration': duration, 'duration': duration,
'thumbnails': thumbnails, 'thumbnails': thumbnails,
'rtmp_live': True, 'formats': formats,
} }