[ie/wistia] Support password-protected videos (#11100)

Closes #10914
Authored by: bashonly
This commit is contained in:
bashonly 2024-09-26 18:21:03 -05:00 committed by GitHub
parent a2000bc857
commit 9f5c9a9089
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -8,6 +8,7 @@ from ..networking.exceptions import HTTPError
from ..utils import ( from ..utils import (
ExtractorError, ExtractorError,
determine_ext, determine_ext,
filter_dict,
float_or_none, float_or_none,
int_or_none, int_or_none,
parse_qs, parse_qs,
@ -25,16 +26,25 @@ class WistiaBaseIE(InfoExtractor):
def _download_embed_config(self, config_type, config_id, referer): def _download_embed_config(self, config_type, config_id, referer):
base_url = self._EMBED_BASE_URL + f'{config_type}/{config_id}' base_url = self._EMBED_BASE_URL + f'{config_type}/{config_id}'
video_password = self.get_param('videopassword')
embed_config = self._download_json( embed_config = self._download_json(
base_url + '.json', config_id, headers={ base_url + '.json', config_id, headers={
'Referer': referer if referer.startswith('http') else base_url, # Some videos require this. 'Referer': referer if referer.startswith('http') else base_url, # Some videos require this.
}) }, query=filter_dict({'password': video_password}))
error = traverse_obj(embed_config, 'error') error = traverse_obj(embed_config, 'error')
if error: if error:
raise ExtractorError( raise ExtractorError(
f'Error while getting the playlist: {error}', expected=True) f'Error while getting the playlist: {error}', expected=True)
if traverse_obj(embed_config, (
'media', ('embed_options', 'embedOptions'), 'plugin',
'passwordProtectedVideo', 'on', any)) == 'true':
if video_password:
raise ExtractorError('Invalid video password', expected=True)
raise ExtractorError(
'This content is password-protected. Use the --video-password option', expected=True)
return embed_config return embed_config
def _get_real_ext(self, url): def _get_real_ext(self, url):