]> jfr.im git - yt-dlp.git/blobdiff - yt_dlp/extractor/teachable.py
[extractors] Use new framework for existing embeds (#4307)
[yt-dlp.git] / yt_dlp / extractor / teachable.py
index 2394f86d4b8433dbd443c47ad8ad459b311f69cc..c212a4926e8df10bc47a0d05edc559baa9dde67b 100644 (file)
@@ -1,5 +1,3 @@
-from __future__ import unicode_literals
-
 import re
 
 from .common import InfoExtractor
@@ -40,8 +38,7 @@ def _login(self, site):
         if self._logged_in:
             return
 
-        username, password = self._get_login_info(
-            netrc_machine=self._SITES.get(site, site))
+        username, password = self._get_login_info(netrc_machine=self._SITES.get(site, site))
         if username is None:
             return
 
@@ -143,15 +140,15 @@ def _is_teachable(webpage):
             r'<link[^>]+href=["\']https?://(?:process\.fs|assets)\.teachablecdn\.com',
             webpage)
 
-    @staticmethod
-    def _extract_url(webpage, source_url):
-        if not TeachableIE._is_teachable(webpage):
-            return
-        if re.match(r'https?://[^/]+/(?:courses|p)', source_url):
-            return '%s%s' % (TeachableBaseIE._URL_PREFIX, source_url)
+    @classmethod
+    def _extract_embed_urls(cls, url, webpage):
+        if cls._is_teachable(webpage):
+            if re.match(r'https?://[^/]+/(?:courses|p)', url):
+                yield f'{cls._URL_PREFIX}{url}'
+                raise cls.StopExtraction()
 
     def _real_extract(self, url):
-        mobj = re.match(self._VALID_URL, url)
+        mobj = self._match_valid_url(url)
         site = mobj.group('site') or mobj.group('site_t')
         video_id = mobj.group('id')
 
@@ -163,7 +160,7 @@ def _real_extract(self, url):
 
         webpage = self._download_webpage(url, video_id)
 
-        wistia_urls = WistiaIE._extract_urls(webpage)
+        wistia_urls = WistiaIE._extract_embed_urls(url, webpage)
         if not wistia_urls:
             if any(re.search(p, webpage) for p in (
                     r'class=["\']lecture-contents-locked',
@@ -248,7 +245,7 @@ def suitable(cls, url):
             TeachableCourseIE, cls).suitable(url)
 
     def _real_extract(self, url):
-        mobj = re.match(self._VALID_URL, url)
+        mobj = self._match_valid_url(url)
         site = mobj.group('site') or mobj.group('site_t')
         course_id = mobj.group('id')