diff options
author | Sergey M․ <[email protected]> | 2017-02-24 05:01:31 +0700 |
---|---|---|
committer | Sergey M․ <[email protected]> | 2017-02-24 05:01:31 +0700 |
commit | f2980fddeb587f113afe15cc3ecf4bfc3911ca67 (patch) | |
tree | 038e0c539d3af5346b719b23791c10a921380c1f /youtube_dl/extractor/lynda.py | |
parent | 0f57447de790fb2434cdd80d819876859ac4fcc0 (diff) | |
download | youtube-dl-f2980fddeb587f113afe15cc3ecf4bfc3911ca67.tar.gz youtube-dl-f2980fddeb587f113afe15cc3ecf4bfc3911ca67.zip |
[lynda:course] Add webpage extraction fallback (closes #12238)
Diffstat (limited to 'youtube_dl/extractor/lynda.py')
-rw-r--r-- | youtube_dl/extractor/lynda.py | 19 |
1 files changed, 17 insertions, 2 deletions
diff --git a/youtube_dl/extractor/lynda.py b/youtube_dl/extractor/lynda.py index da94eab56..d2f75296a 100644 --- a/youtube_dl/extractor/lynda.py +++ b/youtube_dl/extractor/lynda.py @@ -260,9 +260,24 @@ class LyndaCourseIE(LyndaBaseIE): course_path = mobj.group('coursepath') course_id = mobj.group('courseid') + item_template = 'https://www.lynda.com/%s/%%s-4.html' % course_path + course = self._download_json( 'https://www.lynda.com/ajax/player?courseId=%s&type=course' % course_id, - course_id, 'Downloading course JSON') + course_id, 'Downloading course JSON', fatal=False) + + if not course: + webpage = self._download_webpage(url, course_id) + entries = [ + self.url_result( + item_template % video_id, ie=LyndaIE.ie_key(), + video_id=video_id) + for video_id in re.findall( + r'data-video-id=["\'](\d+)', webpage)] + return self.playlist_result( + entries, course_id, + self._og_search_title(webpage, fatal=False), + self._og_search_description(webpage)) if course.get('Status') == 'NotFound': raise ExtractorError( @@ -283,7 +298,7 @@ class LyndaCourseIE(LyndaBaseIE): if video_id: entries.append({ '_type': 'url_transparent', - 'url': 'https://www.lynda.com/%s/%s-4.html' % (course_path, video_id), + 'url': item_template % video_id, 'ie_key': LyndaIE.ie_key(), 'chapter': chapter.get('Title'), 'chapter_number': int_or_none(chapter.get('ChapterIndex')), |