diff options
| author | Sergey M․ <dstftw@gmail.com> | 2015-11-06 23:10:07 +0600 | 
|---|---|---|
| committer | Sergey M․ <dstftw@gmail.com> | 2015-11-06 23:10:07 +0600 | 
| commit | 71bb016160744a80fecaadf5b75b0dc2b1e8089b (patch) | |
| tree | f3ae840a814b877dffd06290782a831cb8db33a3 | |
| parent | 179ffab69c3359ab7d0a7b0a2b63c94d8c70af67 (diff) | |
[lynda:course] Modernize and make more robust
| -rw-r--r-- | youtube_dl/extractor/lynda.py | 17 | 
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)  | 
