aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorpukkandan <pukkandan.ytdlp@gmail.com>2021-10-31 13:08:03 +0530
committerpukkandan <pukkandan.ytdlp@gmail.com>2021-10-31 13:08:03 +0530
commitda4832007574a60b397dff11f26cc20cace685de (patch)
tree812954b9b94c77eb3c1a4d17e3708cb79773665e
parent5b6cb5620797e745a113cfb8118ea7def1484784 (diff)
downloadhypervideo-pre-da4832007574a60b397dff11f26cc20cace685de.tar.lz
hypervideo-pre-da4832007574a60b397dff11f26cc20cace685de.tar.xz
hypervideo-pre-da4832007574a60b397dff11f26cc20cace685de.zip
[linkedin] Don't login multiple times
-rw-r--r--yt_dlp/extractor/linkedin.py6
1 files changed, 6 insertions, 0 deletions
diff --git a/yt_dlp/extractor/linkedin.py b/yt_dlp/extractor/linkedin.py
index 3ce906e2f..c2d347efd 100644
--- a/yt_dlp/extractor/linkedin.py
+++ b/yt_dlp/extractor/linkedin.py
@@ -19,6 +19,7 @@ from ..utils import (
class LinkedInLearningBaseIE(InfoExtractor):
_NETRC_MACHINE = 'linkedin'
_LOGIN_URL = 'https://www.linkedin.com/uas/login?trk=learning'
+ _logged_in = False
def _call_api(self, course_slug, fields, video_slug=None, resolution=None):
query = {
@@ -34,6 +35,8 @@ class LinkedInLearningBaseIE(InfoExtractor):
})
sub = ' %dp' % resolution
api_url = 'https://www.linkedin.com/learning-api/detailedCourses'
+ if not self._get_cookies(api_url).get('JSESSIONID'):
+ self.raise_login_required()
return self._download_json(
api_url, video_slug, 'Downloading%s JSON metadata' % sub, headers={
'Csrf-Token': self._get_cookies(api_url)['JSESSIONID'].value,
@@ -50,6 +53,8 @@ class LinkedInLearningBaseIE(InfoExtractor):
return self._get_urn_id(video_data) or '%s/%s' % (course_slug, video_slug)
def _real_initialize(self):
+ if self._logged_in:
+ return
email, password = self._get_login_info()
if email is None:
return
@@ -72,6 +77,7 @@ class LinkedInLearningBaseIE(InfoExtractor):
login_submit_page, 'error', default=None)
if error:
raise ExtractorError(error, expected=True)
+ LinkedInLearningBaseIE._logged_in = True
class LinkedInLearningIE(LinkedInLearningBaseIE):