[udemy] Extract chapter info
authorSergey M․ <dstftw@gmail.com>
Wed, 30 Dec 2015 21:11:21 +0000 (03:11 +0600)
committerSergey M․ <dstftw@gmail.com>
Wed, 30 Dec 2015 21:11:21 +0000 (03:11 +0600)
youtube_dl/extractor/udemy.py

index ce7e211fc9c31c3a2af920e8bf07a4c9d21f2216..41097829df0e53f5e39c7aa6cc5894cedb492b78 100644 (file)
@@ -244,10 +244,25 @@ class UdemyCourseIE(UdemyIE):
             'https://www.udemy.com/api-1.1/courses/%s/curriculum' % course_id,
             course_id, 'Downloading course curriculum')
 
-        entries = [
-            self.url_result(
-                'https://www.udemy.com/%s/#/lecture/%s' % (course_path, asset['id']), 'Udemy')
-            for asset in response if asset.get('assetType') or asset.get('asset_type') == 'Video'
-        ]
+        entries = []
+        chapter, chapter_id = None, None
+        for asset in response:
+            asset_type = asset.get('assetType') or asset.get('asset_type')
+            if asset_type == 'Video':
+                asset_id = asset.get('id')
+                if asset_id:
+                    entry = {
+                        '_type': 'url_transparent',
+                        'url': 'https://www.udemy.com/%s/#/lecture/%s' % (course_path, asset['id']),
+                        'ie_key': UdemyIE.ie_key(),
+                    }
+                    if chapter_id:
+                        entry['chapter_id'] = chapter_id
+                    if chapter:
+                        entry['chapter'] = chapter
+                    entries.append(entry)
+            elif asset.get('type') == 'chapter':
+                chapter_id = asset.get('index') or asset.get('object_index')
+                chapter = asset.get('title')
 
         return self.playlist_result(entries, course_id, course_title)