mirror of
				https://github.com/yt-dlp/yt-dlp.git
				synced 2025-10-31 14:45:14 +00:00 
			
		
		
		
	[extractor/ciscowebex] Support password-protected videos (#5601)
Authored by: damianoamatruda
This commit is contained in:
		| @@ -1,5 +1,6 @@ | |||||||
| from .common import InfoExtractor | from .common import InfoExtractor | ||||||
| from ..utils import ( | from ..utils import ( | ||||||
|  |     ExtractorError, | ||||||
|     int_or_none, |     int_or_none, | ||||||
|     try_get, |     try_get, | ||||||
|     unified_timestamp, |     unified_timestamp, | ||||||
| @@ -38,11 +39,30 @@ class CiscoWebexIE(InfoExtractor): | |||||||
|         siteurl = mobj.group('siteurl_1') or mobj.group('siteurl_2') |         siteurl = mobj.group('siteurl_1') or mobj.group('siteurl_2') | ||||||
|         video_id = mobj.group('id') |         video_id = mobj.group('id') | ||||||
| 
 | 
 | ||||||
|         stream = self._download_json( |         password = self.get_param('videopassword') | ||||||
|  | 
 | ||||||
|  |         headers = {'Accept': 'application/json'} | ||||||
|  |         if password: | ||||||
|  |             headers['accessPwd'] = password | ||||||
|  | 
 | ||||||
|  |         stream, urlh = self._download_json_handle( | ||||||
|             'https://%s.webex.com/webappng/api/v1/recordings/%s/stream' % (subdomain, video_id), |             'https://%s.webex.com/webappng/api/v1/recordings/%s/stream' % (subdomain, video_id), | ||||||
|             video_id, fatal=False, query={'siteurl': siteurl}) |             video_id, headers=headers, query={'siteurl': siteurl}, expected_status=(403, 429)) | ||||||
|         if not stream: | 
 | ||||||
|             self.raise_login_required(method='cookies') |         if urlh.status == 403: | ||||||
|  |             if stream['code'] == 53004: | ||||||
|  |                 self.raise_login_required() | ||||||
|  |             if stream['code'] == 53005: | ||||||
|  |                 if password: | ||||||
|  |                     raise ExtractorError('Wrong password', expected=True) | ||||||
|  |                 raise ExtractorError( | ||||||
|  |                     'This video is protected by a password, use the --video-password option', expected=True) | ||||||
|  |             raise ExtractorError(f'{self.IE_NAME} said: {stream["code"]} - {stream["message"]}', expected=True) | ||||||
|  | 
 | ||||||
|  |         if urlh.status == 429: | ||||||
|  |             self.raise_login_required( | ||||||
|  |                 f'{self.IE_NAME} asks you to solve a CAPTCHA. Solve CAPTCHA in browser and', | ||||||
|  |                 method='cookies') | ||||||
| 
 | 
 | ||||||
|         video_id = stream.get('recordUUID') or video_id |         video_id = stream.get('recordUUID') or video_id | ||||||
| 
 | 
 | ||||||
| @@ -78,7 +98,7 @@ class CiscoWebexIE(InfoExtractor): | |||||||
|             'title': stream['recordName'], |             'title': stream['recordName'], | ||||||
|             'description': stream.get('description'), |             'description': stream.get('description'), | ||||||
|             'uploader': stream.get('ownerDisplayName'), |             'uploader': stream.get('ownerDisplayName'), | ||||||
|             'uploader_id': stream.get('ownerUserName') or stream.get('ownerId'),  # mail or id |             'uploader_id': stream.get('ownerUserName') or stream.get('ownerId'), | ||||||
|             'timestamp': unified_timestamp(stream.get('createTime')), |             'timestamp': unified_timestamp(stream.get('createTime')), | ||||||
|             'duration': int_or_none(stream.get('duration'), 1000), |             'duration': int_or_none(stream.get('duration'), 1000), | ||||||
|             'webpage_url': 'https://%s.webex.com/recordingservice/sites/%s/recording/playback/%s' % (subdomain, siteurl, video_id), |             'webpage_url': 'https://%s.webex.com/recordingservice/sites/%s/recording/playback/%s' % (subdomain, siteurl, video_id), | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Damiano Amatruda
					Damiano Amatruda