|
|
@ -140,10 +140,10 @@ class PluralsightIE(PluralsightBaseIE):
|
|
|
|
|
|
|
|
|
|
|
|
raise ExtractorError('Unable to log in')
|
|
|
|
raise ExtractorError('Unable to log in')
|
|
|
|
|
|
|
|
|
|
|
|
def _get_subtitles(self, author, clip_id, lang, name, duration, video_id):
|
|
|
|
def _get_subtitles(self, author, clip_idx, lang, name, duration, video_id):
|
|
|
|
captions_post = {
|
|
|
|
captions_post = {
|
|
|
|
'a': author,
|
|
|
|
'a': author,
|
|
|
|
'cn': clip_id,
|
|
|
|
'cn': clip_idx,
|
|
|
|
'lc': lang,
|
|
|
|
'lc': lang,
|
|
|
|
'm': name,
|
|
|
|
'm': name,
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -195,13 +195,13 @@ class PluralsightIE(PluralsightBaseIE):
|
|
|
|
|
|
|
|
|
|
|
|
author = qs.get('author', [None])[0]
|
|
|
|
author = qs.get('author', [None])[0]
|
|
|
|
name = qs.get('name', [None])[0]
|
|
|
|
name = qs.get('name', [None])[0]
|
|
|
|
clip_id = qs.get('clip', [None])[0]
|
|
|
|
clip_idx = qs.get('clip', [None])[0]
|
|
|
|
course_name = qs.get('course', [None])[0]
|
|
|
|
course_name = qs.get('course', [None])[0]
|
|
|
|
|
|
|
|
|
|
|
|
if any(not f for f in (author, name, clip_id, course_name,)):
|
|
|
|
if any(not f for f in (author, name, clip_idx, course_name,)):
|
|
|
|
raise ExtractorError('Invalid URL', expected=True)
|
|
|
|
raise ExtractorError('Invalid URL', expected=True)
|
|
|
|
|
|
|
|
|
|
|
|
display_id = '%s-%s' % (name, clip_id)
|
|
|
|
display_id = '%s-%s' % (name, clip_idx)
|
|
|
|
|
|
|
|
|
|
|
|
course = self._download_course(course_name, url, display_id)
|
|
|
|
course = self._download_course(course_name, url, display_id)
|
|
|
|
|
|
|
|
|
|
|
@ -217,7 +217,7 @@ class PluralsightIE(PluralsightBaseIE):
|
|
|
|
clip_index = clip_.get('index')
|
|
|
|
clip_index = clip_.get('index')
|
|
|
|
if clip_index is None:
|
|
|
|
if clip_index is None:
|
|
|
|
continue
|
|
|
|
continue
|
|
|
|
if compat_str(clip_index) == clip_id:
|
|
|
|
if compat_str(clip_index) == clip_idx:
|
|
|
|
clip = clip_
|
|
|
|
clip = clip_
|
|
|
|
break
|
|
|
|
break
|
|
|
|
|
|
|
|
|
|
|
@ -225,6 +225,7 @@ class PluralsightIE(PluralsightBaseIE):
|
|
|
|
raise ExtractorError('Unable to resolve clip')
|
|
|
|
raise ExtractorError('Unable to resolve clip')
|
|
|
|
|
|
|
|
|
|
|
|
title = clip['title']
|
|
|
|
title = clip['title']
|
|
|
|
|
|
|
|
clip_id = clip.get('clipName') or clip.get('name') or clip['clipId']
|
|
|
|
|
|
|
|
|
|
|
|
QUALITIES = {
|
|
|
|
QUALITIES = {
|
|
|
|
'low': {'width': 640, 'height': 480},
|
|
|
|
'low': {'width': 640, 'height': 480},
|
|
|
@ -277,7 +278,7 @@ class PluralsightIE(PluralsightBaseIE):
|
|
|
|
clip_post = {
|
|
|
|
clip_post = {
|
|
|
|
'author': author,
|
|
|
|
'author': author,
|
|
|
|
'includeCaptions': False,
|
|
|
|
'includeCaptions': False,
|
|
|
|
'clipIndex': int(clip_id),
|
|
|
|
'clipIndex': int(clip_idx),
|
|
|
|
'courseName': course_name,
|
|
|
|
'courseName': course_name,
|
|
|
|
'locale': 'en',
|
|
|
|
'locale': 'en',
|
|
|
|
'moduleName': name,
|
|
|
|
'moduleName': name,
|
|
|
@ -330,10 +331,10 @@ class PluralsightIE(PluralsightBaseIE):
|
|
|
|
|
|
|
|
|
|
|
|
# TODO: other languages?
|
|
|
|
# TODO: other languages?
|
|
|
|
subtitles = self.extract_subtitles(
|
|
|
|
subtitles = self.extract_subtitles(
|
|
|
|
author, clip_id, 'en', name, duration, display_id)
|
|
|
|
author, clip_idx, 'en', name, duration, display_id)
|
|
|
|
|
|
|
|
|
|
|
|
return {
|
|
|
|
return {
|
|
|
|
'id': clip.get('clipName') or clip['name'],
|
|
|
|
'id': clip_id,
|
|
|
|
'title': title,
|
|
|
|
'title': title,
|
|
|
|
'duration': duration,
|
|
|
|
'duration': duration,
|
|
|
|
'creator': author,
|
|
|
|
'creator': author,
|
|
|
|