]> jfr.im git - yt-dlp.git/commitdiff
[viki] Fix extractor (Closes #91)
authorpukkandan <redacted>
Fri, 19 Feb 2021 12:51:29 +0000 (18:21 +0530)
committerpukkandan <redacted>
Fri, 19 Feb 2021 12:51:29 +0000 (18:21 +0530)
youtube_dlc/extractor/viki.py

index 50208db6e04d59054eefd3cb466dac434d572d6b..48d244cd6fa2686501fa3ee4b148afea14f1d68e 100644 (file)
@@ -31,7 +31,7 @@ class VikiBaseIE(InfoExtractor):
     _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
@@ -63,14 +63,25 @@ def _prepare_call(self, path, timestamp=None, post_data=None):
 
     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'])
@@ -230,7 +241,8 @@ def _real_extract(self, url):
             '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']
 
@@ -263,7 +275,12 @@ def _real_extract(self, url):
             # 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',