about summary refs log tree commit diff
path: root/youtube_dl/extractor/viki.py
diff options
context:
space:
mode:
authorSergey M․ <dstftw@gmail.com>2015-06-20 00:49:28 +0600
committerSergey M․ <dstftw@gmail.com>2015-06-20 00:49:28 +0600
commit16d6973f8a9eb5a70c12d82aa40f57c2b4aa8c6f (patch)
treef13568c3065b52cb81373a454741c0719cf5fdd5 /youtube_dl/extractor/viki.py
parentedcd2d665bf7fce29a561478549ec4e795c367ce (diff)
downloadyoutube-dl-16d6973f8a9eb5a70c12d82aa40f57c2b4aa8c6f.tar.gz
youtube-dl-16d6973f8a9eb5a70c12d82aa40f57c2b4aa8c6f.tar.xz
youtube-dl-16d6973f8a9eb5a70c12d82aa40f57c2b4aa8c6f.zip
[viki] Pass session token around (#6005)
Diffstat (limited to 'youtube_dl/extractor/viki.py')
-rw-r--r--youtube_dl/extractor/viki.py10
1 files changed, 9 insertions, 1 deletions
diff --git a/youtube_dl/extractor/viki.py b/youtube_dl/extractor/viki.py
index 52d10d242..51cdc6b65 100644
--- a/youtube_dl/extractor/viki.py
+++ b/youtube_dl/extractor/viki.py
@@ -28,11 +28,15 @@ class VikiBaseIE(InfoExtractor):
 
     _NETRC_MACHINE = 'viki'
 
+    _token = None
+
     def _prepare_call(self, path, timestamp=None, post_data=None):
         path += '?' if '?' not in path else '&'
         if not timestamp:
             timestamp = int(time.time())
         query = self._API_QUERY_TEMPLATE % (path, self._APP, timestamp)
+        if self._token:
+            query += '&token=%s' % self._token
         sig = hmac.new(
             self._APP_SECRET.encode('ascii'),
             query.encode('ascii'),
@@ -76,10 +80,14 @@ class VikiBaseIE(InfoExtractor):
             'password': password,
         }
 
-        self._call_api(
+        login = self._call_api(
             'sessions.json', None,
             'Logging in as %s' % username, post_data=login_form)
 
+        self._token = login.get('token')
+        if not self._token:
+            self.report_warning('Unable to get session token, login has probably failed')
+
 
 class VikiIE(VikiBaseIE):
     IE_NAME = 'viki'