]> Raphaël G. Git Repositories - youtubedl/blob - youtube_dl/extractor/dctp.py
debian/control: Drop really ancient Recommends to have ffprobe.
[youtubedl] / 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 'params': {
19 # rtmp download
20 'skip_download': True,
21 }
22 }
23
24 def _real_extract(self, url):
25 video_id = self._match_id(url)
26 base_url = 'http://dctp-ivms2-restapi.s3.amazonaws.com/'
27 version_json = self._download_json(
28 base_url + 'version.json',
29 video_id, note='Determining file version')
30 version = version_json['version_name']
31 info_json = self._download_json(
32 '{0}{1}/restapi/slugs/{2}.json'.format(base_url, version, video_id),
33 video_id, note='Fetching object ID')
34 object_id = compat_str(info_json['object_id'])
35 meta_json = self._download_json(
36 '{0}{1}/restapi/media/{2}.json'.format(base_url, version, object_id),
37 video_id, note='Downloading metadata')
38 uuid = meta_json['uuid']
39 title = meta_json['title']
40 wide = meta_json['is_wide']
41 if wide:
42 ratio = '16x9'
43 else:
44 ratio = '4x3'
45 play_path = 'mp4:{0}_dctp_0500_{1}.m4v'.format(uuid, ratio)
46
47 servers_json = self._download_json(
48 'http://www.dctp.tv/streaming_servers/',
49 video_id, note='Downloading server list')
50 url = servers_json[0]['endpoint']
51
52 return {
53 'id': object_id,
54 'title': title,
55 'format': 'rtmp',
56 'url': url,
57 'play_path': play_path,
58 'rtmp_real_time': True,
59 'ext': 'flv',
60 'display_id': video_id
61 }