]> jfr.im git - yt-dlp.git/blobdiff - yt_dlp/extractor/teachable.py
[ie/crunchyroll] Fix stream extraction (#10005)
[yt-dlp.git] / yt_dlp / extractor / teachable.py
index 37eae82bcc17d40addd9bdfc9575e476c1af8886..5eac9aa3fd0984390051ea5a6531aee8eccacac3 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
 
@@ -59,7 +56,7 @@ def is_logged(webpage):
             self._logged_in = True
             return
 
-        login_url = urlh.geturl()
+        login_url = urlh.url
 
         login_form = self._hidden_inputs(login_page)
 
@@ -102,6 +99,7 @@ def is_logged(webpage):
 
 
 class TeachableIE(TeachableBaseIE):
+    _WORKING = False
     _VALID_URL = r'''(?x)
                     (?:
                         %shttps?://(?P<site_t>[^/]+)|
@@ -143,12 +141,12 @@ 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 = self._match_valid_url(url)
@@ -163,7 +161,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',