[pluralsight] Modernize and make more robust
authorSergey M․ <dstftw@gmail.com>
Wed, 24 Aug 2016 01:52:12 +0000 (08:52 +0700)
committerSergey M․ <dstftw@gmail.com>
Wed, 24 Aug 2016 01:52:12 +0000 (08:52 +0700)
youtube_dl/extractor/pluralsight.py

index afd3217d923e5a5abea328914a515ab20b70fdcc..ea5caefa90da858f143d1f512d036698f6726b16 100644 (file)
@@ -17,7 +17,6 @@ from ..utils import (
     int_or_none,
     parse_duration,
     qualities,
-    sanitized_Request,
     srt_subtitles_timecode,
     urlencode_postdata,
 )
@@ -78,12 +77,10 @@ class PluralsightIE(PluralsightBaseIE):
         if not post_url.startswith('http'):
             post_url = compat_urlparse.urljoin(self._LOGIN_URL, post_url)
 
-        request = sanitized_Request(
-            post_url, urlencode_postdata(login_form))
-        request.add_header('Content-Type', 'application/x-www-form-urlencoded')
-
         response = self._download_webpage(
-            request, None, 'Logging in as %s' % username)
+            post_url, None, 'Logging in as %s' % username,
+            data=urlencode_postdata(login_form),
+            headers={'Content-Type': 'application/x-www-form-urlencoded'})
 
         error = self._search_regex(
             r'<span[^>]+class="field-validation-error"[^>]*>([^<]+)</span>',
@@ -128,6 +125,8 @@ class PluralsightIE(PluralsightBaseIE):
                 continue
             end = duration if num == len(subs) - 1 else float_or_none(
                 subs[num + 1].get('DisplayTimeOffset'))
+            if end is None:
+                continue
             srt += os.linesep.join(
                 (
                     '%d' % num,
@@ -246,13 +245,12 @@ class PluralsightIE(PluralsightBaseIE):
                     'mt': ext,
                     'q': '%dx%d' % (f['width'], f['height']),
                 }
-                request = sanitized_Request(
-                    '%s/training/Player/ViewClip' % self._API_BASE,
-                    json.dumps(clip_post).encode('utf-8'))
-                request.add_header('Content-Type', 'application/json;charset=utf-8')
                 format_id = '%s-%s' % (ext, quality)
                 clip_url = self._download_webpage(
-                    request, display_id, 'Downloading %s URL' % format_id, fatal=False)
+                    '%s/training/Player/ViewClip' % self._API_BASE, display_id,
+                    'Downloading %s URL' % format_id, fatal=False,
+                    data=json.dumps(clip_post).encode('utf-8'),
+                    headers={'Content-Type': 'application/json;charset=utf-8'})
 
                 # Pluralsight tracks multiple sequential calls to ViewClip API and start
                 # to return 429 HTTP errors after some time (see