[spiegeltv] Simplify and PEP8

This commit is contained in:
Philipp Hagemeister 2014-06-07 15:33:45 +02:00
parent 4e0fb1280a
commit d551980823
3 changed files with 46 additions and 20 deletions

View File

@ -717,6 +717,15 @@ class YoutubeDL(object):
info_dict['playlist'] = None info_dict['playlist'] = None
info_dict['playlist_index'] = None info_dict['playlist_index'] = None
thumbnails = info_dict.get('thumbnails')
if thumbnails:
for t in thumbnails:
if 'width' in t and 'height' in t:
t['resolution'] = '%dx%d' % (t['width'], t['height'])
if thumbnails and 'thumbnail' not in info_dict:
info_dict['thumbnail'] = thumbnails[-1]['url']
if 'display_id' not in info_dict and 'id' in info_dict: if 'display_id' not in info_dict and 'id' in info_dict:
info_dict['display_id'] = info_dict['id'] info_dict['display_id'] = info_dict['id']

View File

@ -92,8 +92,12 @@ class InfoExtractor(object):
unique, but available before title. Typically, id is unique, but available before title. Typically, id is
something like "4234987", title "Dancing naked mole rats", something like "4234987", title "Dancing naked mole rats",
and display_id "dancing-naked-mole-rats" and display_id "dancing-naked-mole-rats"
thumbnails: A list of dictionaries (with the entries "resolution" and thumbnails: A list of dictionaries, with the following entries:
"url") for the varying thumbnails * "url"
* "width" (optional, int)
* "height" (optional, int)
* "resolution" (optional, string "{width}x{height"},
deprecated)
thumbnail: Full URL to a video thumbnail image. thumbnail: Full URL to a video thumbnail image.
description: One-line video description. description: One-line video description.
uploader: Full name of the video uploader. uploader: Full name of the video uploader.

View File

@ -4,6 +4,7 @@ from __future__ import unicode_literals
import re import re
from .common import InfoExtractor from .common import InfoExtractor
class SpiegeltvIE(InfoExtractor): class SpiegeltvIE(InfoExtractor):
_VALID_URL = r'https?://(?:www\.)?spiegel\.tv/filme/(?P<id>[\-a-z0-9]+)' _VALID_URL = r'https?://(?:www\.)?spiegel\.tv/filme/(?P<id>[\-a-z0-9]+)'
_TEST = { _TEST = {
@ -13,6 +14,7 @@ class SpiegeltvIE(InfoExtractor):
'ext': 'm4v', 'ext': 'm4v',
'title': 'Flug MH370', 'title': 'Flug MH370',
'description': 'Das Rätsel um die Boeing 777 der Malaysia-Airlines', 'description': 'Das Rätsel um die Boeing 777 der Malaysia-Airlines',
'thumbnail': 're:http://.*\.jpg$',
}, },
'params': { 'params': {
# rtmp download # rtmp download
@ -27,36 +29,48 @@ class SpiegeltvIE(InfoExtractor):
webpage = self._download_webpage(url, video_id) webpage = self._download_webpage(url, video_id)
title = self._html_search_regex(r'<h1.*?>(.*?)</h1>', webpage, 'title') title = self._html_search_regex(r'<h1.*?>(.*?)</h1>', webpage, 'title')
apihost = 'http://spiegeltv-ivms2-restapi.s3.amazonaws.com'; apihost = 'http://spiegeltv-ivms2-restapi.s3.amazonaws.com'
version_json = self._download_json(
'%s/version.json' % apihost, video_id,
note='Downloading version information')
version_name = version_json['version_name']
version_json = self._download_json('%s/version.json' % apihost, None) slug_json = self._download_json(
version_name = version_json['version_name'] '%s/%s/restapi/slugs/%s.json' % (apihost, version_name, video_id),
video_id,
note='Downloading object information')
oid = slug_json['object_id']
slug_json = self._download_json('%s/%s/restapi/slugs/%s.json' % (apihost, version_name, video_id), None) media_json = self._download_json(
oid = slug_json['object_id'] '%s/%s/restapi/media/%s.json' % (apihost, version_name, oid),
video_id, note='Downloading media information')
media_json = self._download_json('%s/%s/restapi/media/%s.json' % (apihost, version_name, oid), None) uuid = media_json['uuid']
uuid = media_json['uuid'] is_wide = media_json['is_wide']
is_wide = media_json['is_wide']
server_json = self._download_json('http://www.spiegel.tv/streaming_servers/', None) server_json = self._download_json(
server = server_json[0]['endpoint'] 'http://www.spiegel.tv/streaming_servers/', video_id,
note='Downloading server information')
server = server_json[0]['endpoint']
thumbnails = [] thumbnails = []
for image in media_json['images']: for image in media_json['images']:
thumbnails.append({'url': image['url'], 'resolution': str(image['width']) + 'x' + str(image['height']) }) thumbnails.append({
'url': image['url'],
'width': image['width'],
'height': image['height'],
})
description = media_json['subtitle'] description = media_json['subtitle']
duration = int(round(media_json['duration_in_ms'] / 1000)) duration = media_json['duration_in_ms'] / 1000.
if is_wide: if is_wide:
format = '16x9' format = '16x9'
else: else:
format = '4x3' format = '4x3'
url = server + 'mp4:' + uuid + '_spiegeltv_0500_' + format + '.m4v' url = server + 'mp4:' + uuid + '_spiegeltv_0500_' + format + '.m4v'
return_dict = { return {
'id': video_id, 'id': video_id,
'title': title, 'title': title,
'url': url, 'url': url,
@ -64,5 +78,4 @@ class SpiegeltvIE(InfoExtractor):
'description': description, 'description': description,
'duration': duration, 'duration': duration,
'thumbnails': thumbnails 'thumbnails': thumbnails
} }
return return_dict