aboutsummaryrefslogtreecommitdiffstats
path: root/hypervideo_dl/extractor/animelab.py
diff options
context:
space:
mode:
Diffstat (limited to 'hypervideo_dl/extractor/animelab.py')
-rw-r--r--hypervideo_dl/extractor/animelab.py35
1 files changed, 14 insertions, 21 deletions
diff --git a/hypervideo_dl/extractor/animelab.py b/hypervideo_dl/extractor/animelab.py
index 4fb7ee4..1c2cc47 100644
--- a/hypervideo_dl/extractor/animelab.py
+++ b/hypervideo_dl/extractor/animelab.py
@@ -15,25 +15,21 @@ from ..compat import compat_HTTPError
class AnimeLabBaseIE(InfoExtractor):
- _LOGIN_REQUIRED = True
_LOGIN_URL = 'https://www.animelab.com/login'
_NETRC_MACHINE = 'animelab'
+ _LOGGED_IN = False
- def _login(self):
- def is_logged_in(login_webpage):
- return 'Sign In' not in login_webpage
+ def _is_logged_in(self, login_page=None):
+ if not self._LOGGED_IN:
+ if not login_page:
+ login_page = self._download_webpage(self._LOGIN_URL, None, 'Downloading login page')
+ AnimeLabBaseIE._LOGGED_IN = 'Sign In' not in login_page
+ return self._LOGGED_IN
- login_page = self._download_webpage(
- self._LOGIN_URL, None, 'Downloading login page')
-
- # Check if already logged in
- if is_logged_in(login_page):
+ def _perform_login(self, username, password):
+ if self._is_logged_in():
return
- (username, password) = self._get_login_info()
- if username is None and self._LOGIN_REQUIRED:
- self.raise_login_required('Login is required to access any AnimeLab content')
-
login_form = {
'email': username,
'password': password,
@@ -47,17 +43,14 @@ class AnimeLabBaseIE(InfoExtractor):
except ExtractorError as e:
if isinstance(e.cause, compat_HTTPError) and e.cause.code == 400:
raise ExtractorError('Unable to log in (wrong credentials?)', expected=True)
- else:
- raise
+ raise
- # if login was successful
- if is_logged_in(response):
- return
-
- raise ExtractorError('Unable to login (cannot verify if logged in)')
+ if not self._is_logged_in(response):
+ raise ExtractorError('Unable to login (cannot verify if logged in)')
def _real_initialize(self):
- self._login()
+ if not self._is_logged_in():
+ self.raise_login_required('Login is required to access any AnimeLab content')
class AnimeLabIE(AnimeLabBaseIE):