aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergey M․ <dstftw@gmail.com>2015-11-06 23:10:07 +0600
committerSergey M․ <dstftw@gmail.com>2015-11-06 23:10:07 +0600
commit71bb016160744a80fecaadf5b75b0dc2b1e8089b (patch)
treef3ae840a814b877dffd06290782a831cb8db33a3
parent179ffab69c3359ab7d0a7b0a2b63c94d8c70af67 (diff)
[lynda:course] Modernize and make more robust
-rw-r--r--youtube_dl/extractor/lynda.py17
1 files changed, 9 insertions, 8 deletions
diff --git a/youtube_dl/extractor/lynda.py b/youtube_dl/extractor/lynda.py
index 67f2025de..98474ded9 100644
--- a/youtube_dl/extractor/lynda.py
+++ b/youtube_dl/extractor/lynda.py
@@ -210,14 +210,13 @@ class LyndaCourseIE(LyndaBaseIE):
course_path = mobj.group('coursepath')
course_id = mobj.group('courseid')
- page = self._download_webpage(
+ course = self._download_json(
'http://www.lynda.com/ajax/player?courseId=%s&type=course' % course_id,
course_id, 'Downloading course JSON')
- course_json = json.loads(page)
self._logout()
- if 'Status' in course_json and course_json['Status'] == 'NotFound':
+ if course.get('Status') == 'NotFound':
raise ExtractorError(
'Course %s does not exist' % course_id, expected=True)
@@ -227,12 +226,14 @@ class LyndaCourseIE(LyndaBaseIE):
# Might want to extract videos right here from video['Formats'] as it seems 'Formats' is not provided
# by single video API anymore
- for chapter in course_json['Chapters']:
- for video in chapter['Videos']:
- if video['HasAccess'] is False:
+ for chapter in course['Chapters']:
+ for video in chapter.get('Videos', []):
+ if video.get('HasAccess') is False:
unaccessible_videos += 1
continue
- videos.append(video['ID'])
+ video_id = video.get('ID')
+ if video_id:
+ videos.append(video_id)
if unaccessible_videos > 0:
self._downloader.report_warning(
@@ -245,6 +246,6 @@ class LyndaCourseIE(LyndaBaseIE):
'Lynda')
for video_id in videos]
- course_title = course_json['Title']
+ course_title = course.get('Title')
return self.playlist_result(entries, course_id, course_title)