More libsecret exceptions handling.
This commit is contained in:
parent
3be4a1db6b
commit
b74f9c04d4
@ -830,28 +830,39 @@ class InfoExtractor(object):
|
|||||||
if self._downloader.params.get('usekeyring', False):
|
if self._downloader.params.get('usekeyring', False):
|
||||||
try:
|
try:
|
||||||
import gi
|
import gi
|
||||||
gi.require_version('Secret', '1')
|
can_use_gi = True
|
||||||
from gi.repository import Secret
|
|
||||||
LIBSECRET_SCHEMA = Secret.Schema.new("io.github.rg3.youtube-dl.Store",
|
|
||||||
Secret.SchemaFlags.DONT_MATCH_NAME,
|
|
||||||
{
|
|
||||||
"extractor": Secret.SchemaAttributeType.STRING,
|
|
||||||
"app": Secret.SchemaAttributeType.STRING
|
|
||||||
})
|
|
||||||
secret = Secret.password_lookup_sync(LIBSECRET_SCHEMA, {"extractor": netrc_machine, "app": "youtube-dl"}, None)
|
|
||||||
if secret is None:
|
|
||||||
raise KeyError('Cannot find credentials in keyring for "' + netrc_machine + '"')
|
|
||||||
secret_dict = json.loads(secret)
|
|
||||||
username = secret_dict['user']
|
|
||||||
password = secret_dict['pass']
|
|
||||||
except KeyError as err:
|
|
||||||
self._downloader.report_warning(
|
|
||||||
'Libsecret: %s' % error_to_compat_str(err))
|
|
||||||
except json.decoder.JSONDecodeError:
|
|
||||||
self._downloader.report_warning(
|
|
||||||
'JSON error, your JSON string in keyring is likely malformed')
|
|
||||||
except ImportError:
|
except ImportError:
|
||||||
raise ImportError('Cannot import gi module. Check that you have python-gobject installed.')
|
self._downloader.report_warning(
|
||||||
|
'Problem while processing --keyring option: cannot import gi module. Check that you have python-gobject installed.')
|
||||||
|
can_use_gi = False
|
||||||
|
if can_use_gi:
|
||||||
|
try:
|
||||||
|
gi.require_version('Secret', '1')
|
||||||
|
from gi.repository import Secret
|
||||||
|
LIBSECRET_SCHEMA = Secret.Schema.new("io.github.rg3.youtube-dl.Store",
|
||||||
|
Secret.SchemaFlags.DONT_MATCH_NAME,
|
||||||
|
{
|
||||||
|
"extractor": Secret.SchemaAttributeType.STRING,
|
||||||
|
"app": Secret.SchemaAttributeType.STRING
|
||||||
|
})
|
||||||
|
secret = Secret.password_lookup_sync(LIBSECRET_SCHEMA, {"extractor": netrc_machine, "app": "youtube-dl"}, None)
|
||||||
|
if secret is None:
|
||||||
|
raise KeyError('Cannot find credentials in keyring for "' + netrc_machine + '"')
|
||||||
|
secret_dict = json.loads(secret)
|
||||||
|
username = secret_dict['user']
|
||||||
|
password = secret_dict['pass']
|
||||||
|
except ValueError as err:
|
||||||
|
self._downloader.report_warning(
|
||||||
|
'Looks like libsecret is not installed. Error: %s:' % error_to_compat_str(err))
|
||||||
|
except gi.repository.GLib.GError as err:
|
||||||
|
self._downloader.report_warning(
|
||||||
|
'Something went wrong when invoking libsecret. Error: %s' % error_to_compat_str(err))
|
||||||
|
except KeyError as err:
|
||||||
|
self._downloader.report_warning(
|
||||||
|
'Libsecret: %s' % error_to_compat_str(err))
|
||||||
|
except json.decoder.JSONDecodeError:
|
||||||
|
self._downloader.report_warning(
|
||||||
|
'JSON error, your JSON string in keyring is likely malformed')
|
||||||
|
|
||||||
return username, password
|
return username, password
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user