discogs #1040: Standard API key, handle failure

This commit is contained in:
Adrian Sampson 2014-10-26 15:24:17 -07:00
parent 1af2d31ee6
commit a8a5191cf5

View file

@ -31,36 +31,40 @@ log = logging.getLogger('beets')
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