diff --git a/yt_dlp/extractor/tubetugraz.py b/yt_dlp/extractor/tubetugraz.py index ebabedc9c4..2199fea19a 100644 --- a/yt_dlp/extractor/tubetugraz.py +++ b/yt_dlp/extractor/tubetugraz.py @@ -21,17 +21,36 @@ def _perform_login(self, username, password): if not urlh: return - urlh = self._request_webpage( + content, urlh = self._download_webpage_handle( urlh.geturl(), None, fatal=False, headers={'referer': urlh.geturl()}, - note='logging in', errnote='unable to log in', data=urlencode_postdata({ + 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.geturl() == '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'
]*>(Bitte geben Sie einen OTP-Wert ein:)
', + content, 'TFA prompt', default=None): self.report_warning('unable to login: incorrect password') + return + + content, urlh = self._download_webpage_handle( + urlh.geturl(), None, fatal=False, headers={'referer': urlh.geturl()}, + 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.geturl() == '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')