|
|
@ -30,6 +30,12 @@ class VikiBaseIE(InfoExtractor): |
|
|
|
|
|
|
|
_token = None |
|
|
|
|
|
|
|
_ERRORS = { |
|
|
|
'geo': 'Sorry, this content is not available in your region.', |
|
|
|
'upcoming': 'Sorry, this content is not yet available.', |
|
|
|
# 'paywall': 'paywall', |
|
|
|
} |
|
|
|
|
|
|
|
def _prepare_call(self, path, timestamp=None, post_data=None): |
|
|
|
path += '?' if '?' not in path else '&' |
|
|
|
if not timestamp: |
|
|
@ -67,6 +73,12 @@ class VikiBaseIE(InfoExtractor): |
|
|
|
'%s returned error: %s' % (self.IE_NAME, error), |
|
|
|
expected=True) |
|
|
|
|
|
|
|
def _check_errors(self, data): |
|
|
|
for reason, status in data.get('blocking', {}).items(): |
|
|
|
if status and reason in self._ERRORS: |
|
|
|
raise ExtractorError('%s said: %s' % ( |
|
|
|
self.IE_NAME, self._ERRORS[reason]), expected=True) |
|
|
|
|
|
|
|
def _real_initialize(self): |
|
|
|
self._login() |
|
|
|
|
|
|
@ -193,6 +205,7 @@ class VikiIE(VikiBaseIE): |
|
|
|
'timestamp': 1321985454, |
|
|
|
'description': 'md5:44b1e46619df3a072294645c770cef36', |
|
|
|
'title': 'Love In Magic', |
|
|
|
'age_limit': 13, |
|
|
|
}, |
|
|
|
}] |
|
|
|
|
|
|
@ -202,6 +215,8 @@ class VikiIE(VikiBaseIE): |
|
|
|
video = self._call_api( |
|
|
|
'videos/%s.json' % video_id, video_id, 'Downloading video JSON') |
|
|
|
|
|
|
|
self._check_errors(video) |
|
|
|
|
|
|
|
title = self.dict_selection(video.get('titles', {}), 'en') |
|
|
|
if not title: |
|
|
|
title = 'Episode %d' % video.get('number') if video.get('type') == 'episode' else video.get('id') or video_id |
|
|
@ -262,8 +277,11 @@ class VikiIE(VikiBaseIE): |
|
|
|
r'^(\d+)[pP]$', format_id, 'height', default=None)) |
|
|
|
for protocol, format_dict in stream_dict.items(): |
|
|
|
if format_id == 'm3u8': |
|
|
|
formats = self._extract_m3u8_formats( |
|
|
|
format_dict['url'], video_id, 'mp4', m3u8_id='m3u8-%s' % protocol) |
|
|
|
m3u8_formats = self._extract_m3u8_formats( |
|
|
|
format_dict['url'], video_id, 'mp4', 'm3u8_native', |
|
|
|
m3u8_id='m3u8-%s' % protocol, fatal=None) |
|
|
|
if m3u8_formats: |
|
|
|
formats.extend(m3u8_formats) |
|
|
|
else: |
|
|
|
formats.append({ |
|
|
|
'url': format_dict['url'], |
|
|
@ -315,6 +333,8 @@ class VikiChannelIE(VikiBaseIE): |
|
|
|
'containers/%s.json' % channel_id, channel_id, |
|
|
|
'Downloading channel JSON') |
|
|
|
|
|
|
|
self._check_errors(channel) |
|
|
|
|
|
|
|
title = self.dict_selection(channel['titles'], 'en') |
|
|
|
|
|
|
|
description = self.dict_selection(channel['descriptions'], 'en') |
|
|
|