diff options
| -rw-r--r-- | youtube_dl/extractor/egghead.py | 49 | ||||
| -rw-r--r-- | youtube_dl/extractor/extractors.py | 5 | 
2 files changed, 53 insertions, 1 deletions
| diff --git a/youtube_dl/extractor/egghead.py b/youtube_dl/extractor/egghead.py index c86f52319..e4a3046af 100644 --- a/youtube_dl/extractor/egghead.py +++ b/youtube_dl/extractor/egghead.py @@ -2,6 +2,11 @@  from __future__ import unicode_literals  from .common import InfoExtractor +from ..utils import ( +    int_or_none, +    try_get, +    unified_timestamp, +)  class EggheadCourseIE(InfoExtractor): @@ -33,3 +38,47 @@ class EggheadCourseIE(InfoExtractor):          return self.playlist_result(              entries, playlist_id, course.get('title'),              course.get('description')) + + +class EggheadLessonIE(InfoExtractor): +    IE_DESC = 'egghead.io lesson' +    IE_NAME = 'egghead:lesson' +    _VALID_URL = r'https://egghead\.io/lessons/(?P<id>[^/?#&]+)' +    _TEST = { +        'url': 'https://egghead.io/lessons/javascript-linear-data-flow-with-container-style-types-box', +        'info_dict': { +            'id': 'fv5yotjxcg', +            'ext': 'mp4', +            'title': 'Create linear data flow with container style types (Box)', +            'description': 'md5:9aa2cdb6f9878ed4c39ec09e85a8150e', +            'thumbnail': r're:^https?:.*\.jpg$', +            'timestamp': 1481296768, +            'upload_date': '20161209', +            'duration': 304, +            'view_count': 0, +            'tags': ['javascript', 'free'], +        }, +        'params': { +            'skip_download': True, +        }, +    } + +    def _real_extract(self, url): +        lesson_id = self._match_id(url) + +        lesson = self._download_json( +            'https://egghead.io/api/v1/lessons/%s' % lesson_id, lesson_id) + +        return { +            '_type': 'url_transparent', +            'ie_key': 'Wistia', +            'url': 'wistia:%s' % lesson['wistia_id'], +            'id': lesson['wistia_id'], +            'title': lesson.get('title'), +            'description': lesson.get('summary'), +            'thumbnail': lesson.get('thumb_nail'), +            'timestamp': unified_timestamp(lesson.get('published_at')), +            'duration': int_or_none(lesson.get('duration')), +            'view_count': int_or_none(lesson.get('plays_count')), +            'tags': try_get(lesson, lambda x: x['tag_list'], list), +        } diff --git a/youtube_dl/extractor/extractors.py b/youtube_dl/extractor/extractors.py index e8a066b83..db7616caa 100644 --- a/youtube_dl/extractor/extractors.py +++ b/youtube_dl/extractor/extractors.py @@ -298,7 +298,10 @@ from .dw import (  from .eagleplatform import EaglePlatformIE  from .ebaumsworld import EbaumsWorldIE  from .echomsk import EchoMskIE -from .egghead import EggheadCourseIE +from .egghead import ( +    EggheadCourseIE, +    EggheadLessonIE, +)  from .ehow import EHowIE  from .eighttracks import EightTracksIE  from .einthusan import EinthusanIE | 
