[lynda:course] Add webpage extraction fallback (closes #12238)

This commit is contained in:
Sergey M․ 2017-02-24 05:01:31 +07:00
parent 0f57447de7
commit f2980fddeb
No known key found for this signature in database
GPG key ID: 2C393E0F18A9236D

View file

@ -260,9 +260,24 @@ def _real_extract(self, url):
course_path = mobj.group('coursepath') course_path = mobj.group('coursepath')
course_id = mobj.group('courseid') course_id = mobj.group('courseid')
item_template = 'https://www.lynda.com/%s/%%s-4.html' % course_path
course = self._download_json( course = self._download_json(
'https://www.lynda.com/ajax/player?courseId=%s&type=course' % course_id, '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': if course.get('Status') == 'NotFound':
raise ExtractorError( raise ExtractorError(
@ -283,7 +298,7 @@ def _real_extract(self, url):
if video_id: if video_id:
entries.append({ entries.append({
'_type': 'url_transparent', '_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(), 'ie_key': LyndaIE.ie_key(),
'chapter': chapter.get('Title'), 'chapter': chapter.get('Title'),
'chapter_number': int_or_none(chapter.get('ChapterIndex')), 'chapter_number': int_or_none(chapter.get('ChapterIndex')),