]> jfr.im git - yt-dlp.git/commitdiff
[cookies] Handle errors when importing `keyring`
authorpukkandan <redacted>
Fri, 23 Jul 2021 14:20:50 +0000 (19:50 +0530)
committerpukkandan <redacted>
Fri, 23 Jul 2021 14:28:27 +0000 (19:58 +0530)
Workaround for #551

yt_dlp/cookies.py

index f3b513f29f6bbe45054ca14dccd61af92eb6691c..c28833159a616565a39708c2223465476f3cad9c 100644 (file)
@@ -15,6 +15,7 @@
     compat_cookiejar_Cookie,
 )
 from yt_dlp.utils import (
+    bug_reports_message,
     bytes_to_intlist,
     expand_path,
     intlist_to_bytes,
 try:
     import keyring
     KEYRING_AVAILABLE = True
+    KEYRING_UNAVAILABLE_REASON = f'due to unknown reasons{bug_reports_message()}'
 except ImportError:
     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'}
@@ -340,10 +350,7 @@ def decrypt(self, encrypted_value):
 
         elif version == b'v11':
             if self._v11_key is None:
-                self._logger.warning('cannot decrypt cookie as the `keyring` module is not installed. '
-                                     '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)
+                self._logger.warning(f'cannot decrypt cookie {KEYRING_UNAVAILABLE_REASON}', only_once=True)
                 return None
             return _decrypt_aes_cbc(ciphertext, self._v11_key, self._logger)