Browse Source

[lynda:course] Modernize and make more robust

totalwebcasting
Sergey M․ 9 years ago
parent
commit
71bb016160
1 changed files with 9 additions and 8 deletions
  1. +9
    -8
      youtube_dl/extractor/lynda.py

+ 9
- 8
youtube_dl/extractor/lynda.py View File

@ -210,14 +210,13 @@ class LyndaCourseIE(LyndaBaseIE):
course_path = mobj.group('coursepath') course_path = mobj.group('coursepath')
course_id = mobj.group('courseid') 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, 'http://www.lynda.com/ajax/player?courseId=%s&type=course' % course_id,
course_id, 'Downloading course JSON') course_id, 'Downloading course JSON')
course_json = json.loads(page)
self._logout() self._logout()
if 'Status' in course_json and course_json['Status'] == 'NotFound':
if course.get('Status') == 'NotFound':
raise ExtractorError( raise ExtractorError(
'Course %s does not exist' % course_id, expected=True) '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 # Might want to extract videos right here from video['Formats'] as it seems 'Formats' is not provided
# by single video API anymore # 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 unaccessible_videos += 1
continue continue
videos.append(video['ID'])
video_id = video.get('ID')
if video_id:
videos.append(video_id)
if unaccessible_videos > 0: if unaccessible_videos > 0:
self._downloader.report_warning( self._downloader.report_warning(
@ -245,6 +246,6 @@ class LyndaCourseIE(LyndaBaseIE):
'Lynda') 'Lynda')
for video_id in videos] for video_id in videos]
course_title = course_json['Title']
course_title = course.get('Title')
return self.playlist_result(entries, course_id, course_title) return self.playlist_result(entries, course_id, course_title)

Loading…
Cancel
Save