diff options
author | Ferdinand Bachmann <theferdi265@gmail.com> | 2023-03-04 22:58:16 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-03-05 03:28:16 +0530 |
commit | f44cb4e77bb9be8be291d02ab6f79dc0b4c0d4a1 (patch) | |
tree | 55ef9bb56523664088a48137f620f683a4478c27 /yt_dlp/extractor/tubetugraz.py | |
parent | 46580ced56c90b559885aded6aa8f46f20a9cdce (diff) | |
download | hypervideo-pre-f44cb4e77bb9be8be291d02ab6f79dc0b4c0d4a1.tar.lz hypervideo-pre-f44cb4e77bb9be8be291d02ab6f79dc0b4c0d4a1.tar.xz hypervideo-pre-f44cb4e77bb9be8be291d02ab6f79dc0b4c0d4a1.zip |
[extractor/tubetugraz] Support `--twofactor` (#6424) (#6427)
Authored by: Ferdi265
Closes #6424
Diffstat (limited to 'yt_dlp/extractor/tubetugraz.py')
-rw-r--r-- | yt_dlp/extractor/tubetugraz.py | 25 |
1 files changed, 22 insertions, 3 deletions
diff --git a/yt_dlp/extractor/tubetugraz.py b/yt_dlp/extractor/tubetugraz.py index ebabedc9c..2199fea19 100644 --- a/yt_dlp/extractor/tubetugraz.py +++ b/yt_dlp/extractor/tubetugraz.py @@ -21,17 +21,36 @@ class TubeTuGrazBaseIE(InfoExtractor): 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'<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.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') |