beetbox / beets

music library manager and MusicBrainz tagger
http://beets.io/
MIT License
12.78k stars 1.82k forks source link

BPSync fails to authenticate #5112

Open campfred opened 7 months ago

campfred commented 7 months ago

Problem

Running this command in verbose (-vv) mode:

$ beet -vv bpsync

Led to this problem:

user configuration: C:\Users\campf\AppData\Roaming\beets\config.yaml
data directory: C:\Users\campf\AppData\Roaming\beets
plugin paths: 
Traceback (most recent call last):
  File "c:\users\campf\appdata\local\programs\python\python36\lib\site-packages\beetsplug\beatport.py", line 290, in setup
    with open(self._tokenfile()) as f:
FileNotFoundError: [Errno 2] No such file or directory: 'C:\\Users\\campf\\AppData\\Roaming\\beets\\beatport_token.json'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "c:\users\campf\appdata\local\programs\python\python36\lib\site-packages\urllib3\connection.py", line 175, in _new_conn
    (self._dns_host, self.port), self.timeout, **extra_kw
  File "c:\users\campf\appdata\local\programs\python\python36\lib\site-packages\urllib3\util\connection.py", line 95, in create_connection
    raise err
  File "c:\users\campf\appdata\local\programs\python\python36\lib\site-packages\urllib3\util\connection.py", line 85, in create_connection
    sock.connect(sa)
TimeoutError: [WinError 10060] Une tentative de connexion a échoué car le parti connecté n’a pas répondu convenablement au-delà d’une certaine durée ou une connexion établie a échoué car l’hôte de connexion n’a pas répondu

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "c:\users\campf\appdata\local\programs\python\python36\lib\site-packages\urllib3\connectionpool.py", line 722, in urlopen
    chunked=chunked,
  File "c:\users\campf\appdata\local\programs\python\python36\lib\site-packages\urllib3\connectionpool.py", line 404, in _make_request
    self._validate_conn(conn)
  File "c:\users\campf\appdata\local\programs\python\python36\lib\site-packages\urllib3\connectionpool.py", line 1058, in _validate_conn
    conn.connect()
  File "c:\users\campf\appdata\local\programs\python\python36\lib\site-packages\urllib3\connection.py", line 363, in connect
    self.sock = conn = self._new_conn()
  File "c:\users\campf\appdata\local\programs\python\python36\lib\site-packages\urllib3\connection.py", line 187, in _new_conn
    self, "Failed to establish a new connection: %s" % e
urllib3.exceptions.NewConnectionError: <urllib3.connection.HTTPSConnection object at 0x0000029F7E6B41D0>: Failed to establish a new connection: [WinError 10060] Une tentative de connexion a échoué car le parti connecté n’a pas répondu convenablement au-delà d’une certaine durée ou une connexion établie a échoué car l’hôte de connexion n’a pas répondu

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "c:\users\campf\appdata\local\programs\python\python36\lib\site-packages\requests\adapters.py", line 450, in send
    timeout=timeout
  File "c:\users\campf\appdata\local\programs\python\python36\lib\site-packages\urllib3\connectionpool.py", line 800, in urlopen
    method, url, error=e, _pool=self, _stacktrace=sys.exc_info()[2]
  File "c:\users\campf\appdata\local\programs\python\python36\lib\site-packages\urllib3\util\retry.py", line 592, in increment
    raise MaxRetryError(_pool, url, error or ResponseError(cause))
urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='oauth-api.beatport.com', port=443): Max retries exceeded with url: /identity/1/oauth/request-token (Caused by NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x0000029F7E6B41D0>: Failed to establish a new connection: [WinError 10060] Une tentative de connexion a échoué car le parti connecté n’a pas répondu convenablement au-delà d’une certaine durée ou une connexion établie a échoué car l’hôte de connexion n’a pas répondu',))   

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Users\campf\AppData\Local\Programs\Python\Python36\Scripts\beet-script.py", line 11, in <module>
    load_entry_point('beets==1.6.0', 'console_scripts', 'beet')()
  File "c:\users\campf\appdata\local\programs\python\python36\lib\site-packages\beets\ui\__init__.py", line 1285, in main
    _raw_main(args)
  File "c:\users\campf\appdata\local\programs\python\python36\lib\site-packages\beets\ui\__init__.py", line 1268, in _raw_main
    subcommands, plugins, lib = _setup(options, lib)
  File "c:\users\campf\appdata\local\programs\python\python36\lib\site-packages\beets\ui\__init__.py", line 1148, in _setup
    plugin_types_album = plugins.types(library.Album)
  File "c:\users\campf\appdata\local\programs\python\python36\lib\site-packages\beets\plugins.py", line 337, in types
    for plugin in find_plugins():
  File "c:\users\campf\appdata\local\programs\python\python36\lib\site-packages\beets\plugins.py", line 307, in find_plugins
    _instances[cls] = cls()
  File "c:\users\campf\appdata\local\programs\python\python36\lib\site-packages\beetsplug\bpsync.py", line 28, in __init__
    self.beatport_plugin.setup()
  File "c:\users\campf\appdata\local\programs\python\python36\lib\site-packages\beetsplug\beatport.py", line 294, in setup
    token, secret = self.authenticate(c_key, c_secret)
  File "c:\users\campf\appdata\local\programs\python\python36\lib\site-packages\beetsplug\beatport.py", line 305, in authenticate
    url = auth_client.get_authorize_url()
  File "c:\users\campf\appdata\local\programs\python\python36\lib\site-packages\beetsplug\beatport.py", line 94, in get_authorize_url
    self._make_url('/identity/1/oauth/request-token'))
  File "c:\users\campf\appdata\local\programs\python\python36\lib\site-packages\requests_oauthlib\oauth1_session.py", line 287, in fetch_request_token
    token = self._fetch_token(url, **request_kwargs)
  File "c:\users\campf\appdata\local\programs\python\python36\lib\site-packages\requests_oauthlib\oauth1_session.py", line 365, in _fetch_token
    r = self.post(url, **request_kwargs)
  File "c:\users\campf\appdata\local\programs\python\python36\lib\site-packages\requests\sessions.py", line 577, in post
    return self.request('POST', url, data=data, json=json, **kwargs)
  File "c:\users\campf\appdata\local\programs\python\python36\lib\site-packages\requests\sessions.py", line 529, in request
    resp = self.send(prep, **send_kwargs)
  File "c:\users\campf\appdata\local\programs\python\python36\lib\site-packages\requests\sessions.py", line 645, in send
    r = adapter.send(request, **kwargs)
  File "c:\users\campf\appdata\local\programs\python\python36\lib\site-packages\requests\adapters.py", line 519, in send
    raise ConnectionError(e, request=request)
requests.exceptions.ConnectionError: HTTPSConnectionPool(host='oauth-api.beatport.com', port=443): Max retries exceeded with url: /identity/1/oauth/request-token (Caused by NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x0000029F7E6B41D0>: Failed to establish a new connection: [WinError 10060] Une tentative de connexion a échoué car le parti connecté n’a pas répondu convenablement au-delà d’une certaine durée ou une connexion établie a échoué car l’hôte de connexion n’a pas répondu',))

I believe Beatport changed their API endpoint at some point since checking their API documentation shows a different endpoint to use. https://api.beatport.com/v4/docs/

Setup

My configuration (output of beet config) is:

plugins: web edit convert chroma fromfilename bpsync spotify lyrics fetchart lastgenre
directory: D:\Musique
library: D:\Musique.db

import:
    write: yes
    move: no
convert:
    auto: yes
    copy_album_art: yes
    embed: yes
    never_convert_lossy_files: yes
    delete_originals: yes
    format: aiff
    formats:
        aiff:
            command: ffmpeg -i $source -write_id3v2 1 -c:v copy $dest
            extension: aiff
fetchart:
    quality: 100
    high_resolution: yes
lastgenre:
    count: 3
    source: track
spotify:
    show_failures: yes
jackwilsdon commented 7 months ago

3862 is open regarding upgrading to v4, although from the comments there it sounds like they may not really be handing out API keys (this could have changed since then). #4477 was opened to upgrade to the v4 API, but it seems like it ended up going stale.

I wonder if we should just disable bpsync until v4 support is implemented.

campfred commented 7 months ago

Interesting, those weren't showing up when I was searching. Thanks for mentioning that!

JOJ0 commented 7 months ago

In the meantime, use beatport4 plugin: https://github.com/Samik081/beets-beatport4