[dctp] Improve output (#4796)
[youtube-dl] / youtube_dl / extractor / dctp.py
1 # encoding: utf-8
2 from __future__ import unicode_literals
3
4 from .common import InfoExtractor
5 from ..compat import compat_str
6
7
8 class DctpTvIE(InfoExtractor):
9     _VALID_URL = r'http://www.dctp.tv/(#/)?filme/(?P<id>.+?)/$'
10     _TEST = {
11         'url': 'http://www.dctp.tv/filme/videoinstallation-fuer-eine-kaufhausfassade/',
12         'info_dict': {
13             'id': '1324',
14             'display_id': 'videoinstallation-fuer-eine-kaufhausfassade',
15             'ext': 'flv',
16             'title': 'Videoinstallation für eine Kaufhausfassade'}
17         }
18
19     def _real_extract(self, url):
20         video_id = self._match_id(url)
21         base_url = 'http://dctp-ivms2-restapi.s3.amazonaws.com/'
22         version_json = self._download_json(
23             base_url + 'version.json',
24             video_id, note='Determining file version')
25         version = version_json['version_name']
26         info_json = self._download_json(
27             '{0}{1}/restapi/slugs/{2}.json'.format(base_url, version, video_id),
28             video_id, note='Fetching object ID')
29         object_id = compat_str(info_json['object_id'])
30         meta_json = self._download_json(
31             '{0}{1}/restapi/media/{2}.json'.format(base_url, version, object_id),
32             video_id, note='Downloading metadata')
33         uuid = meta_json['uuid']
34         title = meta_json['title']
35         wide = meta_json['is_wide']
36         if wide:
37             ratio = '16x9'
38         else:
39             ratio = '4x3'
40         play_path = 'mp4:{0}_dctp_0500_{1}.m4v'.format(uuid, ratio)
41
42         servers_json = self._download_json(
43             'http://www.dctp.tv/streaming_servers/',
44             video_id, note='Downloading server list')
45         url = servers_json[0]['endpoint']
46
47         return {
48             'id': object_id,
49             'title': title,
50             'format': 'rtmp',
51             'url': url,
52             'play_path': play_path,
53             'rtmp_real_time': True,
54             'ext': 'flv',
55             'display_id': video_id
56         }
57