diff options
Diffstat (limited to 'youtube_dl/extractor/teachable.py')
-rw-r--r-- | youtube_dl/extractor/teachable.py | 80 |
1 files changed, 24 insertions, 56 deletions
diff --git a/youtube_dl/extractor/teachable.py b/youtube_dl/extractor/teachable.py index a75369dbe..7d2e34b3b 100644 --- a/youtube_dl/extractor/teachable.py +++ b/youtube_dl/extractor/teachable.py @@ -4,12 +4,11 @@ import re from .common import InfoExtractor from .wistia import WistiaIE +from ..compat import compat_str from ..utils import ( clean_html, ExtractorError, - int_or_none, get_element_by_class, - strip_or_none, urlencode_postdata, urljoin, ) @@ -21,8 +20,8 @@ class TeachableBaseIE(InfoExtractor): _SITES = { # Only notable ones here - 'v1.upskillcourses.com': 'upskill', - 'gns3.teachable.com': 'gns3', + 'upskillcourses.com': 'upskill', + 'academy.gns3.com': 'gns3', 'academyhacker.com': 'academyhacker', 'stackskills.com': 'stackskills', 'market.saleshacker.com': 'saleshacker', @@ -59,7 +58,7 @@ class TeachableBaseIE(InfoExtractor): self._logged_in = True return - login_url = urlh.geturl() + login_url = compat_str(urlh.geturl()) login_form = self._hidden_inputs(login_page) @@ -111,29 +110,27 @@ class TeachableIE(TeachableBaseIE): ''' % TeachableBaseIE._VALID_URL_SUB_TUPLE _TESTS = [{ - 'url': 'https://gns3.teachable.com/courses/gns3-certified-associate/lectures/6842364', + 'url': 'http://upskillcourses.com/courses/essential-web-developer-course/lectures/1747100', 'info_dict': { - 'id': 'untlgzk1v7', - 'ext': 'bin', - 'title': 'Overview', - 'description': 'md5:071463ff08b86c208811130ea1c2464c', - 'duration': 736.4, - 'timestamp': 1542315762, - 'upload_date': '20181115', - 'chapter': 'Welcome', - 'chapter_number': 1, + 'id': 'uzw6zw58or', + 'ext': 'mp4', + 'title': 'Welcome to the Course!', + 'description': 'md5:65edb0affa582974de4625b9cdea1107', + 'duration': 138.763, + 'timestamp': 1479846621, + 'upload_date': '20161122', }, 'params': { 'skip_download': True, }, }, { - 'url': 'http://v1.upskillcourses.com/courses/119763/lectures/1747100', + 'url': 'http://upskillcourses.com/courses/119763/lectures/1747100', 'only_matching': True, }, { - 'url': 'https://gns3.teachable.com/courses/423415/lectures/6885939', + 'url': 'https://academy.gns3.com/courses/423415/lectures/6885939', 'only_matching': True, }, { - 'url': 'teachable:https://v1.upskillcourses.com/courses/essential-web-developer-course/lectures/1747100', + 'url': 'teachable:https://upskillcourses.com/courses/essential-web-developer-course/lectures/1747100', 'only_matching': True, }] @@ -163,51 +160,22 @@ class TeachableIE(TeachableBaseIE): webpage = self._download_webpage(url, video_id) - wistia_urls = WistiaIE._extract_urls(webpage) - if not wistia_urls: + wistia_url = WistiaIE._extract_url(webpage) + if not wistia_url: if any(re.search(p, webpage) for p in ( r'class=["\']lecture-contents-locked', r'>\s*Lecture contents locked', - r'id=["\']lecture-locked', - # https://academy.tailoredtutors.co.uk/courses/108779/lectures/1955313 - r'class=["\'](?:inner-)?lesson-locked', - r'>LESSON LOCKED<')): + r'id=["\']lecture-locked')): self.raise_login_required('Lecture contents locked') - raise ExtractorError('Unable to find video URL') title = self._og_search_title(webpage, default=None) - chapter = None - chapter_number = None - section_item = self._search_regex( - r'(?s)(?P<li><li[^>]+\bdata-lecture-id=["\']%s[^>]+>.+?</li>)' % video_id, - webpage, 'section item', default=None, group='li') - if section_item: - chapter_number = int_or_none(self._search_regex( - r'data-ss-position=["\'](\d+)', section_item, 'section id', - default=None)) - if chapter_number is not None: - sections = [] - for s in re.findall( - r'(?s)<div[^>]+\bclass=["\']section-title[^>]+>(.+?)</div>', webpage): - section = strip_or_none(clean_html(s)) - if not section: - sections = [] - break - sections.append(section) - if chapter_number <= len(sections): - chapter = sections[chapter_number - 1] - - entries = [{ + return { '_type': 'url_transparent', 'url': wistia_url, 'ie_key': WistiaIE.ie_key(), 'title': title, - 'chapter': chapter, - 'chapter_number': chapter_number, - } for wistia_url in wistia_urls] - - return self.playlist_result(entries, video_id, title) + } class TeachableCourseIE(TeachableBaseIE): @@ -219,20 +187,20 @@ class TeachableCourseIE(TeachableBaseIE): /(?:courses|p)/(?:enrolled/)?(?P<id>[^/?#&]+) ''' % TeachableBaseIE._VALID_URL_SUB_TUPLE _TESTS = [{ - 'url': 'http://v1.upskillcourses.com/courses/essential-web-developer-course/', + 'url': 'http://upskillcourses.com/courses/essential-web-developer-course/', 'info_dict': { 'id': 'essential-web-developer-course', 'title': 'The Essential Web Developer Course (Free)', }, 'playlist_count': 192, }, { - 'url': 'http://v1.upskillcourses.com/courses/119763/', + 'url': 'http://upskillcourses.com/courses/119763/', 'only_matching': True, }, { - 'url': 'http://v1.upskillcourses.com/courses/enrolled/119763', + 'url': 'http://upskillcourses.com/courses/enrolled/119763', 'only_matching': True, }, { - 'url': 'https://gns3.teachable.com/courses/enrolled/423415', + 'url': 'https://academy.gns3.com/courses/enrolled/423415', 'only_matching': True, }, { 'url': 'teachable:https://learn.vrdev.school/p/gear-vr-developer-mini', |