|
|
@ -16,7 +16,7 @@ from ..utils import ( |
|
|
|
class IviIE(InfoExtractor): |
|
|
|
IE_DESC = 'ivi.ru' |
|
|
|
IE_NAME = 'ivi' |
|
|
|
_VALID_URL = r'https?://(?:www\.)?ivi\.ru/(?:watch/(?:[^/]+/)?|video/player\?.*?videoId=)(?P<videoid>\d+)' |
|
|
|
_VALID_URL = r'https?://(?:www\.)?ivi\.ru/(?:watch/(?:[^/]+/)?|video/player\?.*?videoId=)(?P<id>\d+)' |
|
|
|
|
|
|
|
_TESTS = [ |
|
|
|
# Single movie |
|
|
@ -63,29 +63,34 @@ class IviIE(InfoExtractor): |
|
|
|
return int(m.group('commentcount')) if m is not None else 0 |
|
|
|
|
|
|
|
def _real_extract(self, url): |
|
|
|
mobj = re.match(self._VALID_URL, url) |
|
|
|
video_id = mobj.group('videoid') |
|
|
|
video_id = self._match_id(url) |
|
|
|
|
|
|
|
api_url = 'http://api.digitalaccess.ru/api/json/' |
|
|
|
|
|
|
|
data = {'method': 'da.content.get', |
|
|
|
'params': [video_id, {'site': 's183', |
|
|
|
'referrer': 'http://www.ivi.ru/watch/%s' % video_id, |
|
|
|
'contentid': video_id |
|
|
|
} |
|
|
|
] |
|
|
|
data = { |
|
|
|
'method': 'da.content.get', |
|
|
|
'params': [ |
|
|
|
video_id, { |
|
|
|
'site': 's183', |
|
|
|
'referrer': 'http://www.ivi.ru/watch/%s' % video_id, |
|
|
|
'contentid': video_id |
|
|
|
} |
|
|
|
] |
|
|
|
} |
|
|
|
|
|
|
|
request = compat_urllib_request.Request(api_url, json.dumps(data)) |
|
|
|
|
|
|
|
video_json_page = self._download_webpage(request, video_id, 'Downloading video JSON') |
|
|
|
video_json_page = self._download_webpage( |
|
|
|
request, video_id, 'Downloading video JSON') |
|
|
|
video_json = json.loads(video_json_page) |
|
|
|
|
|
|
|
if 'error' in video_json: |
|
|
|
error = video_json['error'] |
|
|
|
if error['origin'] == 'NoRedisValidData': |
|
|
|
raise ExtractorError('Video %s does not exist' % video_id, expected=True) |
|
|
|
raise ExtractorError('Unable to download video %s: %s' % (video_id, error['message']), expected=True) |
|
|
|
raise ExtractorError( |
|
|
|
'Unable to download video %s: %s' % (video_id, error['message']), |
|
|
|
expected=True) |
|
|
|
|
|
|
|
result = video_json['result'] |
|
|
|
|
|
|
|