]>
Raphaël G. Git Repositories - youtubedl/blob - youtube_dl/extractor/spiegeltv.py
2 from __future__
import unicode_literals
4 from .common
import InfoExtractor
5 from ..utils
import float_or_none
8 class SpiegeltvIE(InfoExtractor
):
9 _VALID_URL
= r
'https?://(?:www\.)?spiegel\.tv/(?:#/)?filme/(?P<id>[\-a-z0-9]+)'
11 'url': 'http://www.spiegel.tv/filme/flug-mh370/',
15 'title': 'Flug MH370',
16 'description': 'Das Rätsel um die Boeing 777 der Malaysia-Airlines',
17 'thumbnail': 're:http://.*\.jpg$',
21 'skip_download': True,
24 'url': 'http://www.spiegel.tv/#/filme/alleskino-die-wahrheit-ueber-maenner/',
25 'only_matching': True,
28 def _real_extract(self
, url
):
30 url
= url
.replace('/#/', '/')
31 video_id
= self
._match
_id
(url
)
32 webpage
= self
._download
_webpage
(url
, video_id
)
33 title
= self
._html
_search
_regex
(r
'<h1.*?>(.*?)</h1>', webpage
, 'title')
35 apihost
= 'http://spiegeltv-ivms2-restapi.s3.amazonaws.com'
36 version_json
= self
._download
_json
(
37 '%s/version.json' % apihost
, video_id
,
38 note
='Downloading version information')
39 version_name
= version_json
['version_name']
41 slug_json
= self
._download
_json
(
42 '%s/%s/restapi/slugs/%s.json' % (apihost
, version_name
, video_id
),
44 note
='Downloading object information')
45 oid
= slug_json
['object_id']
47 media_json
= self
._download
_json
(
48 '%s/%s/restapi/media/%s.json' % (apihost
, version_name
, oid
),
49 video_id
, note
='Downloading media information')
50 uuid
= media_json
['uuid']
51 is_wide
= media_json
['is_wide']
53 server_json
= self
._download
_json
(
54 'http://www.spiegel.tv/streaming_servers/', video_id
,
55 note
='Downloading server information')
56 server
= server_json
[0]['endpoint']
59 for image
in media_json
['images']:
62 'width': image
['width'],
63 'height': image
['height'],
66 description
= media_json
['subtitle']
67 duration
= float_or_none(media_json
.get('duration_in_ms'), scale
=1000)
68 format
= '16x9' if is_wide
else '4x3'
70 url
= server
+ 'mp4:' + uuid
+ '_spiegeltv_0500_' + format
+ '.m4v'
77 'description': description
,
79 'thumbnails': thumbnails