diff options
author | pulpe <Pulpan3@gmail.com> | 2014-02-09 18:37:12 +0100 |
---|---|---|
committer | pulpe <Pulpan3@gmail.com> | 2014-02-09 18:37:12 +0100 |
commit | 0793a7b3c79349aefe8af7321f5ef36a034e6dc9 (patch) | |
tree | ccc9fda79cd31fb1cdacb69749d48fc439945c2c /youtube_dl/extractor/streamcz.py | |
parent | 17968e444cad4f960e5613441fdd266c04e71934 (diff) |
[StreamCZ] Add support for stream.cz
Diffstat (limited to 'youtube_dl/extractor/streamcz.py')
-rw-r--r-- | youtube_dl/extractor/streamcz.py | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/youtube_dl/extractor/streamcz.py b/youtube_dl/extractor/streamcz.py new file mode 100644 index 000000000..cb50aee3f --- /dev/null +++ b/youtube_dl/extractor/streamcz.py @@ -0,0 +1,64 @@ +# -*- coding: utf-8 -*- +from __future__ import unicode_literals + +import re +import json + +from .common import InfoExtractor + + +class StreamCZIE(InfoExtractor): + _VALID_URL = r'https?://www\.stream\.cz/((?P<category>.+)/)?(?P<videogroup>.+)/(?P<videoid>.+)' + + _TESTS = [{ + 'url': 'http://www.stream.cz/peklonataliri/765767-ecka-pro-deti', + 'md5': '6d3ca61a8d0633c9c542b92fcb936b0c', + 'info_dict': { + 'id': '765767', + 'ext': 'mp4', + 'title': 'Peklo na talíři: Éčka pro děti', + 'description': 'md5:49ace0df986e95e331d0fe239d421519', + 'thumbnail': 'http://im.stream.cz/episode/52961d7e19d423f8f06f0100', + }, + }, + ] + + def _real_extract(self, url): + mobj = re.match(self._VALID_URL, url) + video_id = mobj.group('videoid') + + webpage = self._download_webpage(url, video_id) + + data = self._html_search_regex(r'Stream\.Data\.Episode\((.+?)\);', webpage, 'stream data') + + jsonData = json.loads(data) + + formats = [] + for video in jsonData['instances']: + format_id = video['instances'][0]['quality'] + + if format_id == '240p': + quality = 0 + elif format_id == '360p': + quality = 1 + elif format_id == '480p': + quality = 2 + elif format_id == '720p': + quality = 3 + + formats.append({ + 'format_id': format_id, + 'url': video['instances'][0]['source'], + 'quality': quality, + 'ext': 'mp4', + }) + + self._sort_formats(formats) + + return { + 'id': str(jsonData['id']), + 'title': self._og_search_title(webpage), + 'thumbnail': jsonData['episode_image_original_url'].replace('//', 'http://'), + 'formats': formats, + 'description': self._og_search_description(webpage), + } |