[cookies] Handle errors when importing keyring

Workaround for #551
This commit is contained in:
pukkandan 2021-07-23 19:50:50 +05:30
parent 767b02a99b
commit 063c409dfb
No known key found for this signature in database
GPG key ID: 0F00D95A001F4698

View file

@ -15,6 +15,7 @@
compat_cookiejar_Cookie, compat_cookiejar_Cookie,
) )
from yt_dlp.utils import ( from yt_dlp.utils import (
bug_reports_message,
bytes_to_intlist, bytes_to_intlist,
expand_path, expand_path,
intlist_to_bytes, intlist_to_bytes,
@ -40,8 +41,17 @@
try: try:
import keyring import keyring
KEYRING_AVAILABLE = True KEYRING_AVAILABLE = True
KEYRING_UNAVAILABLE_REASON = f'due to unknown reasons{bug_reports_message()}'
except ImportError: except ImportError:
KEYRING_AVAILABLE = False KEYRING_AVAILABLE = False
KEYRING_UNAVAILABLE_REASON = (
'as the `keyring` module is not installed. '
'Please install by running `python3 -m pip install keyring`. '
'Depending on your platform, additional packages may be required '
'to access the keyring; see https://pypi.org/project/keyring')
except Exception as _err:
KEYRING_AVAILABLE = False
KEYRING_UNAVAILABLE_REASON = 'as the `keyring` module could not be initialized: %s' % _err
CHROMIUM_BASED_BROWSERS = {'brave', 'chrome', 'chromium', 'edge', 'opera', 'vivaldi'} CHROMIUM_BASED_BROWSERS = {'brave', 'chrome', 'chromium', 'edge', 'opera', 'vivaldi'}
@ -340,10 +350,7 @@ def decrypt(self, encrypted_value):
elif version == b'v11': elif version == b'v11':
if self._v11_key is None: if self._v11_key is None:
self._logger.warning('cannot decrypt cookie as the `keyring` module is not installed. ' self._logger.warning(f'cannot decrypt cookie {KEYRING_UNAVAILABLE_REASON}', only_once=True)
'Please install by running `python3 -m pip install keyring`. '
'Note that depending on your platform, additional packages may be required '
'to access the keyring, see https://pypi.org/project/keyring', only_once=True)
return None return None
return _decrypt_aes_cbc(ciphertext, self._v11_key, self._logger) return _decrypt_aes_cbc(ciphertext, self._v11_key, self._logger)