Browse Source

[egghead:course] Add support for egghead.io course playlists

Individual egghead videos are already handled by the generic/Wistia extractors.
totalwebcasting
Philipp Hagemeister 8 years ago
parent
commit
8084951b7f
3 changed files with 44 additions and 1 deletions
  1. +4
    -1
      ChangeLog
  2. +39
    -0
      youtube_dl/extractor/egghead.py
  3. +1
    -0
      youtube_dl/extractor/extractors.py

+ 4
- 1
ChangeLog View File

@ -1,3 +1,7 @@
version <unreleased>
+ [egghead:course] Add support for egghead.io courses
version 2017.01.08 version 2017.01.08
Core Core
@ -14,7 +18,6 @@ Extractors
* [comedycentral/mtv] Add support for HLS videos (#11600) * [comedycentral/mtv] Add support for HLS videos (#11600)
* [discoverygo] Fix JSON data parsing (#11219, #11522) * [discoverygo] Fix JSON data parsing (#11219, #11522)
version 2017.01.05 version 2017.01.05
Extractors Extractors


+ 39
- 0
youtube_dl/extractor/egghead.py View File

@ -0,0 +1,39 @@
# coding: utf-8
from __future__ import unicode_literals
import re
from .common import InfoExtractor
class EggheadCourseIE(InfoExtractor):
IE_DESC = 'egghead.io course'
IE_NAME = 'egghead:course'
_VALID_URL = r'https://egghead\.io/courses/(?P<id>[a-zA-Z_0-9-]+)'
_TEST = {
'url': 'https://egghead.io/courses/professor-frisby-introduces-composable-functional-javascript',
'playlist_count': 29,
'info_dict': {
'id': 'professor-frisby-introduces-composable-functional-javascript',
'title': 'Professor Frisby Introduces Composable Functional JavaScript',
'description': 're:(?s)^This course teaches the ubiquitous.*You\'ll start composing functionality before you know it.$',
},
}
def _real_extract(self, url):
playlist_id = self._match_id(url)
webpage = self._download_webpage(url, playlist_id)
title = self._html_search_regex(r'<h1 class="title">([^<]+)</h1>', webpage, 'title')
ul = self._search_regex(r'(?s)<ul class="series-lessons-list">(.*?)</ul>', webpage, 'session list')
found = re.findall(r'(?s)<a class="[^"]*"\s*href="([^"]+)">\s*<li class="item', ul)
entries = [self.url_result(m) for m in found]
return {
'_type': 'playlist',
'id': playlist_id,
'title': title,
'description': self._og_search_description(webpage),
'entries': entries,
}

+ 1
- 0
youtube_dl/extractor/extractors.py View File

@ -252,6 +252,7 @@ from .dw import (
from .eagleplatform import EaglePlatformIE from .eagleplatform import EaglePlatformIE
from .ebaumsworld import EbaumsWorldIE from .ebaumsworld import EbaumsWorldIE
from .echomsk import EchoMskIE from .echomsk import EchoMskIE
from .egghead import EggheadCourseIE
from .ehow import EHowIE from .ehow import EHowIE
from .eighttracks import EightTracksIE from .eighttracks import EightTracksIE
from .einthusan import EinthusanIE from .einthusan import EinthusanIE


Loading…
Cancel
Save