From a8a5191cf5b38cc027557b41e38c37cdb497bc13 Mon Sep 17 00:00:00 2001 From: Adrian Sampson Date: Sun, 26 Oct 2014 15:24:17 -0700 Subject: [PATCH] discogs #1040: Standard API key, handle failure --- beetsplug/discogs.py | 38 +++++++++++++++++++++----------------- 1 file changed, 21 insertions(+), 17 deletions(-) diff --git a/beetsplug/discogs.py b/beetsplug/discogs.py index 909015cfce..554c6023db 100644 --- a/beetsplug/discogs.py +++ b/beetsplug/discogs.py @@ -31,36 +31,40 @@ urllib3_logger = logging.getLogger('requests.packages.urllib3') urllib3_logger.setLevel(logging.CRITICAL) +USER_AGENT = 'beets/{0} +http://beets.radbox.org/'.format(beets.__version__) + class DiscogsPlugin(BeetsPlugin): def __init__(self): super(DiscogsPlugin, self).__init__() + self.config.add({ + 'apikey': 'rAzVUQYRaoFjeBjyWuWZ', + 'apisecret': 'plxtUTqoCzwxZpqdPysCwGuBSmZNdZVy', + 'source_weight': 0.5, + }) + + c_key = self.config['apikey'].get(unicode) + c_secret = self.config['apisecret'].get(unicode) try: - c_key = beets.config['discogs']['consumer_key'].get(unicode) - c_secret = beets.config['discogs']['consumer_secret'].get(unicode) - except beets.confit.NotFoundError: - raise beets.ui.UserError('discogs API keys not configured.') - try: - token = beets.config['discogs']['token'].get(unicode) - secret = beets.config['discogs']['secret'].get(unicode) + token = self.config['token'].get(unicode) + secret = self.config['secret'].get(unicode) except beets.confit.NotFoundError: token, secret = self.authenticate(c_key, c_secret) - self.config.add({ - 'source_weight': 0.5, - }) - self.discogs_client = Client('beets/%s +http://beets.radbox.org/' % - beets.__version__, c_key, c_secret, + self.discogs_client = Client(USER_AGENT, c_key, c_secret, token, secret) def authenticate(self, c_key, c_secret): - auth_client = Client('beets/%s +http://beets.radbox.org/' % - beets.__version__, c_key, c_secret) + auth_client = Client(USER_AGENT, c_key, c_secret) _, _, url = auth_client.get_authorize_url() - beets.ui.print_("To authenticate to discogs please visit %s" % url) - code = beets.ui.input_("Enter the code: ") - token, secret = auth_client.get_access_token(code) + beets.ui.print_("To authenticate with Discogs, visit:") + beets.ui.print_(url) + code = beets.ui.input_("Enter the code:") + try: + token, secret = auth_client.get_access_token(code) + except DiscogsAPIError: + raise beets.ui.UserError('Discogs authorization failed') beets.ui.print_("token: %s\nsecret: %s" % (token, secret)) beets.ui.print_("Add the above to beets config!") return token, secret