_API_URL_TEMPLATE = 'https://api.viki.io%s&sig=%s'
_APP = '100005a'
- _APP_VERSION = '2.2.5.1428709186'
+ _APP_VERSION = '6.0.0'
_APP_SECRET = 'MM_d*yP@`&1@]@!AVrXf_o-HVEnoTnm$O-ti4[G~$JDI/Dc-&piU&z&5.;:}95=Iad'
_GEO_BYPASS = False
def _call_api(self, path, video_id, note, timestamp=None, post_data=None):
resp = self._download_json(
- self._prepare_call(path, timestamp, post_data), video_id, note)
+ self._prepare_call(path, timestamp, post_data),
+ video_id, note,
+ headers={
+ 'x-client-user-agent': std_headers['User-Agent'],
+ 'x-viki-as-id': self._APP,
+ 'x-viki-app-ver': self._APP_VERSION,
+ })
error = resp.get('error')
if error:
if error == 'invalid timestamp':
resp = self._download_json(
self._prepare_call(path, int(resp['current_timestamp']), post_data),
- video_id, '%s (retry)' % note)
+ video_id, '%s (retry)' % note,
+ headers={
+ 'x-client-user-agent': std_headers['User-Agent'],
+ 'x-viki-as-id': self._APP,
+ 'x-viki-app-ver': self._APP_VERSION,
+ })
error = resp.get('error')
if error:
self._raise_error(resp['error'])
'https://www.viki.com/api/videos/' + video_id,
video_id, 'Downloading video JSON', headers={
'x-client-user-agent': std_headers['User-Agent'],
- 'x-viki-app-ver': '4.0.57',
+ 'x-viki-as-id': self._APP,
+ 'x-viki-app-ver': self._APP_VERSION,
})
video = resp['video']
# New way to fetch subtitles
new_video = self._download_json(
'https://www.viki.com/api/videos/%s' % video_id, video_id,
- 'Downloading new video JSON to get subtitles', fatal=False)
+ 'Downloading new video JSON to get subtitles', fatal=False,
+ headers={
+ 'x-client-user-agent': std_headers['User-Agent'],
+ 'x-viki-as-id': self._APP,
+ 'x-viki-app-ver': self._APP_VERSION,
+ })
for sub in new_video.get('streamSubtitles').get('dash'):
subtitles[sub.get('srclang')] = [{
'ext': 'vtt',