]> jfr.im git - yt-dlp.git/commitdiff
[extractor/crunchyroll] Better message for premium videos
authorpukkandan <redacted>
Mon, 13 Feb 2023 19:36:38 +0000 (01:06 +0530)
committerpukkandan <redacted>
Mon, 13 Feb 2023 19:37:07 +0000 (01:07 +0530)
Closes #6227

yt_dlp/extractor/crunchyroll.py

index 3c9f8bbf0edb3b06f8d3c7806416b27b8ed214e7..7d356d673d1aa43be98939f9bd4be7c097d6ad58 100644 (file)
@@ -20,8 +20,12 @@ class CrunchyrollBaseIE(InfoExtractor):
     _NETRC_MACHINE = 'crunchyroll'
     params = None
 
+    @property
+    def is_logged_in(self):
+        return self._get_cookies(self._LOGIN_URL).get('etp_rt')
+
     def _perform_login(self, username, password):
-        if self._get_cookies(self._LOGIN_URL).get('etp_rt'):
+        if self.is_logged_in:
             return
 
         upsell_response = self._download_json(
@@ -46,7 +50,7 @@ def _perform_login(self, username, password):
             }).encode('ascii'))
         if login_response['code'] != 'ok':
             raise ExtractorError('Login failed. Server message: %s' % login_response['message'], expected=True)
-        if not self._get_cookies(self._LOGIN_URL).get('etp_rt'):
+        if not self.is_logged_in:
             raise ExtractorError('Login succeeded but did not set etp_rt cookie')
 
     def _get_embedded_json(self, webpage, display_id):
@@ -157,7 +161,10 @@ def _real_extract(self, url):
             f'{api_domain}/cms/v2{bucket}/episodes/{internal_id}', display_id,
             note='Retrieving episode metadata', query=params)
         if episode_response.get('is_premium_only') and not episode_response.get('playback'):
-            raise ExtractorError('This video is for premium members only.', expected=True)
+            if self.is_logged_in:
+                raise ExtractorError('This video is for premium members only', expected=True)
+            else:
+                self.raise_login_required('This video is for premium members only')
 
         stream_response = self._download_json(
             f'{api_domain}{episode_response["__links__"]["streams"]["href"]}', display_id,