Skip to content

[BUG] Authentication Error when attempting to download from Deezer #952

@MrNowhereDan

Description

@MrNowhereDan

Describe the bug

AuthenticationError response when attempting to download from Deezer

Command Used

rip url https://www.deezer.com/en/artist/432022

Debug Traceback

[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

Config File

/Users/REDACTED/Library/Application Support/streamrip/config.toml

Operating System

macOS Sonoma 14.6.1

streamrip version

2.1.0

Screenshots and recordings

No response

Additional context

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions