[udemy:course] Skip non-video lectures

This commit is contained in:
Sergey M․ 2016-04-01 22:38:56 +06:00
parent 3f64379eda
commit 03caa463e7

View File

@ -193,12 +193,12 @@ class UdemyIE(InfoExtractor):
asset = lecture['asset'] asset = lecture['asset']
asset_type = asset.get('assetType') or asset.get('asset_type') asset_type = asset.get('asset_type') or asset.get('assetType')
if asset_type != 'Video': if asset_type != 'Video':
raise ExtractorError( raise ExtractorError(
'Lecture %s is not a video' % lecture_id, expected=True) 'Lecture %s is not a video' % lecture_id, expected=True)
stream_url = asset.get('streamUrl') or asset.get('stream_url') stream_url = asset.get('stream_url') or asset.get('streamUrl')
if stream_url: if stream_url:
youtube_url = self._search_regex( youtube_url = self._search_regex(
r'(https?://www\.youtube\.com/watch\?v=.*)', stream_url, 'youtube URL', default=None) r'(https?://www\.youtube\.com/watch\?v=.*)', stream_url, 'youtube URL', default=None)
@ -206,7 +206,7 @@ class UdemyIE(InfoExtractor):
return self.url_result(youtube_url, 'Youtube') return self.url_result(youtube_url, 'Youtube')
video_id = asset['id'] video_id = asset['id']
thumbnail = asset.get('thumbnailUrl') or asset.get('thumbnail_url') thumbnail = asset.get('thumbnail_url') or asset.get('thumbnailUrl')
duration = float_or_none(asset.get('data', {}).get('duration')) duration = float_or_none(asset.get('data', {}).get('duration'))
formats = [] formats = []
@ -325,7 +325,7 @@ class UdemyCourseIE(UdemyIE):
'https://www.udemy.com/api-2.0/courses/%s/cached-subscriber-curriculum-items' % course_id, 'https://www.udemy.com/api-2.0/courses/%s/cached-subscriber-curriculum-items' % course_id,
course_id, 'Downloading course curriculum', query={ course_id, 'Downloading course curriculum', query={
'fields[chapter]': 'title,object_index', 'fields[chapter]': 'title,object_index',
'fields[lecture]': 'title', 'fields[lecture]': 'title,asset',
'page_size': '1000', 'page_size': '1000',
}) })
@ -334,6 +334,11 @@ class UdemyCourseIE(UdemyIE):
for entry in response['results']: for entry in response['results']:
clazz = entry.get('_class') clazz = entry.get('_class')
if clazz == 'lecture': if clazz == 'lecture':
asset = entry.get('asset')
if isinstance(asset, dict):
asset_type = asset.get('asset_type') or asset.get('assetType')
if asset_type != 'Video':
continue
lecture_id = entry.get('id') lecture_id = entry.get('id')
if lecture_id: if lecture_id:
entry = { entry = {