diff options
Diffstat (limited to 'hypervideo_dl/extractor/tubetugraz.py')
-rw-r--r-- | hypervideo_dl/extractor/tubetugraz.py | 27 |
1 files changed, 23 insertions, 4 deletions
diff --git a/hypervideo_dl/extractor/tubetugraz.py b/hypervideo_dl/extractor/tubetugraz.py index ebabedc..a351e4e 100644 --- a/hypervideo_dl/extractor/tubetugraz.py +++ b/hypervideo_dl/extractor/tubetugraz.py @@ -21,17 +21,36 @@ class TubeTuGrazBaseIE(InfoExtractor): if not urlh: return - urlh = self._request_webpage( - urlh.geturl(), None, fatal=False, headers={'referer': urlh.geturl()}, - note='logging in', errnote='unable to log in', data=urlencode_postdata({ + content, urlh = self._download_webpage_handle( + urlh.url, None, fatal=False, headers={'referer': urlh.url}, + note='logging in', errnote='unable to log in', + data=urlencode_postdata({ 'lang': 'de', '_eventId_proceed': '', 'j_username': username, 'j_password': password })) + if not urlh or urlh.url == 'https://tube.tugraz.at/paella/ui/index.html': + return - if urlh and urlh.geturl() != 'https://tube.tugraz.at/paella/ui/index.html': + if not self._html_search_regex( + r'<p\b[^>]*>(Bitte geben Sie einen OTP-Wert ein:)</p>', + content, 'TFA prompt', default=None): self.report_warning('unable to login: incorrect password') + return + + content, urlh = self._download_webpage_handle( + urlh.url, None, fatal=False, headers={'referer': urlh.url}, + note='logging in with TFA', errnote='unable to log in with TFA', + data=urlencode_postdata({ + 'lang': 'de', + '_eventId_proceed': '', + 'j_tokenNumber': self._get_tfa_info(), + })) + if not urlh or urlh.url == 'https://tube.tugraz.at/paella/ui/index.html': + return + + self.report_warning('unable to login: incorrect TFA code') def _extract_episode(self, episode_info): id = episode_info.get('id') |