[18:14:41] DEBUG Showing all debug logs cli.py:111
DEBUG Removing dirs set() artwork.py:19
╭─────────────────────────────── Traceback (most recent call last) ────────────────────────────────╮
│ /Library/Frameworks/Python.framework/Versions/3.11/bin/rip:8 in <module> │
│ │
│ 5 from streamrip.rip import rip │
│ 6 if __name__ == '__main__': │
│ 7 │ sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) │
│ ❱ 8 │ sys.exit(rip()) │
│ 9 │
│ │
│ ╭─────────────────────────────────────────── locals ───────────────────────────────────────────╮ │
│ │ re = <module 're' from │ │
│ │ '/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/re/__init__.py'> │ │
│ │ rip = <HelpColorsGroup rip> │ │
│ │ sys = <module 'sys' (built-in)> │ │
│ ╰──────────────────────────────────────────────────────────────────────────────────────────────╯ │
│ │
│ /Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/click/core.py:11 │
│ 57 in __call__ │
│ │
│ /Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/click/core.py:10 │
│ 78 in main │
│ │
│ /Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/click/core.py:16 │
│ 88 in invoke │
│ │
│ /Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/click/core.py:14 │
│ 34 in invoke │
│ │
│ /Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/click/core.py:78 │
│ 3 in invoke │
│ │
│ /Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/click/decorators │
│ .py:33 in new_func │
│ │
│ /Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/streamrip/rip/cl │
│ i.py:29 in wrapper │
│ │
│ 26 def coro(f): │
│ 27 │ @wraps(f) │
│ 28 │ def wrapper(*args, **kwargs): │
│ ❱ 29 │ │ return asyncio.run(f(*args, **kwargs)) │
│ 30 │ │
│ 31 │ return wrapper │
│ 32 │
│ │
│ ╭──────────────────────────── locals ─────────────────────────────╮ │
│ │ args = (<click.core.Context object at 0x1054e5590>,) │ │
│ │ f = <function url at 0x108309da0> │ │
│ │ kwargs = {'urls': ('https://www.deezer.com/en/artist/432022',)} │ │
│ ╰─────────────────────────────────────────────────────────────────╯ │
│ │
│ /Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/asyncio/runners.py:190 in run │
│ │
│ 187 │ │ │ "asyncio.run() cannot be called from a running event loop") │
│ 188 │ │
│ 189 │ with Runner(debug=debug) as runner: │
│ ❱ 190 │ │ return runner.run(main) │
│ 191 │
│ 192 │
│ 193 def _cancel_all_tasks(loop): │
│ │
│ ╭──────────────────────── locals ─────────────────────────╮ │
│ │ debug = None │ │
│ │ main = <coroutine object url at 0x107cda8a0> │ │
│ │ runner = <asyncio.runners.Runner object at 0x10831ab90> │ │
│ ╰─────────────────────────────────────────────────────────╯ │
│ │
│ /Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/asyncio/runners.py:118 in run │
│ │
│ 115 │ │ │
│ 116 │ │ self._interrupt_count = 0 │
│ 117 │ │ try: │
│ ❱ 118 │ │ │ return self._loop.run_until_complete(task) │
│ 119 │ │ except exceptions.CancelledError: │
│ 120 │ │ │ if self._interrupt_count > 0: │
│ 121 │ │ │ │ uncancel = getattr(task, "uncancel", None) │
│ │
│ ╭─────────────────────────────────────────── locals ───────────────────────────────────────────╮ │
│ │ context = <_contextvars.Context object at 0x10839a600> │ │
│ │ coro = <coroutine object url at 0x107cda8a0> │ │
│ │ self = <asyncio.runners.Runner object at 0x10831ab90> │ │
│ │ sigint_handler = functools.partial(<bound method Runner._on_sigint of │ │
│ │ <asyncio.runners.Runner object at 0x10831ab90>>, main_task=<Task finished │ │
│ │ name='Task-1' coro=<url() done, defined at │ │
│ │ /Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-pac… │ │
│ │ exception=AuthenticationError()>) │ │
│ │ task = <Task finished name='Task-1' coro=<url() done, defined at │ │
│ │ /Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-pac… │ │
│ │ exception=AuthenticationError()> │ │
│ ╰──────────────────────────────────────────────────────────────────────────────────────────────╯ │
│ │
│ /Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/asyncio/base_events.py:653 in │
│ run_until_complete │
│ │
│ 650 │ │ if not future.done(): │
│ 651 │ │ │ raise RuntimeError('Event loop stopped before Future completed.') │
│ 652 │ │ │
│ ❱ 653 │ │ return future.result() │
│ 654 │ │
│ 655 │ def stop(self): │
│ 656 │ │ """Stop running the event loop. │
│ │
│ ╭─────────────────────────────────────────── locals ───────────────────────────────────────────╮ │
│ │ future = <Task finished name='Task-1' coro=<url() done, defined at │ │
│ │ /Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/… │ │
│ │ exception=AuthenticationError()> │ │
│ │ new_task = False │ │
│ │ self = <_UnixSelectorEventLoop running=False closed=True debug=False> │ │
│ ╰──────────────────────────────────────────────────────────────────────────────────────────────╯ │
│ │
│ /Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/streamrip/rip/cl │
│ i.py:191 in url │
│ │
│ 188 │ │ │ │ version_coro = None │
│ 189 │ │ │ │
│ 190 │ │ │ async with Main(cfg) as main: │
│ ❱ 191 │ │ │ │ await main.add_all(urls) │
│ 192 │ │ │ │ await main.resolve() │
│ 193 │ │ │ │ await main.rip() │
│ 194 │
│ │
│ ╭─────────────────────────────────────────── locals ───────────────────────────────────────────╮ │
│ │ cfg = <streamrip.config.Config object at 0x10831ab50> │ │
│ │ ctx = <click.core.Context object at 0x1054e5590> │ │
│ │ main = <streamrip.rip.main.Main object at 0x108399c50> │ │
│ │ updates = True │ │
│ │ urls = ('https://www.deezer.com/en/artist/432022',) │ │
│ │ version_coro = <Task cancelled name='Task-2' coro=<latest_streamrip_version() done, defined │ │
│ │ at │ │
│ │ /Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packa… │ │
│ ╰──────────────────────────────────────────────────────────────────────────────────────────────╯ │
│ │
│ /Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/streamrip/rip/ma │
│ in.py:124 in add_all │
│ │
│ 121 │ │ │ │ │ f"[red]Found invalid url [cyan]{urls[i]}[/cyan], skipping.", │
│ 122 │ │ │ │ ) │
│ 123 │ │ │ │ continue │
│ ❱ 124 │ │ │ url_client_pairs.append((p, await self.get_logged_in_client(p.source))) │
│ 125 │ │ │
│ 126 │ │ pendings = await asyncio.gather( │
│ 127 │ │ │ *[ │
│ │
│ ╭──────────────────────────────────── locals ─────────────────────────────────────╮ │
│ │ i = 0 │ │
│ │ p = <streamrip.rip.parse_url.GenericURL object at 0x10837ea90> │ │
│ │ parsed = [<streamrip.rip.parse_url.GenericURL object at 0x10837ea90>] │ │
│ │ self = <streamrip.rip.main.Main object at 0x108399c50> │ │
│ │ url_client_pairs = [] │ │
│ │ urls = ('https://www.deezer.com/en/artist/432022',) │ │
│ ╰─────────────────────────────────────────────────────────────────────────────────╯ │
│ │
│ /Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/streamrip/rip/ma │
│ in.py:150 in get_logged_in_client │
│ │
│ 147 │ │ │ else: │
│ 148 │ │ │ │ with console.status(f"[cyan]Logging into {source}", spinner="dots"): │
│ 149 │ │ │ │ │ # Log into client using credentials from config │
│ ❱ 150 │ │ │ │ │ await client.login() │
│ 151 │ │ │
│ 152 │ │ assert client.logged_in │
│ 153 │ │ return client │
│ │
│ ╭───────────────────────────────── locals ─────────────────────────────────╮ │
│ │ client = <streamrip.client.deezer.DeezerClient object at 0x108399b10> │ │
│ │ prompter = <streamrip.rip.prompter.DeezerPrompter object at 0x10837ebd0> │ │
│ │ self = <streamrip.rip.main.Main object at 0x108399c50> │ │
│ │ source = 'deezer' │ │
│ ╰──────────────────────────────────────────────────────────────────────────╯ │
│ │
│ /Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/streamrip/client │
│ /deezer.py:53 in login │
│ │
│ 50 │ │ │ raise MissingCredentialsError │
│ 51 │ │ success = self.client.login_via_arl(arl) │
│ 52 │ │ if not success: │
│ ❱ 53 │ │ │ raise AuthenticationError │
│ 54 │ │ self.logged_in = True │
│ 55 │ │
│ 56 │ async def get_metadata(self, item_id: str, media_type: str) -> dict: │
│ │
│ ╭─────────────────────────────────────────── locals ───────────────────────────────────────────╮ │
│ │ arl = '75fcdb6af527382ff3268e88976cdefe9251456a7f2de116dcfbb15e913ee3817ccff3209e8fdc8f… │ │
│ │ self = <streamrip.client.deezer.DeezerClient object at 0x108399b10> │ │
│ │ success = False
Describe the bug
AuthenticationError response when attempting to download from Deezer
Command Used
Debug Traceback
Config File
/Users/REDACTED/Library/Application Support/streamrip/config.tomlOperating System
macOS Sonoma 14.6.1
streamrip version
2.1.0
Screenshots and recordings
No response
Additional context
No response