From 696ac32838e18eda2932bf0fd0beeb7941a42bc9 Mon Sep 17 00:00:00 2001 From: Mozi <29089388+pzhlkj6612@users.noreply.github.com> Date: Thu, 25 Apr 2024 17:13:55 +0000 Subject: [PATCH 1/2] [ie/brilliantpala] Check if cookies are invalidated --- yt_dlp/extractor/brilliantpala.py | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/yt_dlp/extractor/brilliantpala.py b/yt_dlp/extractor/brilliantpala.py index 0bf8622c1..5c2d43120 100644 --- a/yt_dlp/extractor/brilliantpala.py +++ b/yt_dlp/extractor/brilliantpala.py @@ -27,8 +27,16 @@ class BrilliantpalaBaseIE(InfoExtractor): r'"username"\s*:\s*"(?P[^"]+)"', webpage, 'logged-in username') def _perform_login(self, username, password): - login_form = self._hidden_inputs(self._download_webpage( - self._LOGIN_API, None, 'Downloading login page')) + login_page, urlh = self._download_webpage_handle( + self._LOGIN_API, None, 'Downloading login page', expected_status=401) + if not (urlh.status == 401 or urlh.url.startswith(self._LOGIN_API)): + self.write_debug('Cookies are valid, no login required.') + return + + if urlh.status == 401: + login_page = self._download_webpage(self._LOGIN_API, None, 'Downloading login page') + + login_form = self._hidden_inputs(login_page) login_form.update({ 'username': username, 'password': password, From 569d25e0faeea0641f87cb3461b2c48022473d7e Mon Sep 17 00:00:00 2001 From: Mozi <29089388+pzhlkj6612@users.noreply.github.com> Date: Fri, 26 Apr 2024 05:22:25 +0000 Subject: [PATCH 2/2] add comments about http 401 --- yt_dlp/extractor/brilliantpala.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/yt_dlp/extractor/brilliantpala.py b/yt_dlp/extractor/brilliantpala.py index 5c2d43120..f18982973 100644 --- a/yt_dlp/extractor/brilliantpala.py +++ b/yt_dlp/extractor/brilliantpala.py @@ -34,6 +34,8 @@ class BrilliantpalaBaseIE(InfoExtractor): return if urlh.status == 401: + # The stored cookies have been invalidated. + # No login page will be returned and cookies will be reset, so visit the page again. login_page = self._download_webpage(self._LOGIN_API, None, 'Downloading login page') login_form = self._hidden_inputs(login_page)