Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

AudioProviderError , when download song #1999

Closed
usgitAz opened this issue Jan 6, 2024 · 12 comments
Closed

AudioProviderError , when download song #1999

usgitAz opened this issue Jan 6, 2024 · 12 comments
Labels
Bug Unexpected problem or unintended behavior that needs to be fixed

Comments

@usgitAz
Copy link

usgitAz commented Jan 6, 2024

System OS

Linux

Python Version

3.10 (CPython)

Install Source

pip / PyPi

Install version / commit hash

4.2.4

Expected Behavior vs Actual Behavior

i want to download song with a track song link from spotify but not start downloaded and i have this error :
AudioProviderError: YT-DLP download error - https://music.youtube.com/watch?v=sNWMEdQ53SM

Steps to reproduce - Ensure to include actual links!

..

Traceback

AudioProviderError: YT-DLP download error - https://music.youtube.com/watch?v=sNWMEdQ53SM

Other details

i upgrade yt_dlp and spotdl to last version but i still have this problem

after retry again i see this error message:
RuntimeWarning: coroutine 'Downloader.pool_download'
was never awaited
return download_link
RuntimeWarning: Enable tracemalloc to get the object allocation traceback

@usgitAz usgitAz added the Bug Unexpected problem or unintended behavior that needs to be fixed label Jan 6, 2024
@Tomiwa-Ot
Copy link

I am having the same issue as well

OS

Debian 12

Python Version

3.11.2

Install Source

pip

Spotdl Version

4.2.4

Command

spotdl download "https://open.spotify.com/track/4VQ46sRJtb6osiD3xfYGHx"

Traceback

Processing query: https://open.spotify.com/track/4VQ46sRJtb6osiD3xfYGHx         
AudioProviderError: YT-DLP download error -                                     
https://music.youtube.com/watch?v=ad30z1t_t30 

@xnetcat
Copy link
Member

xnetcat commented Jan 8, 2024

can you guys upload more logs with --log-level DEBUG flag enabled

@Tomiwa-Ot
Copy link

@xnetcat here you go

tomiwa@grephq ~/D/h/Prod&Serv&Cust> spotdl download "https://open.spotify.com/track/4VQ46sRJtb6osiD3xfYGHx?si=c9f290df981645cb" --log-level DEBUG
[16:38:40] DEBUG    MainThread - Downloader settings:          downloader.py:130
                    {'audio_providers': ['youtube-music'],                      
                    'lyrics_providers': ['genius', 'azlyrics',                  
                    'musixmatch'], 'playlist_numbering':                        
                    False, 'scan_for_songs': False, 'm3u':                      
                    None, 'output': '{artists} -                                
                    {title}.{output-ext}', 'overwrite':                         
                    'skip', 'search_query': None, 'ffmpeg':                     
                    'ffmpeg', 'bitrate': None, 'ffmpeg_args':                   
                    None, 'format': 'mp3', 'save_file': None,                   
                    'filter_results': True, 'threads': 4,                       
                    'cookie_file': None, 'restrict': None,                      
                    'print_errors': False, 'sponsor_block':                     
                    False, 'preload': False, 'archive': None,                   
                    'load_config': True, 'log_level': 'DEBUG',                  
                    'simple_tui': False, 'fetch_albums':                        
                    False, 'id3_separator': '/', 'ytm_data':                    
                    False, 'add_unavailable': False,                            
                    'generate_lrc': False,                                      
                    'force_update_metadata': False,                             
                    'only_verified_results': False,                             
                    'sync_without_deleting': False,                             
                    'max_filename_length': None,                                
                    'yt_dlp_args': None, 'detect_formats':                      
                    None, 'save_errors': None,                                  
                    'ignore_albums': None, 'proxy': None,                       
                    'skip_explicit': False, 'log_format':                       
                    None, 'redownload': False}                                  
[16:38:40] DEBUG    MainThread - FFmpeg path: ffmpeg           downloader.py:148
[16:38:40] DEBUG    MainThread - Found 0 known songs           downloader.py:183
[16:38:42] DEBUG    MainThread - Archive: 0 urls               downloader.py:230
[16:38:42] DEBUG    MainThread - Downloader initialized        downloader.py:232
[16:38:42] INFO     MainThread - Processing query:                 search.py:132
                    https://open.spotify.com/track/4VQ46sRJtb6osiD              
                    3xfYGHx?si=c9f290df981645cb                                 
[16:38:45] DEBUG    MainThread - Found 1 songs in 0 lists          search.py:322
[16:38:45] DEBUG    MainThread - Downloading 1 songs           downloader.py:279
[16:38:53] DEBUG    asyncio_0 - Found lyrics for Kodak Black - downloader.py:399
                    Could of Been Different on Genius                           
[16:38:53] DEBUG    asyncio_0 - [4VQ46sRJtb6osiD3xfYGHx] Searching   base.py:167
                    for kodak black - could of been different                   
[16:38:56] DEBUG    asyncio_0 - [4VQ46sRJtb6osiD3xfYGHx] Found 1     base.py:180
                    results for ISRC USAT21813004                               
[16:38:56] DEBUG    asyncio_0 - [4VQ46sRJtb6osiD3xfYGHx] Filtered to base.py:192
                    1 ISRC results                                              
[16:38:56] DEBUG    asyncio_0 - [4VQ46sRJtb6osiD3xfYGHx] Best ISRC   base.py:201
                    result is                                                   
                    https://music.youtube.com/watch?v=ad30z1t_t30               
                    with score 100.0                                            
[16:38:57] DEBUG    asyncio_0 - Downloading Kodak Black -      downloader.py:639
                    Could of Been Different using                               
                    https://music.youtube.com/watch?v=ad30z1t_                  
                    t30                                                         
[16:39:42] DEBUG    asyncio_0 - ERROR: [youtube] ad30z1t_t30: Unable base.py:374
                    to download API page: <urlopen error Tunnel                 
                    connection failed: 407 Proxy Authentication                 
                    Required> (caused by ProxyError('<urlopen error             
                    Tunnel connection failed: 407 Proxy                         
                    Authentication Required>')); please report this             
                    issue on                                                    
                    https://github.com/yt-dlp/yt-dlp/issues?q= ,                
                    filling out the appropriate issue template.                 
                    Confirm you are on the latest version using                 
                    yt-dlp -U                                                   

[16:39:43] ERROR    asyncio_0 - Traceback (most recent   progress_handler.py:358
                    call last):                                                 
                      File                                                      
                    "/usr/lib/python3.11/urllib/request.                        
                    py", line 1348, in do_open                                  
                        h.request(req.get_method(),                             
                    req.selector, req.data, headers,                            
                      File                                                      
                    "/usr/lib/python3.11/http/client.py"                        
                    , line 1282, in request                                     
                        self._send_request(method, url,                         
                    body, headers, encode_chunked)                              
                      File                                                      
                    "/usr/lib/python3.11/http/client.py"                        
                    , line 1328, in _send_request                               
                        self.endheaders(body,                                   
                    encode_chunked=encode_chunked)                              
                      File                                                      
                    "/usr/lib/python3.11/http/client.py"                        
                    , line 1277, in endheaders                                  
                        self._send_output(message_body,                         
                    encode_chunked=encode_chunked)                              
                      File                                                      
                    "/usr/lib/python3.11/http/client.py"                        
                    , line 1037, in _send_output                                
                        self.send(msg)                                          
                      File                                                      
                    "/usr/lib/python3.11/http/client.py"                        
                    , line 975, in send                                         
                        self.connect()                                          
                      File                                                      
                    "/usr/lib/python3.11/http/client.py"                        
                    , line 1447, in connect                                     
                        super().connect()                                       
                      File                                                      
                    "/usr/lib/python3.11/http/client.py"                        
                    , line 951, in connect                                      
                        self._tunnel()                                          
                      File                                                      
                    "/usr/lib/python3.11/http/client.py"                        
                    , line 924, in _tunnel                                      
                        raise OSError(f"Tunnel                                  
                    connection failed: {code}                                   
                    {message.strip()}")                                         
                    OSError: Tunnel connection failed:                          
                    407 Proxy Authentication Required                           
                                                                                
                    During handling of the above                                
                    exception, another exception                                
                    occurred:                                                   
                                                                                
                    Traceback (most recent call last):                          
                      File                                                      
                    "/usr/lib/python3/dist-packages/yt_d                        
                    lp/networking/_urllib.py", line 396,                        
                    in _send                                                    
                        res = opener.open(urllib_req,                           
                    timeout=float(request.extensions.get                        
                    ('timeout') or self.timeout))                               
                              ^^^^^^^^^^^^^^^^^^^^^^^^^^                        
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^                        
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^                                 
                      File                                                      
                    "/usr/lib/python3.11/urllib/request.                        
                    py", line 519, in open                                      
                        response = self._open(req, data)                        
                                   ^^^^^^^^^^^^^^^^^^^^^                        
                      File                                                      
                    "/usr/lib/python3.11/urllib/request.                        
                    py", line 536, in _open                                     
                        result =                                                
                    self._call_chain(self.handle_open,                          
                    protocol, protocol +                                        
                                 ^^^^^^^^^^^^^^^^^^^^^^^                        
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^                            
                      File                                                      
                    "/usr/lib/python3.11/urllib/request.                        
                    py", line 496, in _call_chain                               
                        result = func(*args)                                    
                                 ^^^^^^^^^^^                                    
                      File                                                      
                    "/usr/lib/python3/dist-packages/yt_d                        
                    lp/networking/_urllib.py", line 101,                        
                    in https_open                                               
                        return self.do_open(                                    
                               ^^^^^^^^^^^^^                                    
                      File                                                      
                    "/usr/lib/python3.11/urllib/request.                        
                    py", line 1351, in do_open                                  
                        raise URLError(err)                                     
                    urllib.error.URLError: <urlopen                             
                    error Tunnel connection failed: 407                         
                    Proxy Authentication Required>                              
                                                                                
                    The above exception was the direct                          
                    cause of the following exception:                           
                                                                                
                    Traceback (most recent call last):                          
                      File                                                      
                    "/usr/lib/python3/dist-packages/yt_d                        
                    lp/extractor/common.py", line 847,                          
                    in _request_webpage                                         
                        return                                                  
                    self._downloader.urlopen(self._creat                        
                    e_request(url_or_request, data,                             
                    headers, query))                                            
                               ^^^^^^^^^^^^^^^^^^^^^^^^^                        
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^                        
                    ^^^^^^^^^^^^^^^^^^^^^^^                                     
                      File                                                      
                    "/usr/lib/python3/dist-packages/yt_d                        
                    lp/YoutubeDL.py", line 4052, in                             
                    urlopen                                                     
                        return                                                  
                    self._request_director.send(req)                            
                               ^^^^^^^^^^^^^^^^^^^^^^^^^                        
                    ^^^^^^^                                                     
                      File                                                      
                    "/usr/lib/python3/dist-packages/yt_d                        
                    lp/networking/common.py", line 114,                         
                    in send                                                     
                        response = handler.send(request)                        
                                   ^^^^^^^^^^^^^^^^^^^^^                        
                      File                                                      
                    "/usr/lib/python3/dist-packages/yt_d                        
                    lp/networking/_helper.py", line 204,                        
                    in wrapper                                                  
                        return func(self, *args,                                
                    **kwargs)                                                   
                               ^^^^^^^^^^^^^^^^^^^^^^^^^                        
                    ^^                                                          
                      File                                                      
                    "/usr/lib/python3/dist-packages/yt_d                        
                    lp/networking/common.py", line 325,                         
                    in send                                                     
                        return self._send(request)                              
                               ^^^^^^^^^^^^^^^^^^^                              
                      File                                                      
                    "/usr/lib/python3/dist-packages/yt_d                        
                    lp/networking/_urllib.py", line 408,                        
                    in _send                                                    
                        raise ProxyError(cause=e) from e                        
                    yt_dlp.networking.exceptions.ProxyEr                        
                    ror: <urlopen error Tunnel                                  
                    connection failed: 407 Proxy                                
                    Authentication Required>                                    
                                                                                
                    During handling of the above                                
                    exception, another exception                                
                    occurred:                                                   
                                                                                
                    Traceback (most recent call last):                          
                      File                                                      
                    "/usr/lib/python3/dist-packages/yt_d                        
                    lp/YoutubeDL.py", line 1567, in                             
                    wrapper                                                     
                        return func(self, *args,                                
                    **kwargs)                                                   
                               ^^^^^^^^^^^^^^^^^^^^^^^^^                        
                    ^^                                                          
                      File                                                      
                    "/usr/lib/python3/dist-packages/yt_d                        
                    lp/YoutubeDL.py", line 1702, in                             
                    __extract_info                                              
                        ie_result = ie.extract(url)                             
                                    ^^^^^^^^^^^^^^^                             
                      File                                                      
                    "/usr/lib/python3/dist-packages/yt_d                        
                    lp/extractor/common.py", line 715,                          
                    in extract                                                  
                        ie_result =                                             
                    self._real_extract(url)                                     
                                    ^^^^^^^^^^^^^^^^^^^^                        
                    ^^^                                                         
                      File                                                      
                    "/usr/lib/python3/dist-packages/yt_d                        
                    lp/extractor/youtube.py", line 4073,                        
                    in _real_extract                                            
                        webpage, master_ytcfg,                                  
                    player_responses, player_url =                              
                    self._download_player_responses(url,                        
                    smuggled_data, video_id,                                    
                    webpage_url)                                                
                                                                                
                                          ^^^^^^^^^^^^^^                        
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^                        
                    ^^^^^^^^^^^^^^^^^^^^^^^^                                    
                      File                                                      
                    "/usr/lib/python3/dist-packages/yt_d                        
                    lp/extractor/youtube.py", line 4037,                        
                    in _download_player_responses                               
                        player_responses, player_url =                          
                    self._extract_player_responses(                             
                                                       ^                        
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^                              
                      File                                                      
                    "/usr/lib/python3/dist-packages/yt_d                        
                    lp/extractor/youtube.py", line 3728,                        
                    in _extract_player_responses                                
                        raise last_error                                        
                      File                                                      
                    "/usr/lib/python3/dist-packages/yt_d                        
                    lp/extractor/youtube.py", line 3693,                        
                    in _extract_player_responses                                
                        pr = initial_pr if client ==                            
                    'web' and initial_pr else                                   
                    self._extract_player_response(                              
                                                                                
                                           ^^^^^^^^^^^^^                        
                    ^^^^^^^^^^^^^^^^^                                           
                      File                                                      
                    "/usr/lib/python3/dist-packages/yt_d                        
                    lp/extractor/youtube.py", line 3613,                        
                    in _extract_player_response                                 
                        return self._extract_response(                          
                               ^^^^^^^^^^^^^^^^^^^^^^^                          
                      File                                                      
                    "/usr/lib/python3/dist-packages/yt_d                        
                    lp/extractor/youtube.py", line 966,                         
                    in _extract_response                                        
                        next(main_retries)                                      
                      File                                                      
                    "/usr/lib/python3/dist-packages/yt_d                        
                    lp/utils/_utils.py", line 5114, in                          
                    __iter__                                                    
                        self.error_callback(self.error,                         
                    self.attempt, self.retries)                                 
                      File                                                      
                    "/usr/lib/python3/dist-packages/yt_d                        
                    lp/extractor/common.py", line 3762,                         
                    in _error_or_warning                                        
                        RetryManager.report_retry(                              
                      File                                                      
                    "/usr/lib/python3/dist-packages/yt_d                        
                    lp/utils/_utils.py", line 5122, in                          
                    report_retry                                                
                        raise e                                                 
                      File                                                      
                    "/usr/lib/python3/dist-packages/yt_d                        
                    lp/extractor/youtube.py", line 955,                         
                    in _extract_response                                        
                        response = self._call_api(                              
                                   ^^^^^^^^^^^^^^^                              
                      File                                                      
                    "/usr/lib/python3/dist-packages/yt_d                        
                    lp/extractor/youtube.py", line 603,                         
                    in _call_api                                                
                        return self._download_json(                             
                               ^^^^^^^^^^^^^^^^^^^^                             
                      File                                                      
                    "/usr/lib/python3/dist-packages/yt_d                        
                    lp/extractor/common.py", line 1069,                         
                    in download_content                                         
                        res = getattr(self,                                     
                    download_handle.__name__)(url_or_req                        
                    uest, video_id, **kwargs)                                   
                              ^^^^^^^^^^^^^^^^^^^^^^^^^^                        
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^                        
                    ^^^^^^^^^^^^^                                               
                      File                                                      
                    "/usr/lib/python3/dist-packages/yt_d                        
                    lp/extractor/common.py", line 1033,                         
                    in download_handle                                          
                        res =                                                   
                    self._download_webpage_handle(                              
                              ^^^^^^^^^^^^^^^^^^^^^^^^^^                        
                    ^^^^                                                        
                      File                                                      
                    "/usr/lib/python3/dist-packages/yt_d                        
                    lp/extractor/common.py", line 903,                          
                    in _download_webpage_handle                                 
                        urlh =                                                  
                    self._request_webpage(url_or_request                        
                    , video_id, note, errnote, fatal,                           
                    data=data, headers=headers,                                 
                    query=query,                                                
                    expected_status=expected_status)                            
                               ^^^^^^^^^^^^^^^^^^^^^^^^^                        
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^                        
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^                        
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^                        
                    ^^^^^^^^^^                                                  
                      File                                                      
                    "/usr/lib/python3/dist-packages/yt_d                        
                    lp/extractor/common.py", line 860,                          
                    in _request_webpage                                         
                        raise ExtractorError(errmsg,                            
                    cause=err)                                                  
                    yt_dlp.utils.ExtractorError:                                
                    ad30z1t_t30: Unable to download API                         
                    page: <urlopen error Tunnel                                 
                    connection failed: 407 Proxy                                
                    Authentication Required> (caused by                         
                    ProxyError('<urlopen error Tunnel                           
                    connection failed: 407 Proxy                                
                    Authentication Required>')); please                         
                    report this issue on                                        
                    https://github.com/yt-dlp/yt-dlp/iss                        
                    ues?q= , filling out the appropriate                        
                    issue template. Confirm you are on                          
                    the latest version using  yt-dlp -U                         
                                                                                
                    During handling of the above                                
                    exception, another exception                                
                    occurred:                                                   
                                                                                
                    Traceback (most recent call last):                          
                      File                                                      
                    "/usr/local/lib/python3.11/dist-pack                        
                    ages/spotdl/providers/audio/base.py"                        
                    , line 369, in get_download_metadata                        
                        data =                                                  
                    self.audio_handler.extract_info(url,                        
                    download=download)                                          
                               ^^^^^^^^^^^^^^^^^^^^^^^^^                        
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^                              
                      File                                                      
                    "/usr/lib/python3/dist-packages/yt_d                        
                    lp/YoutubeDL.py", line 1556, in                             
                    extract_info                                                
                        return self.__extract_info(url,                         
                    self.get_info_extractor(key),                               
                    download, extra_info, process)                              
                               ^^^^^^^^^^^^^^^^^^^^^^^^^                        
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^                        
                    ^^^^^^^^^^^^^^^^^^^^^^^^                                    
                      File                                                      
                    "/usr/lib/python3/dist-packages/yt_d                        
                    lp/YoutubeDL.py", line 1585, in                             
                    wrapper                                                     
                        self.report_error(str(e),                               
                    e.format_traceback())                                       
                      File                                                      
                    "/usr/lib/python3/dist-packages/yt_d                        
                    lp/YoutubeDL.py", line 1045, in                             
                    report_error                                                
                        self.trouble(f'{self._format_err                        
                    ("ERROR:", self.Styles.ERROR)}                              
                    {message}', *args, **kwargs)                                
                      File                                                      
                    "/usr/lib/python3/dist-packages/yt_d                        
                    lp/YoutubeDL.py", line 964, in                              
                    trouble                                                     
                        self.to_stderr(message)                                 
                      File                                                      
                    "/usr/lib/python3/dist-packages/yt_d                        
                    lp/YoutubeDL.py", line 906, in                              
                    to_stderr                                                   
                        self.params['logger'].error(mess                        
                    age)                                                        
                      File                                                      
                    "/usr/local/lib/python3.11/dist-pack                        
                    ages/spotdl/providers/audio/base.py"                        
                    , line 57, in error                                         
                        raise AudioProviderError(msg)                           
                    spotdl.providers.audio.base.AudioPro                        
                    viderError: ERROR:  ad30z1t_t30:                            
                    Unable to download API page:                                
                    <urlopen error Tunnel connection                            
                    failed: 407 Proxy Authentication                            
                    Required> (caused by                                        
                    ProxyError('<urlopen error Tunnel                           
                    connection failed: 407 Proxy                                
                    Authentication Required>')); please                         
                    report this issue on                                        
                    https://github.com/yt-dlp/yt-dlp/iss                        
                    ues?q= , filling out the appropriate                        
                    issue template. Confirm you are on                          
                    the latest version using  yt-dlp -U                         
                                                                                
                    The above exception was the direct                          
                    cause of the following exception:                           
                                                                                
                    Traceback (most recent call last):                          
                      File                                                      
                    "/usr/local/lib/python3.11/dist-pack                        
                    ages/spotdl/download/downloader.py",                        
                     line 646, in search_and_download                           
                        download_info =                                         
                    audio_downloader.get_download_metada                        
                    ta(                                                         
                                        ^^^^^^^^^^^^^^^^                        
                    ^^^^^^^^^^^^^^^^^^^^^^^                                     
                      File                                                      
                    "/usr/local/lib/python3.11/dist-pack                        
                    ages/spotdl/providers/audio/base.py"                        
                    , line 375, in get_download_metadata                        
                        raise                                                   
                    AudioProviderError(f"YT-DLP download                        
                    error - {url}") from exception                              
                    spotdl.providers.audio.base.AudioPro                        
                    viderError: YT-DLP download error -                         
                    https://music.youtube.com/watch?v=ad                        
                    30z1t_t30                                                   
                                                                                
                    ╭─ Traceback (most recent call las─╮                        
                    │ /usr/lib/python3.11/urllib/reque │                        
                    │ st.py:1348 in do_open            │                        
                    │                                  │                        
                    │   1345 │   │                     │                        
                    │   1346 │   │   try:              │                        
                    │   1347 │   │   │   try:          │                        
                    │ ❱ 1348 │   │   │   │   h.request │                        
                    │   1349 │   │   │   │   │   │     │                        
                    │   1350 │   │   │   except OSErro │                        
                    │   1351 │   │   │   │   raise URL │                        
                    │                                  │                        
                    │ /usr/lib/python3.11/http/client. │                        
                    │ py:1282 in request               │                        
                    │                                  │                        
                    │   1279 │   def request(self, met │                        
                    │   1280 │   │   │   │   encode_ch │                        
                    │   1281 │   │   """Send a complet │                        
                    │ ❱ 1282 │   │   self._send_reques │                        
                    │   1283 │                         │                        
                    │   1284 │   def _send_request(sel │                        
                    │   1285 │   │   # Honor explicitl │                        
                    │                                  │                        
                    │ /usr/lib/python3.11/http/client. │                        
                    │ py:1328 in _send_request         │                        
                    │                                  │                        
                    │   1325 │   │   │   # RFC 2616 Se │                        
                    │   1326 │   │   │   # default cha │                        
                    │   1327 │   │   │   body = _encod │                        
                    │ ❱ 1328 │   │   self.endheaders(b │                        
                    │   1329 │                         │                        
                    │   1330 │   def getresponse(self) │                        
                    │   1331 │   │   """Get the respon │                        
                    │                                  │                        
                    │ /usr/lib/python3.11/http/client. │                        
                    │ py:1277 in endheaders            │                        
                    │                                  │                        
                    │   1274 │   │   │   self.__state  │                        
                    │   1275 │   │   else:             │                        
                    │   1276 │   │   │   raise CannotS │                        
                    │ ❱ 1277 │   │   self._send_output │                        
                    │   1278 │                         │                        
                    │   1279 │   def request(self, met │                        
                    │   1280 │   │   │   │   encode_ch │                        
                    │                                  │                        
                    │ /usr/lib/python3.11/http/client. │                        
                    │ py:1037 in _send_output          │                        
                    │                                  │                        
                    │   1034 │   │   self._buffer.exte │                        
                    │   1035 │   │   msg = b"\r\n".joi │                        
                    │   1036 │   │   del self._buffer[ │                        
                    │ ❱ 1037 │   │   self.send(msg)    │                        
                    │   1038 │   │                     │                        
                    │   1039 │   │   if message_body i │                        
                    │   1040                           │                        
                    │                                  │                        
                    │ /usr/lib/python3.11/http/client. │                        
                    │ py:975 in send                   │                        
                    │                                  │                        
                    │    972 │   │                     │                        
                    │    973 │   │   if self.sock is N │                        
                    │    974 │   │   │   if self.auto_ │                        
                    │ ❱  975 │   │   │   │   self.conn │                        
                    │    976 │   │   │   else:         │                        
                    │    977 │   │   │   │   raise Not │                        
                    │    978                           │                        
                    │                                  │                        
                    │ /usr/lib/python3.11/http/client. │                        
                    │ py:1447 in connect               │                        
                    │                                  │                        
                    │   1444 │   │   def connect(self) │                        
                    │   1445 │   │   │   "Connect to a │                        
                    │   1446 │   │   │                 │                        
                    │ ❱ 1447 │   │   │   super().conne │                        
                    │   1448 │   │   │                 │                        
                    │   1449 │   │   │   if self._tunn │                        
                    │   1450 │   │   │   │   server_ho │                        
                    │                                  │                        
                    │ /usr/lib/python3.11/http/client. │                        
                    │ py:951 in connect                │                        
                    │                                  │                        
                    │    948 │   │   │   │   raise     │                        
                    │    949 │   │                     │                        
                    │    950 │   │   if self._tunnel_h │                        
                    │ ❱  951 │   │   │   self._tunnel( │                        
                    │    952 │                         │                        
                    │    953 │   def close(self):      │                        
                    │    954 │   │   """Close the conn │                        
                    │                                  │                        
                    │ /usr/lib/python3.11/http/client. │                        
                    │ py:924 in _tunnel                │                        
                    │                                  │                        
                    │    921 │   │                     │                        
                    │    922 │   │   if code != http.H │                        
                    │    923 │   │   │   self.close()  │                        
                    │ ❱  924 │   │   │   raise OSError │                        
                    │    925 │   │   while True:       │                        
                    │    926 │   │   │   line = respon │                        
                    │    927 │   │   │   if len(line)  │                        
                    ╰──────────────────────────────────╯                        
                    OSError: Tunnel connection failed:                          
                    407 Proxy Authentication Required                           
                                                                                
                    During handling of the above                                
                    exception, another exception                                
                    occurred:                                                   
                                                                                
                    ╭─ Traceback (most recent call las─╮                        
                    │ /usr/lib/python3/dist-packages/y │                        
                    │ t_dlp/networking/_urllib.py:396  │                        
                    │ in _send                         │                        
                    │                                  │                        
                    │   393 │   │   │   cookiejar=requ │                        
                    │   394 │   │   )                  │                        
                    │   395 │   │   try:               │                        
                    │ ❱ 396 │   │   │   res = opener.o │                        
                    │       timeout=float(request.exte │                        
                    │   397 │   │   except urllib.erro │                        
                    │   398 │   │   │   if isinstance( │                        
                    │   399 │   │   │   │   # Prevent  │                        
                    │       destroyed.                 │                        
                    │                                  │                        
                    │ /usr/lib/python3.11/urllib/reque │                        
                    │ st.py:519 in open                │                        
                    │                                  │                        
                    │    516 │   │   │   req = meth(re │                        
                    │    517 │   │                     │                        
                    │    518 │   │   sys.audit('urllib │                        
                    │        req.get_method())         │                        
                    │ ❱  519 │   │   response = self._ │                        
                    │    520 │   │                     │                        
                    │    521 │   │   # post-process re │                        
                    │    522 │   │   meth_name = proto │                        
                    │                                  │                        
                    │ /usr/lib/python3.11/urllib/reque │                        
                    │ st.py:536 in _open               │                        
                    │                                  │                        
                    │    533 │   │   │   return result │                        
                    │    534 │   │                     │                        
                    │    535 │   │   protocol = req.ty │                        
                    │ ❱  536 │   │   result = self._ca │                        
                    │    537 │   │   │   │   │   │   │ │                        
                    │    538 │   │   if result:        │                        
                    │    539 │   │   │   return result │                        
                    │                                  │                        
                    │ /usr/lib/python3.11/urllib/reque │                        
                    │ st.py:496 in _call_chain         │                        
                    │                                  │                        
                    │    493 │   │   handlers = chain. │                        
                    │    494 │   │   for handler in ha │                        
                    │    495 │   │   │   func = getatt │                        
                    │ ❱  496 │   │   │   result = func │                        
                    │    497 │   │   │   if result is  │                        
                    │    498 │   │   │   │   return re │                        
                    │    499                           │                        
                    │                                  │                        
                    │ /usr/lib/python3/dist-packages/y │                        
                    │ t_dlp/networking/_urllib.py:101  │                        
                    │ in https_open                    │                        
                    │                                  │                        
                    │    98 │                          │                        
                    │    99 │   def https_open(self, r │                        
                    │   100 │   │   conn_class = self. │                        
                    │ ❱ 101 │   │   return self.do_ope │                        
                    │   102 │   │   │   functools.part │                        
                    │   103 │   │   │   │   _create_ht │                        
                    │   104 │   │   │   req, context=s │                        
                    │                                  │                        
                    │ /usr/lib/python3.11/urllib/reque │                        
                    │ st.py:1351 in do_open            │                        
                    │                                  │                        
                    │   1348 │   │   │   │   h.request │                        
                    │   1349 │   │   │   │   │   │     │                        
                    │   1350 │   │   │   except OSErro │                        
                    │ ❱ 1351 │   │   │   │   raise URL │                        
                    │   1352 │   │   │   r = h.getresp │                        
                    │   1353 │   │   except:           │                        
                    │   1354 │   │   │   h.close()     │                        
                    ╰──────────────────────────────────╯                        
                    URLError: <urlopen error Tunnel                             
                    connection failed: 407 Proxy                                
                    Authentication Required>                                    
                                                                                
                    The above exception was the direct                          
                    cause of the following exception:                           
                                                                                
                    ╭─ Traceback (most recent call las─╮                        
                    │ /usr/lib/python3/dist-packages/y │                        
                    │ t_dlp/extractor/common.py:847 in │                        
                    │ _request_webpage                 │                        
                    │                                  │                        
                    │    844 │   │   │   headers.setde │                        
                    │    845 │   │                     │                        
                    │    846 │   │   try:              │                        
                    │ ❱  847 │   │   │   return self._ │                        
                    │        headers, query))          │                        
                    │    848 │   │   except network_ex │                        
                    │    849 │   │   │   if isinstance │                        
                    │    850 │   │   │   │   if self._ │                        
                    │                                  │                        
                    │ /usr/lib/python3/dist-packages/y │                        
                    │ t_dlp/YoutubeDL.py:4052 in       │                        
                    │ urlopen                          │                        
                    │                                  │                        
                    │   4049 │   │   clean_headers(req │                        
                    │   4050 │   │                     │                        
                    │   4051 │   │   try:              │                        
                    │ ❱ 4052 │   │   │   return self._ │                        
                    │   4053 │   │   except NoSupporti │                        
                    │   4054 │   │   │   for ue in e.u │                        
                    │   4055 │   │   │   │   if not (u │                        
                    │                                  │                        
                    │ /usr/lib/python3/dist-packages/y │                        
                    │ t_dlp/networking/common.py:114   │                        
                    │ in send                          │                        
                    │                                  │                        
                    │   111 │   │   │                  │                        
                    │   112 │   │   │   self._print_ve │                        
                    │   113 │   │   │   try:           │                        
                    │ ❱ 114 │   │   │   │   response = │                        
                    │   115 │   │   │   except Request │                        
                    │   116 │   │   │   │   raise      │                        
                    │   117 │   │   │   except Excepti │                        
                    │                                  │                        
                    │ /usr/lib/python3/dist-packages/y │                        
                    │ t_dlp/networking/_helper.py:204  │                        
                    │ in wrapper                       │                        
                    │                                  │                        
                    │   201 │   @functools.wraps(func) │                        
                    │   202 │   def wrapper(self, *arg │                        
                    │   203 │   │   try:               │                        
                    │ ❱ 204 │   │   │   return func(se │                        
                    │   205 │   │   except Unsupported │                        
                    │   206 │   │   │   if e.handler i │                        
                    │   207 │   │   │   │   e.handler  │                        
                    │                                  │                        
                    │ /usr/lib/python3/dist-packages/y │                        
                    │ t_dlp/networking/common.py:325   │                        
                    │ in send                          │                        
                    │                                  │                        
                    │   322 │   def send(self, request │                        
                    │   323 │   │   if not isinstance( │                        
                    │   324 │   │   │   raise TypeErro │                        
                    │ ❱ 325 │   │   return self._send( │                        
                    │   326 │                          │                        
                    │   327 │   @abc.abstractmethod    │                        
                    │   328 │   def _send(self, reques │                        
                    │                                  │                        
                    │ /usr/lib/python3/dist-packages/y │                        
                    │ t_dlp/networking/_urllib.py:408  │                        
                    │ in _send                         │                        
                    │                                  │                        
                    │   405 │   │   │                  │                        
                    │   406 │   │   │   # proxy errors │                        
                    │   407 │   │   │   if 'tunnel con │                        
                    │       SocksProxyError):          │                        
                    │ ❱ 408 │   │   │   │   raise Prox │                        
                    │   409 │   │   │                  │                        
                    │   410 │   │   │   handle_respons │                        
                    │   411 │   │   │   raise Transpor │                        
                    ╰──────────────────────────────────╯                        
                    ProxyError: <urlopen error Tunnel                           
                    connection failed: 407 Proxy                                
                    Authentication Required>                                    
                                                                                
                    During handling of the above                                
                    exception, another exception                                
                    occurred:                                                   
                                                                                
                    ╭─ Traceback (most recent call las─╮                        
                    │ /usr/lib/python3/dist-packages/y │                        
                    │ t_dlp/YoutubeDL.py:1567 in       │                        
                    │ wrapper                          │                        
                    │                                  │                        
                    │   1564 │   │   def wrapper(self, │                        
                    │   1565 │   │   │   while True:   │                        
                    │   1566 │   │   │   │   try:      │                        
                    │ ❱ 1567 │   │   │   │   │   retur │                        
                    │   1568 │   │   │   │   except (D │                        
                    │   1569 │   │   │   │   │   raise │                        
                    │   1570 │   │   │   │   except Re │                        
                    │                                  │                        
                    │ /usr/lib/python3/dist-packages/y │                        
                    │ t_dlp/YoutubeDL.py:1702 in       │                        
                    │ __extract_info                   │                        
                    │                                  │                        
                    │   1699 │   │   self._apply_heade │                        
                    │   1700 │   │                     │                        
                    │   1701 │   │   try:              │                        
                    │ ❱ 1702 │   │   │   ie_result = i │                        
                    │   1703 │   │   except UserNotLiv │                        
                    │   1704 │   │   │   if process:   │                        
                    │   1705 │   │   │   │   if self.p │                        
                    │                                  │                        
                    │ /usr/lib/python3/dist-packages/y │                        
                    │ t_dlp/extractor/common.py:715 in │                        
                    │ extract                          │                        
                    │                                  │                        
                    │    712 │   │   │   │   │   self. │                        
                    │    713 │   │   │   │   │   self. │                        
                    │    714 │   │   │   │   │   │   u │                        
                    │        20)))                     │                        
                    │ ❱  715 │   │   │   │   │   ie_re │                        
                    │    716 │   │   │   │   │   if ie │                        
                    │    717 │   │   │   │   │   │   r │                        
                    │    718 │   │   │   │   │   if se │                        
                    │                                  │                        
                    │ /usr/lib/python3/dist-packages/y │                        
                    │ t_dlp/extractor/youtube.py:4073  │                        
                    │ in _real_extract                 │                        
                    │                                  │                        
                    │   4070 │   │   base_url = self.h │                        
                    │   4071 │   │   webpage_url = bas │                        
                    │   4072 │   │                     │                        
                    │ ❱ 4073 │   │   webpage, master_y │                        
                    │        self._download_player_res │                        
                    │   4074 │   │                     │                        
                    │   4075 │   │   playability_statu │                        
                    │   4076 │   │   │   player_respon │                        
                    │                                  │                        
                    │ /usr/lib/python3/dist-packages/y │                        
                    │ t_dlp/extractor/youtube.py:4037  │                        
                    │ in _download_player_responses    │                        
                    │                                  │                        
                    │   4034 │   │                     │                        
                    │   4035 │   │   master_ytcfg = se │                        
                    │        self._get_default_ytcfg() │                        
                    │   4036 │   │                     │                        
                    │ ❱ 4037 │   │   player_responses, │                        
                    │   4038 │   │   │   self._get_req │                        
                    │   4039 │   │   │   video_id, web │                        
                    │   4040                           │                        
                    │                                  │                        
                    │ /usr/lib/python3/dist-packages/y │                        
                    │ t_dlp/extractor/youtube.py:3728  │                        
                    │ in _extract_player_responses     │                        
                    │                                  │                        
                    │   3725 │   │                     │                        
                    │   3726 │   │   if last_error:    │                        
                    │   3727 │   │   │   if not len(pr │                        
                    │ ❱ 3728 │   │   │   │   raise las │                        
                    │   3729 │   │   │   self.report_w │                        
                    │   3730 │   │   return prs, playe │                        
                    │   3731                           │                        
                    │                                  │                        
                    │ /usr/lib/python3/dist-packages/y │                        
                    │ t_dlp/extractor/youtube.py:3693  │                        
                    │ in _extract_player_responses     │                        
                    │                                  │                        
                    │   3690 │   │   │   │   tried_ifr │                        
                    │   3691 │   │   │                 │                        
                    │   3692 │   │   │   try:          │                        
                    │ ❱ 3693 │   │   │   │   pr = init │                        
                    │        self._extract_player_resp │                        
                    │   3694 │   │   │   │   │   clien │                        
                    │        player_url if require_js_ │                        
                    │   3695 │   │   │   except Extrac │                        
                    │   3696 │   │   │   │   if last_e │                        
                    │                                  │                        
                    │ /usr/lib/python3/dist-packages/y │                        
                    │ t_dlp/extractor/youtube.py:3613  │                        
                    │ in _extract_player_response      │                        
                    │                                  │                        
                    │   3610 │   │   │   yt_query['par │                        
                    │   3611 │   │                     │                        
                    │   3612 │   │   yt_query.update(s │                        
                    │ ❱ 3613 │   │   return self._extr │                        
                    │   3614 │   │   │   item_id=video │                        
                    │   3615 │   │   │   ytcfg=player_ │                        
                    │   3616 │   │   │   default_clien │                        
                    │                                  │                        
                    │ /usr/lib/python3/dist-packages/y │                        
                    │ t_dlp/extractor/youtube.py:966   │                        
                    │ in _extract_response             │                        
                    │                                  │                        
                    │    963 │   │   │   │   │   retur │                        
                    │    964 │   │   │   │   elif not  │                        
                    │    965 │   │   │   │   │   main_ │                        
                    │ ❱  966 │   │   │   │   │   next( │                        
                    │    967 │   │   │   │   │   conti │                        
                    │    968 │   │   │   │             │                        
                    │    969 │   │   │   │   first_byt │                        
                    │                                  │                        
                    │ /usr/lib/python3/dist-packages/y │                        
                    │ t_dlp/utils/_utils.py:5114 in    │                        
                    │ __iter__                         │                        
                    │                                  │                        
                    │   5111 │   │   │   self.attempt  │                        
                    │   5112 │   │   │   yield self    │                        
                    │   5113 │   │   │   if self.error │                        
                    │ ❱ 5114 │   │   │   │   self.erro │                        
                    │   5115 │                         │                        
                    │   5116 │   @staticmethod         │                        
                    │   5117 │   def report_retry(e, c │                        
                    │        suffix=None):             │                        
                    │                                  │                        
                    │ /usr/lib/python3/dist-packages/y │                        
                    │ t_dlp/extractor/common.py:3762   │                        
                    │ in _error_or_warning             │                        
                    │                                  │                        
                    │   3759 │   │   return True       │                        
                    │   3760 │                         │                        
                    │   3761 │   def _error_or_warning │                        
                    │ ❱ 3762 │   │   RetryManager.repo │                        
                    │   3763 │   │   │   err, _count o │                        
                    │   3764 │   │   │   info=self.to_ │                        
                    │        self.report_warning,      │                        
                    │   3765 │   │   │   sleep_func=se │                        
                    │                                  │                        
                    │ /usr/lib/python3/dist-packages/y │                        
                    │ t_dlp/utils/_utils.py:5122 in    │                        
                    │ report_retry                     │                        
                    │                                  │                        
                    │   5119 │   │   if count > retrie │                        
                    │   5120 │   │   │   if error:     │                        
                    │   5121 │   │   │   │   return er │                        
                    │        else error(str(e))        │                        
                    │ ❱ 5122 │   │   │   raise e       │                        
                    │   5123 │   │                     │                        
                    │   5124 │   │   if not count:     │                        
                    │   5125 │   │   │   return warn(e │                        
                    │                                  │                        
                    │ /usr/lib/python3/dist-packages/y │                        
                    │ t_dlp/extractor/youtube.py:955   │                        
                    │ in _extract_response             │                        
                    │                                  │                        
                    │    952 │   │   # and its result  │                        
                    │    953 │   │   while True:       │                        
                    │    954 │   │   │   try:          │                        
                    │ ❱  955 │   │   │   │   response  │                        
                    │    956 │   │   │   │   │   ep=ep │                        
                    │    957 │   │   │   │   │   video │                        
                    │    958 │   │   │   │   │   conte │                        
                    │                                  │                        
                    │ /usr/lib/python3/dist-packages/y │                        
                    │ t_dlp/extractor/youtube.py:603   │                        
                    │ in _call_api                     │                        
                    │                                  │                        
                    │    600 │   │   │   real_headers. │                        
                    │    601 │   │   api_key = (self._ │                        
                    │        ie_key=YoutubeIE.ie_key() │                        
                    │    602 │   │   │   │      or api │                        
                    │ ❱  603 │   │   return self._down │                        
                    │    604 │   │   │   f'https://{se │                        
                    │        default_client)}/youtubei │                        
                    │    605 │   │   │   video_id=vide │                        
                    │    606 │   │   │   data=json.dum │                        
                    │                                  │                        
                    │ /usr/lib/python3/dist-packages/y │                        
                    │ t_dlp/extractor/common.py:1069   │                        
                    │ in download_content              │                        
                    │                                  │                        
                    │   1066 │   │   │   if parser is  │                        
                    │   1067 │   │   │   │   kwargs.po │                        
                    │   1068 │   │   │   # The method  │                        
                    │        _download_..._handle      │                        
                    │ ❱ 1069 │   │   │   res = getattr │                        
                    │        **kwargs)                 │                        
                    │   1070 │   │   │   return res if │                        
                    │   1071 │   │                     │                        
                    │   1072 │   │   def impersonate(f │                        
                    │                                  │                        
                    │ /usr/lib/python3/dist-packages/y │                        
                    │ t_dlp/extractor/common.py:1033   │                        
                    │ in download_handle               │                        
                    │                                  │                        
                    │   1030 │   │                     │                        
                    │   1031 │   │   def download_hand │                        
                    │        transform_source=None,    │                        
                    │   1032 │   │   │   │   │   │   │ │                        
                    │        expected_status=None):    │                        
                    │ ❱ 1033 │   │   │   res = self._d │                        
                    │   1034 │   │   │   │   url_or_re │                        
                    │        encoding=encoding,        │                        
                    │   1035 │   │   │   │   data=data │                        
                    │        expected_status=expected_ │                        
                    │   1036 │   │   │   if res is Fal │                        
                    │                                  │                        
                    │ /usr/lib/python3/dist-packages/y │                        
                    │ t_dlp/extractor/common.py:903 in │                        
                    │ _download_webpage_handle         │                        
                    │                                  │                        
                    │    900 │   │   if isinstance(url │                        
                    │    901 │   │   │   url_or_reques │                        
                    │    902 │   │                     │                        
                    │ ❱  903 │   │   urlh = self._requ │                        
                    │        data=data, headers=header │                        
                    │    904 │   │   if urlh is False: │                        
                    │    905 │   │   │   assert not fa │                        
                    │    906 │   │   │   return False  │                        
                    │                                  │                        
                    │ /usr/lib/python3/dist-packages/y │                        
                    │ t_dlp/extractor/common.py:860 in │                        
                    │ _request_webpage                 │                        
                    │                                  │                        
                    │    857 │   │   │                 │                        
                    │    858 │   │   │   errmsg = f'{e │                        
                    │    859 │   │   │   if fatal:     │                        
                    │ ❱  860 │   │   │   │   raise Ext │                        
                    │    861 │   │   │   else:         │                        
                    │    862 │   │   │   │   self.repo │                        
                    │    863 │   │   │   │   return Fa │                        
                    ╰──────────────────────────────────╯                        
                    ExtractorError: [youtube]                                   
                    ad30z1t_t30: Unable to download API                         
                    page: <urlopen error Tunnel                                 
                    connection failed: 407 Proxy                                
                    Authentication Required> (caused by                         
                    ProxyError('<urlopen error Tunnel                           
                    connection failed: 407 Proxy                                
                    Authentication Required>')); please                         
                    report this issue on                                        
                    https://github.com/yt-dlp/yt-dlp/iss                        
                    ues?q= , filling out the appropriate                        
                    issue template. Confirm you are on                          
                    the latest version using  yt-dlp -U                         
                                                                                
                    During handling of the above                                
                    exception, another exception                                
                    occurred:                                                   
                                                                                
                    ╭─ Traceback (most recent call las─╮                        
                    │ /usr/local/lib/python3.11/dist-p │                        
                    │ ackages/spotdl/providers/audio/b │                        
                    │ ase.py:369 in                    │                        
                    │ get_download_metadata            │                        
                    │                                  │                        
                    │   366 │   │   """                │                        
                    │   367 │   │                      │                        
                    │   368 │   │   try:               │                        
                    │ ❱ 369 │   │   │   data = self.au │                        
                    │   370 │   │   │                  │                        
                    │   371 │   │   │   if data:       │                        
                    │   372 │   │   │   │   return dat │                        
                    │                                  │                        
                    │ /usr/lib/python3/dist-packages/y │                        
                    │ t_dlp/YoutubeDL.py:1556 in       │                        
                    │ extract_info                     │                        
                    │                                  │                        
                    │   1553 │   │   │   │   if self.p │                        
                    │   1554 │   │   │   │   │   raise │                        
                    │   1555 │   │   │   │   break     │                        
                    │ ❱ 1556 │   │   │   return self._ │                        
                    │        extra_info, process)      │                        
                    │   1557 │   │   else:             │                        
                    │   1558 │   │   │   extractors_re │                        
                    │        ['default'])              │                        
                    │   1559 │   │   │   self.report_e │                        
                    │        (%s)")} found for URL {ur │                        
                    │                                  │                        
                    │ /usr/lib/python3/dist-packages/y │                        
                    │ t_dlp/YoutubeDL.py:1585 in       │                        
                    │ wrapper                          │                        
                    │                                  │                        
                    │   1582 │   │   │   │   │   msg + │                        
                    │        --proxy) to workaround.'  │                        
                    │   1583 │   │   │   │   │   self. │                        
                    │   1584 │   │   │   │   except Ex │                        
                    │ ❱ 1585 │   │   │   │   │   self. │                        
                    │   1586 │   │   │   │   except Ex │                        
                    │   1587 │   │   │   │   │   if se │                        
                    │   1588 │   │   │   │   │   │   s │                        
                    │        tb=encode_compat_str(trac │                        
                    │                                  │                        
                    │ /usr/lib/python3/dist-packages/y │                        
                    │ t_dlp/YoutubeDL.py:1045 in       │                        
                    │ report_error                     │                        
                    │                                  │                        
                    │   1042 │   │   Do the same as tr │                        
                    │   1043 │   │   in red if stderr  │                        
                    │   1044 │   │   '''               │                        
                    │ ❱ 1045 │   │   self.trouble(f'{s │                        
                    │        *args, **kwargs)          │                        
                    │   1046 │                         │                        
                    │   1047 │   def write_debug(self, │                        
                    │   1048 │   │   '''Log debug mess │                        
                    │                                  │                        
                    │ /usr/lib/python3/dist-packages/y │                        
                    │ t_dlp/YoutubeDL.py:964 in        │                        
                    │ trouble                          │                        
                    │                                  │                        
                    │    961 │   │   @param is_error   │                        
                    │    962 │   │   """               │                        
                    │    963 │   │   if message is not │                        
                    │ ❱  964 │   │   │   self.to_stder │                        
                    │    965 │   │   if self.params.ge │                        
                    │    966 │   │   │   if tb is None │                        
                    │    967 │   │   │   │   if sys.ex │                        
                    │        block                     │                        
                    │                                  │                        
                    │ /usr/lib/python3/dist-packages/y │                        
                    │ t_dlp/YoutubeDL.py:906 in        │                        
                    │ to_stderr                        │                        
                    │                                  │                        
                    │    903 │   │   """Print message  │                        
                    │    904 │   │   assert isinstance │                        
                    │    905 │   │   if self.params.ge │                        
                    │ ❱  906 │   │   │   self.params[' │                        
                    │    907 │   │   else:             │                        
                    │    908 │   │   │   self._write_s │                        
                    │        self._out_files.error, on │                        
                    │    909                           │                        
                    │                                  │                        
                    │ /usr/local/lib/python3.11/dist-p │                        
                    │ ackages/spotdl/providers/audio/b │                        
                    │ ase.py:57 in error               │                        
                    │                                  │                        
                    │    54 │   │   YTDL uses this to  │                        
                    │    55 │   │   """                │                        
                    │    56 │   │                      │                        
                    │ ❱  57 │   │   raise AudioProvide │                        
                    │    58                            │                        
                    │    59                            │                        
                    │    60 ISRC_REGEX = re.compile(r" │                        
                    ╰──────────────────────────────────╯                        
                    AudioProviderError: ERROR: [youtube]                        
                    ad30z1t_t30: Unable to download API                         
                    page: <urlopen error Tunnel                                 
                    connection failed: 407 Proxy                                
                    Authentication Required> (caused by                         
                    ProxyError('<urlopen error Tunnel                           
                    connection failed: 407 Proxy                                
                    Authentication Required>')); please                         
                    report this issue on                                        
                    https://github.com/yt-dlp/yt-dlp/iss                        
                    ues?q= , filling out the appropriate                        
                    issue template. Confirm you are on                          
                    the latest version using  yt-dlp -U                         
                                                                                
                    The above exception was the direct                          
                    cause of the following exception:                           
                                                                                
                    ╭─ Traceback (most recent call las─╮                        
                    │ /usr/local/lib/python3.11/dist-p │                        
                    │ ackages/spotdl/download/download │                        
                    │ er.py:646 in search_and_download │                        
                    │                                  │                        
                    │   643 │   │   │   │   display_pr │                        
                    │   644 │   │   │   )              │                        
                    │   645 │   │   │                  │                        
                    │ ❱ 646 │   │   │   download_info  │                        
                    │   647 │   │   │   │   download_u │                        
                    │   648 │   │   │   )              │                        
                    │   649                            │                        
                    │                                  │                        
                    │ /usr/local/lib/python3.11/dist-p │                        
                    │ ackages/spotdl/providers/audio/b │                        
                    │ ase.py:375 in                    │                        
                    │ get_download_metadata            │                        
                    │                                  │                        
                    │   372 │   │   │   │   return dat │                        
                    │   373 │   │   except Exception a │                        
                    │   374 │   │   │   logger.debug(e │                        
                    │ ❱ 375 │   │   │   raise AudioPro │                        
                    │   376 │   │                      │                        
                    │   377 │   │   raise AudioProvide │                        
                    │   378                            │                        
                    ╰──────────────────────────────────╯                        
                    AudioProviderError: YT-DLP download                         
                    error -                                                     
                    https://music.youtube.com/watch?v=ad                        
                    30z1t_t30                                                   
[16:40:03] DEBUG    MainThread - Took 80 seconds              entry_point.py:151

@reppson
Copy link

reppson commented Jan 11, 2024

I have the same problem since today. Yesterday it worked fine, today i got the AudioProviderError as well

@abisshekl
Copy link

Same thing happened to me. I tried updating and that also did not work

@ryndshn
Copy link

ryndshn commented Feb 10, 2024

here's the error I get when downloading a Spotify playlist of 4400 songs. fwiw, it starts processing the playlist and downloads successfully but consistently hits this after running for a little while.

entire error log in file (too long for gh to let me paste here)
spotify-download-error.txt

[18:42:51] ERROR    asyncio_3 - Traceback (most recent call last):                                progress_handler.py:358
                      File "/opt/homebrew/lib/python3.11/site-packages/urllib3/connection.py",                           
                    line 198, in _new_conn                                                                               
                        sock = connection.create_connection(                                                             
                               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^                                                             
                      File                                                                                               
                    "/opt/homebrew/lib/python3.11/site-packages/urllib3/util/connection.py", line                        
                    60, in create_connection                                                                             
                        for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM):                           
                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^                            
                      File                                                                                               
                    "/opt/homebrew/Cellar/[email protected]/3.11.7_1/Frameworks/Python.framework/Versio                        
                    ns/3.11/lib/python3.11/socket.py", line 962, in getaddrinfo                                          
                        for res in _socket.getaddrinfo(host, port, family, type, proto, flags):                          
                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^                           
                    socket.gaierror: [Errno 8] nodename nor servname provided, or not known                              
                                                                                                                         
                    The above exception was the direct cause of the following exception:                                 
                                                                                                                         
                    Traceback (most recent call last):                                                                   
                      File                                                                                               
                    "/opt/homebrew/lib/python3.11/site-packages/yt_dlp/networking/_requests.py",                         
                    line 306, in _send                                                                                   
                        requests_res = session.request(                                                                  
                                       ^^^^^^^^^^^^^^^^                                                                  
                      File "/opt/homebrew/lib/python3.11/site-packages/requests/sessions.py",                            
                    line 589, in request                                                                                 
                        resp = self.send(prep, **send_kwargs)                                                            
                               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^                                                            
                      File "/opt/homebrew/lib/python3.11/site-packages/requests/sessions.py",                            
                    line 703, in send                                                                                    
                        r = adapter.send(request, **kwargs)                                                              
                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^                                                              
                      File "/opt/homebrew/lib/python3.11/site-packages/requests/adapters.py",                            
                    line 486, in send                                                                                    
                        resp = conn.urlopen(                                                                             
                               ^^^^^^^^^^^^^                                                                             
                      File                                                                                               
                    "/opt/homebrew/lib/python3.11/site-packages/urllib3/connectionpool.py", line                         
                    847, in urlopen                                                                                      
                        retries = retries.increment(                                                                     
                                  ^^^^^^^^^^^^^^^^^^                                                                     
                      File "/opt/homebrew/lib/python3.11/site-packages/urllib3/util/retry.py",                           
                    line 445, in increment                                                                               
                        raise reraise(type(error), error, _stacktrace)                                                   
                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^                                                   
                      File "/opt/homebrew/lib/python3.11/site-packages/urllib3/util/util.py",                            
                    line 39, in reraise                                                                                  
                        raise value                                                                                      
                      File                                                                                               
                    "/opt/homebrew/lib/python3.11/site-packages/urllib3/connectionpool.py", line                         
                    793, in urlopen                                                                                      
                        response = self._make_request(                                                                   
                                   ^^^^^^^^^^^^^^^^^^^                                                                   
                      File                                                                                               
                    "/opt/homebrew/lib/python3.11/site-packages/urllib3/connectionpool.py", line                         
                    491, in _make_request                                                                                
                        raise new_e                                                                                      
                      File                                                                                               
                    "/opt/homebrew/lib/python3.11/site-packages/urllib3/connectionpool.py", line                         
                    467, in _make_request                                                                                
                        self._validate_conn(conn)                                                                        
                      File                                                                                               
                    "/opt/homebrew/lib/python3.11/site-packages/urllib3/connectionpool.py", line                         
                    1099, in _validate_conn                                                                              
                        conn.connect()                                                                                   
                      File "/opt/homebrew/lib/python3.11/site-packages/urllib3/connection.py",                           
                    line 616, in connect                                                                                 
                        self.sock = sock = self._new_conn()                                                              
                                           ^^^^^^^^^^^^^^^^                                                              
                      File "/opt/homebrew/lib/python3.11/site-packages/urllib3/connection.py",                           
                    line 205, in _new_conn                                                                               
                        raise NameResolutionError(self.host, self, e) from e                                             
                    urllib3.exceptions.NameResolutionError: <urllib3.connection.HTTPSConnection                          
                    object at 0x2a598b090>: Failed to resolve 'music.youtube.com' ([Errno 8]                             
                    nodename nor servname provided, or not known)                                                        
                                                                                                                         
                    The above exception was the direct cause of the following exception:                                 
                                                                                                                         
                    Traceback (most recent call last):                                                                   
                      File                                                                                               
                    "/opt/homebrew/lib/python3.11/site-packages/yt_dlp/extractor/common.py", line                        
                    850, in _request_webpage                                                                             
                        return self._downloader.urlopen(self._create_request(url_or_request,                             
                    data, headers, query))                                                                               
                               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^                        
                    ^^^^^^^^^^^^^^^^^^                                                                                   
                      File "/opt/homebrew/lib/python3.11/site-packages/yt_dlp/YoutubeDL.py", line                        
                    4082, in urlopen                                                                                     
                        return self._request_director.send(req)                                                          
                               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^                                                          
                      File                                                                                               
                    "/opt/homebrew/lib/python3.11/site-packages/yt_dlp/networking/common.py",                            
                    line 114, in send                                                                                    
                        response = handler.send(request)                                                                 
                                   ^^^^^^^^^^^^^^^^^^^^^                                                                 
                      File                                                                                               
                    "/opt/homebrew/lib/python3.11/site-packages/yt_dlp/networking/_helper.py",                           
                    line 204, in wrapper                                                                                 
                        return func(self, *args, **kwargs)                                                               
                               ^^^^^^^^^^^^^^^^^^^^^^^^^^^                                                               
                      File                                                                                               
                    "/opt/homebrew/lib/python3.11/site-packages/yt_dlp/networking/common.py",                            
                    line 325, in send                                                                                    
                        return self._send(request)                                                                       
                               ^^^^^^^^^^^^^^^^^^^                                                                       
                      File                                                                                               
                    "/opt/homebrew/lib/python3.11/site-packages/yt_dlp/networking/_requests.py",                         
                    line 334, in _send                                                                                   
                        raise TransportError(cause=e) from e                                                             
                    yt_dlp.networking.exceptions.TransportError:                                                         
                    <urllib3.connection.HTTPSConnection object at 0x2a598b090>: Failed to resolve                        
                    'music.youtube.com' ([Errno 8] nodename nor servname provided, or not known)                         
                                                                                                                         
                    During handling of the above exception, another exception occurred:                                  
                                                                                                                         
                    Traceback (most recent call last):                                                                   
                      File "/opt/homebrew/lib/python3.11/site-packages/yt_dlp/YoutubeDL.py", line                        
                    1587, in wrapper                                                                                     
                        return func(self, *args, **kwargs)                                                               
                               ^^^^^^^^^^^^^^^^^^^^^^^^^^^                                                               
                      File "/opt/homebrew/lib/python3.11/site-packages/yt_dlp/YoutubeDL.py", line                        
                    1722, in __extract_info                                                                              
                        ie_result = ie.extract(url)                                                                      
                                    ^^^^^^^^^^^^^^^                                                                      
                      File                                                                                               
                    "/opt/homebrew/lib/python3.11/site-packages/yt_dlp/extractor/common.py", line                        
                    718, in extract                                                                                      
                        ie_result = self._real_extract(url)                                                              
                                    ^^^^^^^^^^^^^^^^^^^^^^^                                                              
                      File                                                                                               
                    "/opt/homebrew/lib/python3.11/site-packages/yt_dlp/extractor/youtube.py",                            
                    line 4072, in _real_extract                                                                          
                        webpage, master_ytcfg, player_responses, player_url =                                            
                    self._download_player_responses(url, smuggled_data, video_id, webpage_url)                           
                                                                              ^^^^^^^^^^^^^^^^^^^                        
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^                                              
                      File                                                                                               
                    "/opt/homebrew/lib/python3.11/site-packages/yt_dlp/extractor/youtube.py",                            
                    line 4036, in _download_player_responses                                                             
                        player_responses, player_url = self._extract_player_responses(                                   
                                                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^                                   
                      File                                                                                               
                    "/opt/homebrew/lib/python3.11/site-packages/yt_dlp/extractor/youtube.py",                            
                    line 3727, in _extract_player_responses                                                              
                        raise last_error                                                                                 
                      File                                                                                               
                    "/opt/homebrew/lib/python3.11/site-packages/yt_dlp/extractor/youtube.py",                            
                    line 3692, in _extract_player_responses                                                              
                        pr = initial_pr if client == 'web' and initial_pr else                                           
                    self._extract_player_response(                                                                       
                                                                               ^^^^^^^^^^^^^^^^^^                        
                    ^^^^^^^^^^^^                                                                                         
                      File                                                                                               
                    "/opt/homebrew/lib/python3.11/site-packages/yt_dlp/extractor/youtube.py",                            
                    line 3612, in _extract_player_response                                                               
                        return self._extract_response(                                                                   
                               ^^^^^^^^^^^^^^^^^^^^^^^                                                                   
                      File                                                                                               
                    "/opt/homebrew/lib/python3.11/site-packages/yt_dlp/extractor/youtube.py",                            
                    line 966, in _extract_response                                                                       
                        next(main_retries)                                                                               
                      File "/opt/homebrew/lib/python3.11/site-packages/yt_dlp/utils/_utils.py",                          
                    line 5046, in __iter__                                                                               
                        self.error_callback(self.error, self.attempt, self.retries)                                      
                      File                                                                                               
                    "/opt/homebrew/lib/python3.11/site-packages/yt_dlp/extractor/common.py", line                        
                    3767, in _error_or_warning                                                                           
                        RetryManager.report_retry(                                                                       
                      File "/opt/homebrew/lib/python3.11/site-packages/yt_dlp/utils/_utils.py",                          
                    line 5054, in report_retry                                                                           
                        raise e                                                                                          
                      File                                                                                               
                    "/opt/homebrew/lib/python3.11/site-packages/yt_dlp/extractor/youtube.py",                            
                    line 955, in _extract_response                                                                       
                        response = self._call_api(                                                                       
                                   ^^^^^^^^^^^^^^^                                                                       
                      File                                                                                               
                    "/opt/homebrew/lib/python3.11/site-packages/yt_dlp/extractor/youtube.py",                            
                    line 603, in _call_api                                                                               
                        return self._download_json(                                                                      
                               ^^^^^^^^^^^^^^^^^^^^                                                                      
                      File                                                                                               
                    "/opt/homebrew/lib/python3.11/site-packages/yt_dlp/extractor/common.py", line                        
                    1072, in download_content                                                                            
                        res = getattr(self, download_handle.__name__)(url_or_request, video_id,                          
                    **kwargs)                                                                                            
                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^                        
                    ^^^^^^^^                                                                                             
                      File                                                                                               
                    "/opt/homebrew/lib/python3.11/site-packages/yt_dlp/extractor/common.py", line                        
                    1036, in download_handle                                                                             
                        res = self._download_webpage_handle(                                                             
                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^                                                             
                      File                                                                                               
                    "/opt/homebrew/lib/python3.11/site-packages/yt_dlp/extractor/common.py", line                        
                    906, in _download_webpage_handle                                                                     
                        urlh = self._request_webpage(url_or_request, video_id, note, errnote,                            
                    fatal, data=data, headers=headers, query=query,                                                      
                    expected_status=expected_status)                                                                     
                               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^                        
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^                        
                      File                                                                                               
                    "/opt/homebrew/lib/python3.11/site-packages/yt_dlp/extractor/common.py", line                        
                    863, in _request_webpage                                                                             
                        raise ExtractorError(errmsg, cause=err)                                                          
                    yt_dlp.utils.ExtractorError:  OPKTk5vUtDY: Unable to download API page:                              
                    <urllib3.connection.HTTPSConnection object at 0x2a598b090>: Failed to resolve                        
                    'music.youtube.com' ([Errno 8] nodename nor servname provided, or not known)                         
                    (caused by TransportError("<urllib3.connection.HTTPSConnection object at                             
                    0x2a598b090>: Failed to resolve 'music.youtube.com' ([Errno 8] nodename nor                          
                    servname provided, or not known)"))                                                                  
                                                                                                                         
                    During handling of the above exception, another exception occurred:                                  
                                                                                                                         
                    Traceback (most recent call last):                                                                   
                      File                                                                                               
                    "/opt/homebrew/lib/python3.11/site-packages/spotdl/providers/audio/base.py",                         
                    line 369, in get_download_metadata                                                                   
                        data = self.audio_handler.extract_info(url, download=download)                                   
                               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^                                   
                      File "/opt/homebrew/lib/python3.11/site-packages/yt_dlp/YoutubeDL.py", line                        
                    1576, in extract_info                                                                                
                        return self.__extract_info(url, self.get_info_extractor(key), download,                          
                    extra_info, process)                                                                                 
                               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^                        
                    ^^^^^^^^^^^^^^^^^^^                                                                                  
                      File "/opt/homebrew/lib/python3.11/site-packages/yt_dlp/YoutubeDL.py", line                        
                    1605, in wrapper                                                                                     
                        self.report_error(str(e), e.format_traceback())                                                  
                      File "/opt/homebrew/lib/python3.11/site-packages/yt_dlp/YoutubeDL.py", line                        
                    1054, in report_error                                                                                
                        self.trouble(f'{self._format_err("ERROR:", self.Styles.ERROR)}                                   
                    {message}', *args, **kwargs)                                                                         
                      File "/opt/homebrew/lib/python3.11/site-packages/yt_dlp/YoutubeDL.py", line                        
                    973, in trouble                                                                                      
                        self.to_stderr(message)                                                                          
                      File "/opt/homebrew/lib/python3.11/site-packages/yt_dlp/YoutubeDL.py", line                        
                    915, in to_stderr                                                                                    
                        self.params['logger'].error(message)                                                             
                      File                                                                                               
                    "/opt/homebrew/lib/python3.11/site-packages/spotdl/providers/audio/base.py",                         
                    line 57, in error                                                                                    
                        raise AudioProviderError(msg)                                                                    
                    spotdl.providers.audio.base.AudioProviderError: [0;31mERROR:[0m  OPKTk5vUtDY:                        
                    Unable to download API page: <urllib3.connection.HTTPSConnection object at                           
                    0x2a598b090>: Failed to resolve 'music.youtube.com' ([Errno 8] nodename nor                          
                    servname provided, or not known) (caused by                                                          
                    TransportError("<urllib3.connection.HTTPSConnection object at 0x2a598b090>:                          
                    Failed to resolve 'music.youtube.com' ([Errno 8] nodename nor servname                               
                    provided, or not known)"))                                                                           
                                                                                                                         
                    The above exception was the direct cause of the following exception:                                 
                                                                                                                         
                    Traceback (most recent call last):                                                                   
                      File                                                                                               
                    "/opt/homebrew/lib/python3.11/site-packages/spotdl/download/downloader.py",                          
                    line 646, in search_and_download                                                                     
                        download_info = audio_downloader.get_download_metadata(                                          
                                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^                                          
                      File                                                                                               
                    "/opt/homebrew/lib/python3.11/site-packages/spotdl/providers/audio/base.py",                         
                    line 375, in get_download_metadata                                                                   
                        raise AudioProviderError(f"YT-DLP download error - {url}") from exception                        
                    spotdl.providers.audio.base.AudioProviderError: YT-DLP download error -                              
                    https://music.youtube.com/watch?v=OPKTk5vUtDY                                                        
                                                                                                                         
                    ╭──────────────────── Traceback (most recent call last) ────────────────────╮                        
                    │ /opt/homebrew/lib/python3.11/site-packages/urllib3/connection.py:198 in   │                        
                    │ _new_conn                                                                 │                        
                    │                                                                           │                        
                    │   195 │   │   :return: New socket connection.                             │                        
                    │   196 │   │   """                                                         │                        
                    │   197 │   │   try:                                                        │                        
                    │ ❱ 198 │   │   │   sock = connection.create_connection(                    │                        
                    │   199 │   │   │   │   (self._dns_host, self.port),                        │                        
                    │   200 │   │   │   │   self.timeout,                                       │                        
                    │   201 │   │   │   │   source_address=self.source_address,                 │                        
                    │                                                                           │                        
                    │ /opt/homebrew/lib/python3.11/site-packages/urllib3/util/connection.py:60  │                        
                    │ in create_connection                                                      │                        
                    │                                                                           │                        
                    │    57 │   except UnicodeError:                                            │                        
                    │    58 │   │   raise LocationParseError(f"'{host}', label empty or too lon │                        
                    │    59 │                                                                   │                        
                    │ ❱  60 │   for res in socket.getaddrinfo(host, port, family, socket.SOCK_S │                        
                    │    61 │   │   af, socktype, proto, canonname, sa = res                    │                        
                    │    62 │   │   sock = None                                                 │                        
                    │    63 │   │   try:                                                        │                        
                    │                                                                           │                        
                    │ /opt/homebrew/Cellar/[email protected]/3.11.7_1/Frameworks/Python.framework/Ver │                        
                    │ sions/3.11/lib/python3.11/socket.py:962 in getaddrinfo                    │                        
                    │                                                                           │                        
                    │   959 │   # We override this function since we want to translate the nume │                        
                    │   960 │   # and socket type values to enum constants.                     │                        
                    │   961 │   addrlist = []                                                   │                        
                    │ ❱ 962 │   for res in _socket.getaddrinfo(host, port, family, type, proto, │                        
                    │   963 │   │   af, socktype, proto, canonname, sa = res                    │                        
                    │   964 │   │   addrlist.append((_intenum_converter(af, AddressFamily),     │                        
                    │   965 │   │   │   │   │   │    _intenum_converter(socktype, SocketKind),  │                        
                    ╰───────────────────────────────────────────────────────────────────────────╯                        
                    gaierror: [Errno 8] nodename nor servname provided, or not known                                     
                                                                                                                         
                    The above exception was the direct cause of the following exception:                                 
                                                                                                                         
                    ╭──────────────────── Traceback (most recent call last) ────────────────────╮                        
                    │ /opt/homebrew/lib/python3.11/site-packages/yt_dlp/networking/_requests.py │                        
                    │ :306 in _send                                                             │                        
                    │                                                                           │                        
                    │   303 │   │   │   cookiejar=request.extensions.get('cookiejar') or self.c │                        
                    │   304 │   │                                                               │                        
                    │   305 │   │   try:                                                        │                        
                    │ ❱ 306 │   │   │   requests_res = session.request(                         │                        
                    │   307 │   │   │   │   method=request.method,                              │                        
                    │   308 │   │   │   │   url=request.url,                                    │                        
                    │   309 │   │   │   │   data=request.data,                                  │                        
                    │                                                                           │                        
                    │ /opt/homebrew/lib/python3.11/site-packages/requests/sessions.py:589 in    │                        
                    │ request                                                                   │                        
                    │                                                                           │                        
                    │   586 │   │   │   "allow_redirects": allow_redirects,                     │                        
                    │   587 │   │   }                                                           │                        
                    │   588 │   │   send_kwargs.update(settings)                                │                        
                    │ ❱ 589 │   │   resp = self.send(prep, **send_kwargs)                       │                        
                    │   590 │   │                                                               │                        
                    │   591 │   │   return resp                                                 │                        
                    │   592                                                                     │                        
                    │                                                                           │                        
                    │ /opt/homebrew/lib/python3.11/site-packages/requests/sessions.py:703 in    │                        
                    │ send                                                                      │                        
                    │                                                                           │                        
                    │   700 │   │   start = preferred_clock()                                   │                        
                    │   701 │   │                                                               │                        
                    │   702 │   │   # Send the request                                          │                        
                    │ ❱ 703 │   │   r = adapter.send(request, **kwargs)                         │                        
                    │   704 │   │                                                               │                        
                    │   705 │   │   # Total elapsed time of the request (approximately)         │                        
                    │   706 │   │   elapsed = preferred_clock() - start                         │                        
                    │                                                                           │                        
                    │ /opt/homebrew/lib/python3.11/site-packages/requests/adapters.py:486 in    │                        
                    │ send                                                                      │                        
                    │                                                                           │                        
                    │   483 │   │   │   timeout = TimeoutSauce(connect=timeout, read=timeout)   │                        
                    │   484 │   │                                                               │                        
                    │   485 │   │   try:                                                        │                        
                    │ ❱ 486 │   │   │   resp = conn.urlopen(                                    │                        
                    │   487 │   │   │   │   method=request.method,                              │                        
                    │   488 │   │   │   │   url=url,                                            │                        
                    │   489 │   │   │   │   body=request.body,                                  │                        
                    │                                                                           │                        
                    │ /opt/homebrew/lib/python3.11/site-packages/urllib3/connectionpool.py:847  │                        
                    │ in urlopen                                                                │                        
                    │                                                                           │                        
                    │    844 │   │   │   elif isinstance(new_e, (OSError, HTTPException)):      │                        
                    │    845 │   │   │   │   new_e = ProtocolError("Connection aborted.", new_e │                        
                    │    846 │   │   │                                                          │                        
                    │ ❱  847 │   │   │   retries = retries.increment(                           │                        
                    │    848 │   │   │   │   method, url, error=new_e, _pool=self, _stacktrace= │                        
                    │    849 │   │   │   )                                                      │                        
                    │    850 │   │   │   retries.sleep()                                        │                        
                    │                                                                           │                        
                    │ /opt/homebrew/lib/python3.11/site-packages/urllib3/util/retry.py:445 in   │                        
                    │ increment                                                                 │                        
                    │                                                                           │                        
                    │   442 │   │   """                                                         │                        
                    │   443 │   │   if self.total is False and error:                           │                        
                    │   444 │   │   │   # Disabled, indicate to re-raise the error.             │                        
                    │ ❱ 445 │   │   │   raise reraise(type(error), error, _stacktrace)          │                        
                    │   446 │   │                                                               │                        
                    │   447 │   │   total = self.total                                          │                        
                    │   448 │   │   if total is not None:                                       │                        
                    │                                                                           │                        
                    │ /opt/homebrew/lib/python3.11/site-packages/urllib3/util/util.py:39 in     │                        
                    │ reraise                                                                   │                        
                    │                                                                           │                        
                    │   36 │   try:                                                             │                        
                    │   37 │   │   if value.__traceback__ is not tb:                            │                        
                    │   38 │   │   │   raise value.with_traceback(tb)                           │                        
                    │ ❱ 39 │   │   raise value                                                  │                        
                    │   40 │   finally:                                                         │                        
                    │   41 │   │   value = None  # type: ignore[assignment]                     │                        
                    │   42 │   │   tb = None                                                    │                        
                    │                                                                           │                        
                    │ /opt/homebrew/lib/python3.11/site-packages/urllib3/connectionpool.py:793  │                        
                    │ in urlopen                                                                │                        
                    │                                                                           │                        
                    │    790 │   │   │   response_conn = conn if not release_conn else None     │                        
                    │    791 │   │   │                                                          │                        
                    │    792 │   │   │   # Make the request on the HTTPConnection object        │                        
                    │ ❱  793 │   │   │   response = self._make_request(                         │                        
                    │    794 │   │   │   │   conn,                                              │                        
                    │    795 │   │   │   │   method,                                            │                        
                    │    796 │   │   │   │   url,                                               │                        
                    │                                                                           │                        
                    │ /opt/homebrew/lib/python3.11/site-packages/urllib3/connectionpool.py:491  │                        
                    │ in _make_request                                                          │                        
                    │                                                                           │                        
                    │    488 │   │   │   │   new_e, (OSError, NewConnectionError, TimeoutError, │                        
                    │    489 │   │   │   ) and (conn and conn.proxy and not conn.has_connected_ │                        
                    │    490 │   │   │   │   new_e = _wrap_proxy_error(new_e, conn.proxy.scheme │                        
                    │ ❱  491 │   │   │   raise new_e                                            │                        
                    │    492 │   │                                                              │                        
                    │    493 │   │   # conn.request() calls http.client.*.request, not the meth │                        
                    │    494 │   │   # urllib3.request. It also calls makefile (recv) on the so │                        
                    │                                                                           │                        
                    │ /opt/homebrew/lib/python3.11/site-packages/urllib3/connectionpool.py:467  │                        
                    │ in _make_request                                                          │                        
                    │                                                                           │                        
                    │    464 │   │   try:                                                       │                        
                    │    465 │   │   │   # Trigger any extra validation we need to do.          │                        
                    │    466 │   │   │   try:                                                   │                        
                    │ ❱  467 │   │   │   │   self._validate_conn(conn)                          │                        
                    │    468 │   │   │   except (SocketTimeout, BaseSSLError) as e:             │                        
                    │    469 │   │   │   │   self._raise_timeout(err=e, url=url, timeout_value= │                        
                    │    470 │   │   │   │   raise                                              │                        
                    │                                                                           │                        
                    │ /opt/homebrew/lib/python3.11/site-packages/urllib3/connectionpool.py:1099 │                        
                    │ in _validate_conn                                                         │                        
                    │                                                                           │                        
                    │   1096 │   │                                                              │                        
                    │   1097 │   │   # Force connect early to allow us to validate the connecti │                        
                    │   1098 │   │   if conn.is_closed:                                         │                        
                    │ ❱ 1099 │   │   │   conn.connect()                                         │                        
                    │   1100 │   │                                                              │                        
                    │   1101 │   │   # TODO revise this, see https://github.com/urllib3/urllib3 │                        
                    │   1102 │   │   if not conn.is_verified and not conn.proxy_is_verified:    │                        
                    │                                                                           │                        
                    │ /opt/homebrew/lib/python3.11/site-packages/urllib3/connection.py:616 in   │                        
                    │ connect                                                                   │                        
                    │                                                                           │                        
                    │   613 │                                                                   │                        
                    │   614 │   def connect(self) -> None:                                      │                        
                    │   615 │   │   sock: socket.socket | ssl.SSLSocket                         │                        
                    │ ❱ 616 │   │   self.sock = sock = self._new_conn()                         │                        
                    │   617 │   │   server_hostname: str = self.host                            │                        
                    │   618 │   │   tls_in_tls = False                                          │                        
                    │   619                                                                     │                        
                    │                                                                           │                        
                    │ /opt/homebrew/lib/python3.11/site-packages/urllib3/connection.py:205 in   │                        
                    │ _new_conn                                                                 │                        
                    │                                                                           │                        
                    │   202 │   │   │   │   socket_options=self.socket_options,                 │                        
                    │   203 │   │   │   )                                                       │                        
                    │   204 │   │   except socket.gaierror as e:                                │                        
                    │ ❱ 205 │   │   │   raise NameResolutionError(self.host, self, e) from e    │                        
                    │   206 │   │   except SocketTimeout as e:                                  │                        
                    │   207 │   │   │   raise ConnectTimeoutError(                              │                        
                    │   208 │   │   │   │   self,                                               │                        
                    ╰───────────────────────────────────────────────────────────────────────────╯                        
                    NameResolutionError: <urllib3.connection.HTTPSConnection object at                                   
                    0x2a598b090>: Failed to resolve 'music.youtube.com' ([Errno 8] nodename nor                          
                    servname provided, or not known)                                                                     
                                                                                                                         
                    The above exception was the direct cause of the following exception:                                 
                                                                                                                         
                    ╭──────────────────── Traceback (most recent call last) ────────────────────╮                        
                    │ /opt/homebrew/lib/python3.11/site-packages/yt_dlp/extractor/common.py:850 │                        
                    │ in _request_webpage                                                       │                        
                    │                                                                           │                        
                    │    847 │   │   │   headers.setdefault('X-Forwarded-For', self._x_forwarde │                        
                    │    848 │   │                                                              │                        
                    │    849 │   │   try:                                                       │                        
                    │ ❱  850 │   │   │   return self._downloader.urlopen(self._create_request(u │                        
                    │        headers, query))                                                   │                        
                    │    851 │   │   except network_exceptions as err:                          │                        
                    │    852 │   │   │   if isinstance(err, HTTPError):                         │                        
                    │    853 │   │   │   │   if self.__can_accept_status_code(err, expected_sta │                        
                    │                                                                           │                        
                    │ /opt/homebrew/lib/python3.11/site-packages/yt_dlp/YoutubeDL.py:4082 in    │                        
                    │ urlopen                                                                   │                        
                    │                                                                           │                        
                    │   4079 │   │   clean_headers(req.headers)                                 │                        
                    │   4080 │   │                                                              │                        
                    │   4081 │   │   try:                                                       │                        
                    │ ❱ 4082 │   │   │   return self._request_director.send(req)                │                        
                    │   4083 │   │   except NoSupportingHandlers as e:                          │                        
                    │   4084 │   │   │   for ue in e.unsupported_errors:                        │                        
                    │   4085 │   │   │   │   # FIXME: This depends on the order of errors.      │                        
                    │                                                                           │                        
                    │ /opt/homebrew/lib/python3.11/site-packages/yt_dlp/networking/common.py:11 │                        
                    │ 4 in send                                                                 │                        
                    │                                                                           │                        
                    │   111 │   │   │                                                           │                        
                    │   112 │   │   │   self._print_verbose(f'Sending request via "{handler.RH_ │                        
                    │   113 │   │   │   try:                                                    │                        
                    │ ❱ 114 │   │   │   │   response = handler.send(request)                    │                        
                    │   115 │   │   │   except RequestError:                                    │                        
                    │   116 │   │   │   │   raise                                               │                        
                    │   117 │   │   │   except Exception as e:                                  │                        
                    │                                                                           │                        
                    │ /opt/homebrew/lib/python3.11/site-packages/yt_dlp/networking/_helper.py:2 │                        
                    │ 04 in wrapper                                                             │                        
                    │                                                                           │                        
                    │   201 │   @functools.wraps(func)                                          │                        
                    │   202 │   def wrapper(self, *args, **kwargs):                             │                        
                    │   203 │   │   try:                                                        │                        
                    │ ❱ 204 │   │   │   return func(self, *args, **kwargs)                      │                        
                    │   205 │   │   except UnsupportedRequest as e:                             │                        
                    │   206 │   │   │   if e.handler is None:                                   │                        
                    │   207 │   │   │   │   e.handler = self                                    │                        
                    │                                                                           │                        
                    │ /opt/homebrew/lib/python3.11/site-packages/yt_dlp/networking/common.py:32 │                        
                    │ 5 in send                                                                 │                        
                    │                                                                           │                        
                    │   322 │   def send(self, request: Request) -> Response:                   │                        
                    │   323 │   │   if not isinstance(request, Request):                        │                        
                    │   324 │   │   │   raise TypeError('Expected an instance of Request')      │                        
                    │ ❱ 325 │   │   return self._send(request)                                  │                        
                    │   326 │                                                                   │                        
                    │   327 │   @abc.abstractmethod                                             │                        
                    │   328 │   def _send(self, request: Request):                              │                        
                    │                                                                           │                        
                    │ /opt/homebrew/lib/python3.11/site-packages/yt_dlp/networking/_requests.py │                        
                    │ :334 in _send                                                             │                        
                    │                                                                           │                        
                    │   331 │   │                                                               │                        
                    │   332 │   │   except urllib3.exceptions.HTTPError as e:                   │                        
                    │   333 │   │   │   # Catch any urllib3 exceptions that may leak through    │                        
                    │ ❱ 334 │   │   │   raise TransportError(cause=e) from e                    │                        
                    │   335 │   │                                                               │                        
                    │   336 │   │   except requests.exceptions.RequestException as e:           │                        
                    │   337 │   │   │   # Miscellaneous Requests exceptions. May not necessary  │                        
                    │       e.g. InvalidURL                                                     │                        
                    ╰───────────────────────────────────────────────────────────────────────────╯                        
                    TransportError: <urllib3.connection.HTTPSConnection object at 0x2a598b090>:                          
                    Failed to resolve 'music.youtube.com' ([Errno 8] nodename nor servname                               
                    provided, or not known)                                                                              
                                                                                                                         
                    During handling of the above exception, another exception occurred:                                  
                                                                                                                         
                    ╭──────────────────── Traceback (most recent call last) ────────────────────╮                        
                    │ /opt/homebrew/lib/python3.11/site-packages/yt_dlp/YoutubeDL.py:1587 in    │                        
                    │ wrapper                                                                   │                        
                    │                                                                           │                        
                    │   1584 │   │   def wrapper(self, *args, **kwargs):                        │                        
                    │   1585 │   │   │   while True:                                            │                        
                    │   1586 │   │   │   │   try:                                               │                        
                    │ ❱ 1587 │   │   │   │   │   return func(self, *args, **kwargs)             │                        
                    │   1588 │   │   │   │   except (DownloadCancelled, LazyList.IndexError, Pa │                        
                    │   1589 │   │   │   │   │   raise                                          │                        
                    │   1590 │   │   │   │   except ReExtractInfo as e:                         │                        
                    │                                                                           │                        
                    │ /opt/homebrew/lib/python3.11/site-packages/yt_dlp/YoutubeDL.py:1722 in    │                        
                    │ __extract_info                                                            │                        
                    │                                                                           │                        
                    │   1719 │   │   self._apply_header_cookies(url)                            │                        
                    │   1720 │   │                                                              │                        
                    │   1721 │   │   try:                                                       │                        
                    │ ❱ 1722 │   │   │   ie_result = ie.extract(url)                            │                        
                    │   1723 │   │   except UserNotLive as e:                                   │                        
                    │   1724 │   │   │   if process:                                            │                        
                    │   1725 │   │   │   │   if self.params.get('wait_for_video'):              │                        
                    │                                                                           │                        
                    │ /opt/homebrew/lib/python3.11/site-packages/yt_dlp/extractor/common.py:718 │                        
                    │ in extract                                                                │                        
                    │                                                                           │                        
                    │    715 │   │   │   │   │   self.initialize()                              │                        
                    │    716 │   │   │   │   │   self.to_screen('Extracting URL: %s' % (        │                        
                    │    717 │   │   │   │   │   │   url if self.get_param('verbose') else trun │                        
                    │        20)))                                                              │                        
                    │ ❱  718 │   │   │   │   │   ie_result = self._real_extract(url)            │                        
                    │    719 │   │   │   │   │   if ie_result is None:                          │                        
                    │    720 │   │   │   │   │   │   return None                                │                        
                    │    721 │   │   │   │   │   if self._x_forwarded_for_ip:                   │                        
                    │                                                                           │                        
                    │ /opt/homebrew/lib/python3.11/site-packages/yt_dlp/extractor/youtube.py:40 │                        
                    │ 72 in _real_extract                                                       │                        
                    │                                                                           │                        
                    │   4069 │   │   base_url = self.http_scheme() + '//www.youtube.com/'       │                        
                    │   4070 │   │   webpage_url = base_url + 'watch?v=' + video_id             │                        
                    │   4071 │   │                                                              │                        
                    │ ❱ 4072 │   │   webpage, master_ytcfg, player_responses, player_url =      │                        
                    │        self._download_player_responses(url, smuggled_data, video_id, webp │                        
                    │   4073 │   │                                                              │                        
                    │   4074 │   │   playability_statuses = traverse_obj(                       │                        
                    │   4075 │   │   │   player_responses, (..., 'playabilityStatus'), expected │                        
                    │                                                                           │                        
                    │ /opt/homebrew/lib/python3.11/site-packages/yt_dlp/extractor/youtube.py:40 │                        
                    │ 36 in _download_player_responses                                          │                        
                    │                                                                           │                        
                    │   4033 │   │                                                              │                        
                    │   4034 │   │   master_ytcfg = self.extract_ytcfg(video_id, webpage) or    │                        
                    │        self._get_default_ytcfg()                                          │                        
                    │   4035 │   │                                                              │                        
                    │ ❱ 4036 │   │   player_responses, player_url = self._extract_player_respon │                        
                    │   4037 │   │   │   self._get_requested_clients(url, smuggled_data),       │                        
                    │   4038 │   │   │   video_id, webpage, master_ytcfg, smuggled_data)        │                        
                    │   4039                                                                    │                        
                    │                                                                           │                        
                    │ /opt/homebrew/lib/python3.11/site-packages/yt_dlp/extractor/youtube.py:37 │                        
                    │ 27 in _extract_player_responses                                           │                        
                    │                                                                           │                        
                    │   3724 │   │                                                              │                        
                    │   3725 │   │   if last_error:                                             │                        
                    │   3726 │   │   │   if not len(prs):                                       │                        
                    │ ❱ 3727 │   │   │   │   raise last_error                                   │                        
                    │   3728 │   │   │   self.report_warning(last_error)                        │                        
                    │   3729 │   │   return prs, player_url                                     │                        
                    │   3730                                                                    │                        
                    │                                                                           │                        
                    │ /opt/homebrew/lib/python3.11/site-packages/yt_dlp/extractor/youtube.py:36 │                        
                    │ 92 in _extract_player_responses                                           │                        
                    │                                                                           │                        
                    │   3689 │   │   │   │   tried_iframe_fallback = True                       │                        
                    │   3690 │   │   │                                                          │                        
                    │   3691 │   │   │   try:                                                   │                        
                    │ ❱ 3692 │   │   │   │   pr = initial_pr if client == 'web' and initial_pr  │                        
                    │        self._extract_player_response(                                     │                        
                    │   3693 │   │   │   │   │   client, video_id, player_ytcfg or master_ytcfg │                        
                    │        player_url if require_js_player else None, initial_pr, smuggled_da │                        
                    │   3694 │   │   │   except ExtractorError as e:                            │                        
                    │   3695 │   │   │   │   if last_error:                                     │                        
                    │                                                                           │                        
                    │ /opt/homebrew/lib/python3.11/site-packages/yt_dlp/extractor/youtube.py:36 │                        
                    │ 12 in _extract_player_response                                            │                        
                    │                                                                           │                        
                    │   3609 │   │   │   yt_query['params'] = pp_arg                            │                        
                    │   3610 │   │                                                              │                        
                    │   3611 │   │   yt_query.update(self._generate_player_context(sts))        │                        
                    │ ❱ 3612 │   │   return self._extract_response(                             │                        
                    │   3613 │   │   │   item_id=video_id, ep='player', query=yt_query,         │                        
                    │   3614 │   │   │   ytcfg=player_ytcfg, headers=headers, fatal=True,       │                        
                    │   3615 │   │   │   default_client=client,                                 │                        
                    │                                                                           │                        
                    │ /opt/homebrew/lib/python3.11/site-packages/yt_dlp/extractor/youtube.py:96 │                        
                    │ 6 in _extract_response                                                    │                        
                    │                                                                           │                        
                    │    963 │   │   │   │   │   return self._error_or_warning(e, fatal=fatal)  │                        
                    │    964 │   │   │   │   elif not isinstance(e.cause, HTTPError):           │                        
                    │    965 │   │   │   │   │   main_rm.error = e                              │                        
                    │ ❱  966 │   │   │   │   │   next(main_retries)                             │                        
                    │    967 │   │   │   │   │   continue                                       │                        
                    │    968 │   │   │   │                                                      │                        
                    │    969 │   │   │   │   first_bytes = e.cause.response.read(512)           │                        
                    │                                                                           │                        
                    │ /opt/homebrew/lib/python3.11/site-packages/yt_dlp/utils/_utils.py:5046 in │                        
                    │ __iter__                                                                  │                        
                    │                                                                           │                        
                    │   5043 │   │   │   self.attempt += 1                                      │                        
                    │   5044 │   │   │   yield self                                             │                        
                    │   5045 │   │   │   if self.error:                                         │                        
                    │ ❱ 5046 │   │   │   │   self.error_callback(self.error, self.attempt, self │                        
                    │   5047 │                                                                  │                        
                    │   5048 │   @staticmethod                                                  │                        
                    │   5049 │   def report_retry(e, count, retries, *, sleep_func, info, warn, │                        
                    │        suffix=None):                                                      │                        
                    │                                                                           │                        
                    │ /opt/homebrew/lib/python3.11/site-packages/yt_dlp/extractor/common.py:376 │                        
                    │ 7 in _error_or_warning                                                    │                        
                    │                                                                           │                        
                    │   3764 │   │   return True                                                │                        
                    │   3765 │                                                                  │                        
                    │   3766 │   def _error_or_warning(self, err, _count=None, _retries=0, *, f │                        
                    │ ❱ 3767 │   │   RetryManager.report_retry(                                 │                        
                    │   3768 │   │   │   err, _count or int(fatal), _retries,                   │                        
                    │   3769 │   │   │   info=self.to_screen, warn=self.report_warning, error=N │                        
                    │        self.report_warning,                                               │                        
                    │   3770 │   │   │   sleep_func=self.get_param('retry_sleep_functions', {}) │                        
                    │                                                                           │                        
                    │ /opt/homebrew/lib/python3.11/site-packages/yt_dlp/utils/_utils.py:5054 in │                        
                    │ report_retry                                                              │                        
                    │                                                                           │                        
                    │   5051 │   │   if count > retries:                                        │                        
                    │   5052 │   │   │   if error:                                              │                        
                    │   5053 │   │   │   │   return error(f'{e}. Giving up after {count - 1} re │                        
                    │        else error(str(e))                                                 │                        
                    │ ❱ 5054 │   │   │   raise e                                                │                        
                    │   5055 │   │                                                              │                        
                    │   5056 │   │   if not count:                                              │                        
                    │   5057 │   │   │   return warn(e)                                         │                        
                    │                                                                           │                        
                    │ /opt/homebrew/lib/python3.11/site-packages/yt_dlp/extractor/youtube.py:95 │                        
                    │ 5 in _extract_response                                                    │                        
                    │                                                                           │                        
                    │    952 │   │   # and its result MUST be checked if the manager is non fat │                        
                    │    953 │   │   while True:                                                │                        
                    │    954 │   │   │   try:                                                   │                        
                    │ ❱  955 │   │   │   │   response = self._call_api(                         │                        
                    │    956 │   │   │   │   │   ep=ep, fatal=True, headers=headers,            │                        
                    │    957 │   │   │   │   │   video_id=item_id, query=query, note=note,      │                        
                    │    958 │   │   │   │   │   context=self._extract_context(ytcfg, default_c │                        
                    │                                                                           │                        
                    │ /opt/homebrew/lib/python3.11/site-packages/yt_dlp/extractor/youtube.py:60 │                        
                    │ 3 in _call_api                                                            │                        
                    │                                                                           │                        
                    │    600 │   │   │   real_headers.update(headers)                           │                        
                    │    601 │   │   api_key = (self._configuration_arg('innertube_key', [''],  │                        
                    │        ie_key=YoutubeIE.ie_key(), casesense=True)[0]                      │                        
                    │    602 │   │   │   │      or api_key or self._extract_api_key(default_cli │                        
                    │ ❱  603 │   │   return self._download_json(                                │                        
                    │    604 │   │   │   f'https://{self._select_api_hostname(api_hostname,     │                        
                    │        default_client)}/youtubei/v1/{ep}',                                │                        
                    │    605 │   │   │   video_id=video_id, fatal=fatal, note=note, errnote=err │                        
                    │    606 │   │   │   data=json.dumps(data).encode('utf8'), headers=real_hea │                        
                    │                                                                           │                        
                    │ /opt/homebrew/lib/python3.11/site-packages/yt_dlp/extractor/common.py:107 │                        
                    │ 2 in download_content                                                     │                        
                    │                                                                           │                        
                    │   1069 │   │   │   if parser is None:                                     │                        
                    │   1070 │   │   │   │   kwargs.pop('transform_source')                     │                        
                    │   1071 │   │   │   # The method is fetched by name so subclasses can over │                        
                    │        _download_..._handle                                               │                        
                    │ ❱ 1072 │   │   │   res = getattr(self, download_handle.__name__)(url_or_r │                        
                    │        **kwargs)                                                          │                        
                    │   1073 │   │   │   return res if res is False else res[0]                 │                        
                    │   1074 │   │                                                              │                        
                    │   1075 │   │   def impersonate(func, name, return_value):                 │                        
                    │                                                                           │                        
                    │ /opt/homebrew/lib/python3.11/site-packages/yt_dlp/extractor/common.py:103 │                        
                    │ 6 in download_handle                                                      │                        
                    │                                                                           │                        
                    │   1033 │   │                                                              │                        
                    │   1034 │   │   def download_handle(self, url_or_request, video_id, note=n │                        
                    │        transform_source=None,                                             │                        
                    │   1035 │   │   │   │   │   │   │   fatal=True, encoding=None, data=None,  │                        
                    │        expected_status=None):                                             │                        
                    │ ❱ 1036 │   │   │   res = self._download_webpage_handle(                   │                        
                    │   1037 │   │   │   │   url_or_request, video_id, note=note, errnote=errno │                        
                    │        encoding=encoding,                                                 │                        
                    │   1038 │   │   │   │   data=data, headers=headers, query=query,           │                        
                    │        expected_status=expected_status)                                   │                        
                    │   1039 │   │   │   if res is False:                                       │                        
                    │                                                                           │                        
                    │ /opt/homebrew/lib/python3.11/site-packages/yt_dlp/extractor/common.py:906 │                        
                    │ in _download_webpage_handle                                               │                        
                    │                                                                           │                        
                    │    903 │   │   if isinstance(url_or_request, str):                        │                        
                    │    904 │   │   │   url_or_request = url_or_request.partition('#')[0]      │                        
                    │    905 │   │                                                              │                        
                    │ ❱  906 │   │   urlh = self._request_webpage(url_or_request, video_id, not │                        
                    │        data=data, headers=headers, query=query, expected_status=expected_ │                        
                    │    907 │   │   if urlh is False:                                          │                        
                    │    908 │   │   │   assert not fatal                                       │                        
                    │    909 │   │   │   return False                                           │                        
                    │                                                                           │                        
                    │ /opt/homebrew/lib/python3.11/site-packages/yt_dlp/extractor/common.py:863 │                        
                    │ in _request_webpage                                                       │                        
                    │                                                                           │                        
                    │    860 │   │   │                                                          │                        
                    │    861 │   │   │   errmsg = f'{errnote}: {error_to_compat_str(err)}'      │                        
                    │    862 │   │   │   if fatal:                                              │                        
                    │ ❱  863 │   │   │   │   raise ExtractorError(errmsg, cause=err)            │                        
                    │    864 │   │   │   else:                                                  │                        
                    │    865 │   │   │   │   self.report_warning(errmsg)                        │                        
                    │    866 │   │   │   │   return False                                       │                        
                    ╰───────────────────────────────────────────────────────────────────────────╯                        
                    ExtractorError: [youtube] OPKTk5vUtDY: Unable to download API page:                                  
                    <urllib3.connection.HTTPSConnection object at 0x2a598b090>: Failed to resolve                        
                    'music.youtube.com' ([Errno 8] nodename nor servname provided, or not known)                         
                    (caused by TransportError("<urllib3.connection.HTTPSConnection object at                             
                    0x2a598b090>: Failed to resolve 'music.youtube.com' ([Errno 8] nodename nor                          
                    servname provided, or not known)"))                                                                  
                                                                                                                         
                    During handling of the above exception, another exception occurred:                                  
                                                                                                                         
                    ╭──────────────────── Traceback (most recent call last) ────────────────────╮                        
                    │ /opt/homebrew/lib/python3.11/site-packages/spotdl/providers/audio/base.py │                        
                    │ :369 in get_download_metadata                                             │                        
                    │                                                                           │                        
                    │   366 │   │   """                                                         │                        
                    │   367 │   │                                                               │                        
                    │   368 │   │   try:                                                        │                        
                    │ ❱ 369 │   │   │   data = self.audio_handler.extract_info(url, download=do │                        
                    │   370 │   │   │                                                           │                        
                    │   371 │   │   │   if data:                                                │                        
                    │   372 │   │   │   │   return data                                         │                        
                    │                                                                           │                        
                    │ /opt/homebrew/lib/python3.11/site-packages/yt_dlp/YoutubeDL.py:1576 in    │                        
                    │ extract_info                                                              │                        
                    │                                                                           │                        
                    │   1573 │   │   │   │   if self.params.get('break_on_existing', False):    │                        
                    │   1574 │   │   │   │   │   raise ExistingVideoReached()                   │                        
                    │   1575 │   │   │   │   break                                              │                        
                    │ ❱ 1576 │   │   │   return self.__extract_info(url, self.get_info_extracto │                        
                    │        extra_info, process)                                               │                        
                    │   1577 │   │   else:                                                      │                        
                    │   1578 │   │   │   extractors_restricted = self.params.get('allowed_extra │                        
                    │        ['default'])                                                       │                        
                    │   1579 │   │   │   self.report_error(f'No suitable extractor{format_field │                        
                    │        (%s)")} found for URL {url}',                                      │                        
                    │                                                                           │                        
                    │ /opt/homebrew/lib/python3.11/site-packages/yt_dlp/YoutubeDL.py:1605 in    │                        
                    │ wrapper                                                                   │                        
                    │                                                                           │                        
                    │   1602 │   │   │   │   │   msg += '\nYou might want to use a VPN or a pro │                        
                    │        --proxy) to workaround.'                                           │                        
                    │   1603 │   │   │   │   │   self.report_error(msg)                         │                        
                    │   1604 │   │   │   │   except ExtractorError as e:  # An error we somewha │                        
                    │ ❱ 1605 │   │   │   │   │   self.report_error(str(e), e.format_traceback() │                        
                    │   1606 │   │   │   │   except Exception as e:                             │                        
                    │   1607 │   │   │   │   │   if self.params.get('ignoreerrors'):            │                        
                    │   1608 │   │   │   │   │   │   self.report_error(str(e),                  │                        
                    │        tb=encode_compat_str(traceback.format_exc()))                      │                        
                    │                                                                           │                        
                    │ /opt/homebrew/lib/python3.11/site-packages/yt_dlp/YoutubeDL.py:1054 in    │                        
                    │ report_error                                                              │                        
                    │                                                                           │                        
                    │   1051 │   │   Do the same as trouble, but prefixes the message with 'ERR │                        
                    │   1052 │   │   in red if stderr is a tty file.                            │                        
                    │   1053 │   │   '''                                                        │                        
                    │ ❱ 1054 │   │   self.trouble(f'{self._format_err("ERROR:", self.Styles.ERR │                        
                    │        *args, **kwargs)                                                   │                        
                    │   1055 │                                                                  │                        
                    │   1056 │   def write_debug(self, message, only_once=False):               │                        
                    │   1057 │   │   '''Log debug message or Print message to stderr'''         │                        
                    │                                                                           │                        
                    │ /opt/homebrew/lib/python3.11/site-packages/yt_dlp/YoutubeDL.py:973 in     │                        
                    │ trouble                                                                   │                        
                    │                                                                           │                        
                    │    970 │   │   @param is_error    Whether to raise error according to ign │                        
                    │    971 │   │   """                                                        │                        
                    │    972 │   │   if message is not None:                                    │                        
                    │ ❱  973 │   │   │   self.to_stderr(message)                                │                        
                    │    974 │   │   if self.params.get('verbose'):                             │                        
                    │    975 │   │   │   if tb is None:                                         │                        
                    │    976 │   │   │   │   if sys.exc_info()[0]:  # if .trouble has been call │                        
                    │        block                                                              │                        
                    │                                                                           │                        
                    │ /opt/homebrew/lib/python3.11/site-packages/yt_dlp/YoutubeDL.py:915 in     │                        
                    │ to_stderr                                                                 │                        
                    │                                                                           │                        
                    │    912 │   │   """Print message to stderr"""                              │                        
                    │    913 │   │   assert isinstance(message, str)                            │                        
                    │    914 │   │   if self.params.get('logger'):                              │                        
                    │ ❱  915 │   │   │   self.params['logger'].error(message)                   │                        
                    │    916 │   │   else:                                                      │                        
                    │    917 │   │   │   self._write_string(f'{self._bidi_workaround(message)}\ │                        
                    │        self._out_files.error, only_once=only_once)                        │                        
                    │    918                                                                    │                        
                    │                                                                           │                        
                    │ /opt/homebrew/lib/python3.11/site-packages/spotdl/providers/audio/base.py │                        
                    │ :57 in error                                                              │                        
                    │                                                                           │                        
                    │    54 │   │   YTDL uses this to print errors.                             │                        
                    │    55 │   │   """                                                         │                        
                    │    56 │   │                                                               │                        
                    │ ❱  57 │   │   raise AudioProviderError(msg)                               │                        
                    │    58                                                                     │                        
                    │    59                                                                     │                        
                    │    60 ISRC_REGEX = re.compile(r"^[A-Z]{2}-?\w{3}-?\d{2}-?\d{5}$")         │                        
                    ╰───────────────────────────────────────────────────────────────────────────╯                        
                    AudioProviderError: [0;31mERROR:[0m [youtube] OPKTk5vUtDY: Unable to download                        
                    API page: <urllib3.connection.HTTPSConnection object at 0x2a598b090>: Failed                         
                    to resolve 'music.youtube.com' ([Errno 8] nodename nor servname provided, or                         
                    not known) (caused by TransportError("<urllib3.connection.HTTPSConnection                            
                    object at 0x2a598b090>: Failed to resolve 'music.youtube.com' ([Errno 8]                             
                    nodename nor servname provided, or not known)"))                                                     
                                                                                                                         
                    The above exception was the direct cause of the following exception:                                 
                                                                                                                         
                    ╭──────────────────── Traceback (most recent call last) ────────────────────╮                        
                    │ /opt/homebrew/lib/python3.11/site-packages/spotdl/download/downloader.py: │                        
                    │ 646 in search_and_download                                                │                        
                    │                                                                           │                        
                    │   643 │   │   │   │   display_progress_tracker.yt_dlp_progress_hook       │                        
                    │   644 │   │   │   )                                                       │                        
                    │   645 │   │   │                                                           │                        
                    │ ❱ 646 │   │   │   download_info = audio_downloader.get_download_metadata( │                        
                    │   647 │   │   │   │   download_url, download=True                         │                        
                    │   648 │   │   │   )                                                       │                        
                    │   649                                                                     │                        
                    │                                                                           │                        
                    │ /opt/homebrew/lib/python3.11/site-packages/spotdl/providers/audio/base.py │                        
                    │ :375 in get_download_metadata                                             │                        
                    │                                                                           │                        
                    │   372 │   │   │   │   return data                                         │                        
                    │   373 │   │   except Exception as exception:                              │                        
                    │   374 │   │   │   logger.debug(exception)                                 │                        
                    │ ❱ 375 │   │   │   raise AudioProviderError(f"YT-DLP download error - {url │                        
                    │   376 │   │                                                               │                        
                    │   377 │   │   raise AudioProviderError(f"No metadata found for the provid │                        
                    │   378                                                                     │                        
                    ╰───────────────────────────────────────────────────────────────────────────╯                        
                    AudioProviderError: YT-DLP download error -                                                          
                    https://music.youtube.com/watch?v=OPKTk5vUtDY         

@Tomiwa-Ot
Copy link

@xnetcat here you go

tomiwa@grephq ~/D/h/Prod&Serv&Cust> spotdl download "https://open.spotify.com/track/4VQ46sRJtb6osiD3xfYGHx?si=c9f290df981645cb" --log-level DEBUG
[16:38:40] DEBUG    MainThread - Downloader settings:          downloader.py:130
                    {'audio_providers': ['youtube-music'],                      
                    'lyrics_providers': ['genius', 'azlyrics',                  
                    'musixmatch'], 'playlist_numbering':                        
                    False, 'scan_for_songs': False, 'm3u':                      
                    None, 'output': '{artists} -                                
                    {title}.{output-ext}', 'overwrite':                         
                    'skip', 'search_query': None, 'ffmpeg':                     
                    'ffmpeg', 'bitrate': None, 'ffmpeg_args':                   
                    None, 'format': 'mp3', 'save_file': None,                   
                    'filter_results': True, 'threads': 4,                       
                    'cookie_file': None, 'restrict': None,                      
                    'print_errors': False, 'sponsor_block':                     
                    False, 'preload': False, 'archive': None,                   
                    'load_config': True, 'log_level': 'DEBUG',                  
                    'simple_tui': False, 'fetch_albums':                        
                    False, 'id3_separator': '/', 'ytm_data':                    
                    False, 'add_unavailable': False,                            
                    'generate_lrc': False,                                      
                    'force_update_metadata': False,                             
                    'only_verified_results': False,                             
                    'sync_without_deleting': False,                             
                    'max_filename_length': None,                                
                    'yt_dlp_args': None, 'detect_formats':                      
                    None, 'save_errors': None,                                  
                    'ignore_albums': None, 'proxy': None,                       
                    'skip_explicit': False, 'log_format':                       
                    None, 'redownload': False}                                  
[16:38:40] DEBUG    MainThread - FFmpeg path: ffmpeg           downloader.py:148
[16:38:40] DEBUG    MainThread - Found 0 known songs           downloader.py:183
[16:38:42] DEBUG    MainThread - Archive: 0 urls               downloader.py:230
[16:38:42] DEBUG    MainThread - Downloader initialized        downloader.py:232
[16:38:42] INFO     MainThread - Processing query:                 search.py:132
                    https://open.spotify.com/track/4VQ46sRJtb6osiD              
                    3xfYGHx?si=c9f290df981645cb                                 
[16:38:45] DEBUG    MainThread - Found 1 songs in 0 lists          search.py:322
[16:38:45] DEBUG    MainThread - Downloading 1 songs           downloader.py:279
[16:38:53] DEBUG    asyncio_0 - Found lyrics for Kodak Black - downloader.py:399
                    Could of Been Different on Genius                           
[16:38:53] DEBUG    asyncio_0 - [4VQ46sRJtb6osiD3xfYGHx] Searching   base.py:167
                    for kodak black - could of been different                   
[16:38:56] DEBUG    asyncio_0 - [4VQ46sRJtb6osiD3xfYGHx] Found 1     base.py:180
                    results for ISRC USAT21813004                               
[16:38:56] DEBUG    asyncio_0 - [4VQ46sRJtb6osiD3xfYGHx] Filtered to base.py:192
                    1 ISRC results                                              
[16:38:56] DEBUG    asyncio_0 - [4VQ46sRJtb6osiD3xfYGHx] Best ISRC   base.py:201
                    result is                                                   
                    https://music.youtube.com/watch?v=ad30z1t_t30               
                    with score 100.0                                            
[16:38:57] DEBUG    asyncio_0 - Downloading Kodak Black -      downloader.py:639
                    Could of Been Different using                               
                    https://music.youtube.com/watch?v=ad30z1t_                  
                    t30                                                         
[16:39:42] DEBUG    asyncio_0 - ERROR: [youtube] ad30z1t_t30: Unable base.py:374
                    to download API page: <urlopen error Tunnel                 
                    connection failed: 407 Proxy Authentication                 
                    Required> (caused by ProxyError('<urlopen error             
                    Tunnel connection failed: 407 Proxy                         
                    Authentication Required>')); please report this             
                    issue on                                                    
                    https://github.com/yt-dlp/yt-dlp/issues?q= ,                
                    filling out the appropriate issue template.                 
                    Confirm you are on the latest version using                 
                    yt-dlp -U                                                   

[16:39:43] ERROR    asyncio_0 - Traceback (most recent   progress_handler.py:358
                    call last):                                                 
                      File                                                      
                    "/usr/lib/python3.11/urllib/request.                        
                    py", line 1348, in do_open                                  
                        h.request(req.get_method(),                             
                    req.selector, req.data, headers,                            
                      File                                                      
                    "/usr/lib/python3.11/http/client.py"                        
                    , line 1282, in request                                     
                        self._send_request(method, url,                         
                    body, headers, encode_chunked)                              
                      File                                                      
                    "/usr/lib/python3.11/http/client.py"                        
                    , line 1328, in _send_request                               
                        self.endheaders(body,                                   
                    encode_chunked=encode_chunked)                              
                      File                                                      
                    "/usr/lib/python3.11/http/client.py"                        
                    , line 1277, in endheaders                                  
                        self._send_output(message_body,                         
                    encode_chunked=encode_chunked)                              
                      File                                                      
                    "/usr/lib/python3.11/http/client.py"                        
                    , line 1037, in _send_output                                
                        self.send(msg)                                          
                      File                                                      
                    "/usr/lib/python3.11/http/client.py"                        
                    , line 975, in send                                         
                        self.connect()                                          
                      File                                                      
                    "/usr/lib/python3.11/http/client.py"                        
                    , line 1447, in connect                                     
                        super().connect()                                       
                      File                                                      
                    "/usr/lib/python3.11/http/client.py"                        
                    , line 951, in connect                                      
                        self._tunnel()                                          
                      File                                                      
                    "/usr/lib/python3.11/http/client.py"                        
                    , line 924, in _tunnel                                      
                        raise OSError(f"Tunnel                                  
                    connection failed: {code}                                   
                    {message.strip()}")                                         
                    OSError: Tunnel connection failed:                          
                    407 Proxy Authentication Required                           
                                                                                
                    During handling of the above                                
                    exception, another exception                                
                    occurred:                                                   
                                                                                
                    Traceback (most recent call last):                          
                      File                                                      
                    "/usr/lib/python3/dist-packages/yt_d                        
                    lp/networking/_urllib.py", line 396,                        
                    in _send                                                    
                        res = opener.open(urllib_req,                           
                    timeout=float(request.extensions.get                        
                    ('timeout') or self.timeout))                               
                              ^^^^^^^^^^^^^^^^^^^^^^^^^^                        
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^                        
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^                                 
                      File                                                      
                    "/usr/lib/python3.11/urllib/request.                        
                    py", line 519, in open                                      
                        response = self._open(req, data)                        
                                   ^^^^^^^^^^^^^^^^^^^^^                        
                      File                                                      
                    "/usr/lib/python3.11/urllib/request.                        
                    py", line 536, in _open                                     
                        result =                                                
                    self._call_chain(self.handle_open,                          
                    protocol, protocol +                                        
                                 ^^^^^^^^^^^^^^^^^^^^^^^                        
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^                            
                      File                                                      
                    "/usr/lib/python3.11/urllib/request.                        
                    py", line 496, in _call_chain                               
                        result = func(*args)                                    
                                 ^^^^^^^^^^^                                    
                      File                                                      
                    "/usr/lib/python3/dist-packages/yt_d                        
                    lp/networking/_urllib.py", line 101,                        
                    in https_open                                               
                        return self.do_open(                                    
                               ^^^^^^^^^^^^^                                    
                      File                                                      
                    "/usr/lib/python3.11/urllib/request.                        
                    py", line 1351, in do_open                                  
                        raise URLError(err)                                     
                    urllib.error.URLError: <urlopen                             
                    error Tunnel connection failed: 407                         
                    Proxy Authentication Required>                              
                                                                                
                    The above exception was the direct                          
                    cause of the following exception:                           
                                                                                
                    Traceback (most recent call last):                          
                      File                                                      
                    "/usr/lib/python3/dist-packages/yt_d                        
                    lp/extractor/common.py", line 847,                          
                    in _request_webpage                                         
                        return                                                  
                    self._downloader.urlopen(self._creat                        
                    e_request(url_or_request, data,                             
                    headers, query))                                            
                               ^^^^^^^^^^^^^^^^^^^^^^^^^                        
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^                        
                    ^^^^^^^^^^^^^^^^^^^^^^^                                     
                      File                                                      
                    "/usr/lib/python3/dist-packages/yt_d                        
                    lp/YoutubeDL.py", line 4052, in                             
                    urlopen                                                     
                        return                                                  
                    self._request_director.send(req)                            
                               ^^^^^^^^^^^^^^^^^^^^^^^^^                        
                    ^^^^^^^                                                     
                      File                                                      
                    "/usr/lib/python3/dist-packages/yt_d                        
                    lp/networking/common.py", line 114,                         
                    in send                                                     
                        response = handler.send(request)                        
                                   ^^^^^^^^^^^^^^^^^^^^^                        
                      File                                                      
                    "/usr/lib/python3/dist-packages/yt_d                        
                    lp/networking/_helper.py", line 204,                        
                    in wrapper                                                  
                        return func(self, *args,                                
                    **kwargs)                                                   
                               ^^^^^^^^^^^^^^^^^^^^^^^^^                        
                    ^^                                                          
                      File                                                      
                    "/usr/lib/python3/dist-packages/yt_d                        
                    lp/networking/common.py", line 325,                         
                    in send                                                     
                        return self._send(request)                              
                               ^^^^^^^^^^^^^^^^^^^                              
                      File                                                      
                    "/usr/lib/python3/dist-packages/yt_d                        
                    lp/networking/_urllib.py", line 408,                        
                    in _send                                                    
                        raise ProxyError(cause=e) from e                        
                    yt_dlp.networking.exceptions.ProxyEr                        
                    ror: <urlopen error Tunnel                                  
                    connection failed: 407 Proxy                                
                    Authentication Required>                                    
                                                                                
                    During handling of the above                                
                    exception, another exception                                
                    occurred:                                                   
                                                                                
                    Traceback (most recent call last):                          
                      File                                                      
                    "/usr/lib/python3/dist-packages/yt_d                        
                    lp/YoutubeDL.py", line 1567, in                             
                    wrapper                                                     
                        return func(self, *args,                                
                    **kwargs)                                                   
                               ^^^^^^^^^^^^^^^^^^^^^^^^^                        
                    ^^                                                          
                      File                                                      
                    "/usr/lib/python3/dist-packages/yt_d                        
                    lp/YoutubeDL.py", line 1702, in                             
                    __extract_info                                              
                        ie_result = ie.extract(url)                             
                                    ^^^^^^^^^^^^^^^                             
                      File                                                      
                    "/usr/lib/python3/dist-packages/yt_d                        
                    lp/extractor/common.py", line 715,                          
                    in extract                                                  
                        ie_result =                                             
                    self._real_extract(url)                                     
                                    ^^^^^^^^^^^^^^^^^^^^                        
                    ^^^                                                         
                      File                                                      
                    "/usr/lib/python3/dist-packages/yt_d                        
                    lp/extractor/youtube.py", line 4073,                        
                    in _real_extract                                            
                        webpage, master_ytcfg,                                  
                    player_responses, player_url =                              
                    self._download_player_responses(url,                        
                    smuggled_data, video_id,                                    
                    webpage_url)                                                
                                                                                
                                          ^^^^^^^^^^^^^^                        
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^                        
                    ^^^^^^^^^^^^^^^^^^^^^^^^                                    
                      File                                                      
                    "/usr/lib/python3/dist-packages/yt_d                        
                    lp/extractor/youtube.py", line 4037,                        
                    in _download_player_responses                               
                        player_responses, player_url =                          
                    self._extract_player_responses(                             
                                                       ^                        
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^                              
                      File                                                      
                    "/usr/lib/python3/dist-packages/yt_d                        
                    lp/extractor/youtube.py", line 3728,                        
                    in _extract_player_responses                                
                        raise last_error                                        
                      File                                                      
                    "/usr/lib/python3/dist-packages/yt_d                        
                    lp/extractor/youtube.py", line 3693,                        
                    in _extract_player_responses                                
                        pr = initial_pr if client ==                            
                    'web' and initial_pr else                                   
                    self._extract_player_response(                              
                                                                                
                                           ^^^^^^^^^^^^^                        
                    ^^^^^^^^^^^^^^^^^                                           
                      File                                                      
                    "/usr/lib/python3/dist-packages/yt_d                        
                    lp/extractor/youtube.py", line 3613,                        
                    in _extract_player_response                                 
                        return self._extract_response(                          
                               ^^^^^^^^^^^^^^^^^^^^^^^                          
                      File                                                      
                    "/usr/lib/python3/dist-packages/yt_d                        
                    lp/extractor/youtube.py", line 966,                         
                    in _extract_response                                        
                        next(main_retries)                                      
                      File                                                      
                    "/usr/lib/python3/dist-packages/yt_d                        
                    lp/utils/_utils.py", line 5114, in                          
                    __iter__                                                    
                        self.error_callback(self.error,                         
                    self.attempt, self.retries)                                 
                      File                                                      
                    "/usr/lib/python3/dist-packages/yt_d                        
                    lp/extractor/common.py", line 3762,                         
                    in _error_or_warning                                        
                        RetryManager.report_retry(                              
                      File                                                      
                    "/usr/lib/python3/dist-packages/yt_d                        
                    lp/utils/_utils.py", line 5122, in                          
                    report_retry                                                
                        raise e                                                 
                      File                                                      
                    "/usr/lib/python3/dist-packages/yt_d                        
                    lp/extractor/youtube.py", line 955,                         
                    in _extract_response                                        
                        response = self._call_api(                              
                                   ^^^^^^^^^^^^^^^                              
                      File                                                      
                    "/usr/lib/python3/dist-packages/yt_d                        
                    lp/extractor/youtube.py", line 603,                         
                    in _call_api                                                
                        return self._download_json(                             
                               ^^^^^^^^^^^^^^^^^^^^                             
                      File                                                      
                    "/usr/lib/python3/dist-packages/yt_d                        
                    lp/extractor/common.py", line 1069,                         
                    in download_content                                         
                        res = getattr(self,                                     
                    download_handle.__name__)(url_or_req                        
                    uest, video_id, **kwargs)                                   
                              ^^^^^^^^^^^^^^^^^^^^^^^^^^                        
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^                        
                    ^^^^^^^^^^^^^                                               
                      File                                                      
                    "/usr/lib/python3/dist-packages/yt_d                        
                    lp/extractor/common.py", line 1033,                         
                    in download_handle                                          
                        res =                                                   
                    self._download_webpage_handle(                              
                              ^^^^^^^^^^^^^^^^^^^^^^^^^^                        
                    ^^^^                                                        
                      File                                                      
                    "/usr/lib/python3/dist-packages/yt_d                        
                    lp/extractor/common.py", line 903,                          
                    in _download_webpage_handle                                 
                        urlh =                                                  
                    self._request_webpage(url_or_request                        
                    , video_id, note, errnote, fatal,                           
                    data=data, headers=headers,                                 
                    query=query,                                                
                    expected_status=expected_status)                            
                               ^^^^^^^^^^^^^^^^^^^^^^^^^                        
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^                        
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^                        
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^                        
                    ^^^^^^^^^^                                                  
                      File                                                      
                    "/usr/lib/python3/dist-packages/yt_d                        
                    lp/extractor/common.py", line 860,                          
                    in _request_webpage                                         
                        raise ExtractorError(errmsg,                            
                    cause=err)                                                  
                    yt_dlp.utils.ExtractorError:                                
                    ad30z1t_t30: Unable to download API                         
                    page: <urlopen error Tunnel                                 
                    connection failed: 407 Proxy                                
                    Authentication Required> (caused by                         
                    ProxyError('<urlopen error Tunnel                           
                    connection failed: 407 Proxy                                
                    Authentication Required>')); please                         
                    report this issue on                                        
                    https://github.com/yt-dlp/yt-dlp/iss                        
                    ues?q= , filling out the appropriate                        
                    issue template. Confirm you are on                          
                    the latest version using  yt-dlp -U                         
                                                                                
                    During handling of the above                                
                    exception, another exception                                
                    occurred:                                                   
                                                                                
                    Traceback (most recent call last):                          
                      File                                                      
                    "/usr/local/lib/python3.11/dist-pack                        
                    ages/spotdl/providers/audio/base.py"                        
                    , line 369, in get_download_metadata                        
                        data =                                                  
                    self.audio_handler.extract_info(url,                        
                    download=download)                                          
                               ^^^^^^^^^^^^^^^^^^^^^^^^^                        
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^                              
                      File                                                      
                    "/usr/lib/python3/dist-packages/yt_d                        
                    lp/YoutubeDL.py", line 1556, in                             
                    extract_info                                                
                        return self.__extract_info(url,                         
                    self.get_info_extractor(key),                               
                    download, extra_info, process)                              
                               ^^^^^^^^^^^^^^^^^^^^^^^^^                        
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^                        
                    ^^^^^^^^^^^^^^^^^^^^^^^^                                    
                      File                                                      
                    "/usr/lib/python3/dist-packages/yt_d                        
                    lp/YoutubeDL.py", line 1585, in                             
                    wrapper                                                     
                        self.report_error(str(e),                               
                    e.format_traceback())                                       
                      File                                                      
                    "/usr/lib/python3/dist-packages/yt_d                        
                    lp/YoutubeDL.py", line 1045, in                             
                    report_error                                                
                        self.trouble(f'{self._format_err                        
                    ("ERROR:", self.Styles.ERROR)}                              
                    {message}', *args, **kwargs)                                
                      File                                                      
                    "/usr/lib/python3/dist-packages/yt_d                        
                    lp/YoutubeDL.py", line 964, in                              
                    trouble                                                     
                        self.to_stderr(message)                                 
                      File                                                      
                    "/usr/lib/python3/dist-packages/yt_d                        
                    lp/YoutubeDL.py", line 906, in                              
                    to_stderr                                                   
                        self.params['logger'].error(mess                        
                    age)                                                        
                      File                                                      
                    "/usr/local/lib/python3.11/dist-pack                        
                    ages/spotdl/providers/audio/base.py"                        
                    , line 57, in error                                         
                        raise AudioProviderError(msg)                           
                    spotdl.providers.audio.base.AudioPro                        
                    viderError: ERROR:  ad30z1t_t30:                            
                    Unable to download API page:                                
                    <urlopen error Tunnel connection                            
                    failed: 407 Proxy Authentication                            
                    Required> (caused by                                        
                    ProxyError('<urlopen error Tunnel                           
                    connection failed: 407 Proxy                                
                    Authentication Required>')); please                         
                    report this issue on                                        
                    https://github.com/yt-dlp/yt-dlp/iss                        
                    ues?q= , filling out the appropriate                        
                    issue template. Confirm you are on                          
                    the latest version using  yt-dlp -U                         
                                                                                
                    The above exception was the direct                          
                    cause of the following exception:                           
                                                                                
                    Traceback (most recent call last):                          
                      File                                                      
                    "/usr/local/lib/python3.11/dist-pack                        
                    ages/spotdl/download/downloader.py",                        
                     line 646, in search_and_download                           
                        download_info =                                         
                    audio_downloader.get_download_metada                        
                    ta(                                                         
                                        ^^^^^^^^^^^^^^^^                        
                    ^^^^^^^^^^^^^^^^^^^^^^^                                     
                      File                                                      
                    "/usr/local/lib/python3.11/dist-pack                        
                    ages/spotdl/providers/audio/base.py"                        
                    , line 375, in get_download_metadata                        
                        raise                                                   
                    AudioProviderError(f"YT-DLP download                        
                    error - {url}") from exception                              
                    spotdl.providers.audio.base.AudioPro                        
                    viderError: YT-DLP download error -                         
                    https://music.youtube.com/watch?v=ad                        
                    30z1t_t30                                                   
                                                                                
                    ╭─ Traceback (most recent call las─╮                        
                    │ /usr/lib/python3.11/urllib/reque │                        
                    │ st.py:1348 in do_open            │                        
                    │                                  │                        
                    │   1345 │   │                     │                        
                    │   1346 │   │   try:              │                        
                    │   1347 │   │   │   try:          │                        
                    │ ❱ 1348 │   │   │   │   h.request │                        
                    │   1349 │   │   │   │   │   │     │                        
                    │   1350 │   │   │   except OSErro │                        
                    │   1351 │   │   │   │   raise URL │                        
                    │                                  │                        
                    │ /usr/lib/python3.11/http/client. │                        
                    │ py:1282 in request               │                        
                    │                                  │                        
                    │   1279 │   def request(self, met │                        
                    │   1280 │   │   │   │   encode_ch │                        
                    │   1281 │   │   """Send a complet │                        
                    │ ❱ 1282 │   │   self._send_reques │                        
                    │   1283 │                         │                        
                    │   1284 │   def _send_request(sel │                        
                    │   1285 │   │   # Honor explicitl │                        
                    │                                  │                        
                    │ /usr/lib/python3.11/http/client. │                        
                    │ py:1328 in _send_request         │                        
                    │                                  │                        
                    │   1325 │   │   │   # RFC 2616 Se │                        
                    │   1326 │   │   │   # default cha │                        
                    │   1327 │   │   │   body = _encod │                        
                    │ ❱ 1328 │   │   self.endheaders(b │                        
                    │   1329 │                         │                        
                    │   1330 │   def getresponse(self) │                        
                    │   1331 │   │   """Get the respon │                        
                    │                                  │                        
                    │ /usr/lib/python3.11/http/client. │                        
                    │ py:1277 in endheaders            │                        
                    │                                  │                        
                    │   1274 │   │   │   self.__state  │                        
                    │   1275 │   │   else:             │                        
                    │   1276 │   │   │   raise CannotS │                        
                    │ ❱ 1277 │   │   self._send_output │                        
                    │   1278 │                         │                        
                    │   1279 │   def request(self, met │                        
                    │   1280 │   │   │   │   encode_ch │                        
                    │                                  │                        
                    │ /usr/lib/python3.11/http/client. │                        
                    │ py:1037 in _send_output          │                        
                    │                                  │                        
                    │   1034 │   │   self._buffer.exte │                        
                    │   1035 │   │   msg = b"\r\n".joi │                        
                    │   1036 │   │   del self._buffer[ │                        
                    │ ❱ 1037 │   │   self.send(msg)    │                        
                    │   1038 │   │                     │                        
                    │   1039 │   │   if message_body i │                        
                    │   1040                           │                        
                    │                                  │                        
                    │ /usr/lib/python3.11/http/client. │                        
                    │ py:975 in send                   │                        
                    │                                  │                        
                    │    972 │   │                     │                        
                    │    973 │   │   if self.sock is N │                        
                    │    974 │   │   │   if self.auto_ │                        
                    │ ❱  975 │   │   │   │   self.conn │                        
                    │    976 │   │   │   else:         │                        
                    │    977 │   │   │   │   raise Not │                        
                    │    978                           │                        
                    │                                  │                        
                    │ /usr/lib/python3.11/http/client. │                        
                    │ py:1447 in connect               │                        
                    │                                  │                        
                    │   1444 │   │   def connect(self) │                        
                    │   1445 │   │   │   "Connect to a │                        
                    │   1446 │   │   │                 │                        
                    │ ❱ 1447 │   │   │   super().conne │                        
                    │   1448 │   │   │                 │                        
                    │   1449 │   │   │   if self._tunn │                        
                    │   1450 │   │   │   │   server_ho │                        
                    │                                  │                        
                    │ /usr/lib/python3.11/http/client. │                        
                    │ py:951 in connect                │                        
                    │                                  │                        
                    │    948 │   │   │   │   raise     │                        
                    │    949 │   │                     │                        
                    │    950 │   │   if self._tunnel_h │                        
                    │ ❱  951 │   │   │   self._tunnel( │                        
                    │    952 │                         │                        
                    │    953 │   def close(self):      │                        
                    │    954 │   │   """Close the conn │                        
                    │                                  │                        
                    │ /usr/lib/python3.11/http/client. │                        
                    │ py:924 in _tunnel                │                        
                    │                                  │                        
                    │    921 │   │                     │                        
                    │    922 │   │   if code != http.H │                        
                    │    923 │   │   │   self.close()  │                        
                    │ ❱  924 │   │   │   raise OSError │                        
                    │    925 │   │   while True:       │                        
                    │    926 │   │   │   line = respon │                        
                    │    927 │   │   │   if len(line)  │                        
                    ╰──────────────────────────────────╯                        
                    OSError: Tunnel connection failed:                          
                    407 Proxy Authentication Required                           
                                                                                
                    During handling of the above                                
                    exception, another exception                                
                    occurred:                                                   
                                                                                
                    ╭─ Traceback (most recent call las─╮                        
                    │ /usr/lib/python3/dist-packages/y │                        
                    │ t_dlp/networking/_urllib.py:396  │                        
                    │ in _send                         │                        
                    │                                  │                        
                    │   393 │   │   │   cookiejar=requ │                        
                    │   394 │   │   )                  │                        
                    │   395 │   │   try:               │                        
                    │ ❱ 396 │   │   │   res = opener.o │                        
                    │       timeout=float(request.exte │                        
                    │   397 │   │   except urllib.erro │                        
                    │   398 │   │   │   if isinstance( │                        
                    │   399 │   │   │   │   # Prevent  │                        
                    │       destroyed.                 │                        
                    │                                  │                        
                    │ /usr/lib/python3.11/urllib/reque │                        
                    │ st.py:519 in open                │                        
                    │                                  │                        
                    │    516 │   │   │   req = meth(re │                        
                    │    517 │   │                     │                        
                    │    518 │   │   sys.audit('urllib │                        
                    │        req.get_method())         │                        
                    │ ❱  519 │   │   response = self._ │                        
                    │    520 │   │                     │                        
                    │    521 │   │   # post-process re │                        
                    │    522 │   │   meth_name = proto │                        
                    │                                  │                        
                    │ /usr/lib/python3.11/urllib/reque │                        
                    │ st.py:536 in _open               │                        
                    │                                  │                        
                    │    533 │   │   │   return result │                        
                    │    534 │   │                     │                        
                    │    535 │   │   protocol = req.ty │                        
                    │ ❱  536 │   │   result = self._ca │                        
                    │    537 │   │   │   │   │   │   │ │                        
                    │    538 │   │   if result:        │                        
                    │    539 │   │   │   return result │                        
                    │                                  │                        
                    │ /usr/lib/python3.11/urllib/reque │                        
                    │ st.py:496 in _call_chain         │                        
                    │                                  │                        
                    │    493 │   │   handlers = chain. │                        
                    │    494 │   │   for handler in ha │                        
                    │    495 │   │   │   func = getatt │                        
                    │ ❱  496 │   │   │   result = func │                        
                    │    497 │   │   │   if result is  │                        
                    │    498 │   │   │   │   return re │                        
                    │    499                           │                        
                    │                                  │                        
                    │ /usr/lib/python3/dist-packages/y │                        
                    │ t_dlp/networking/_urllib.py:101  │                        
                    │ in https_open                    │                        
                    │                                  │                        
                    │    98 │                          │                        
                    │    99 │   def https_open(self, r │                        
                    │   100 │   │   conn_class = self. │                        
                    │ ❱ 101 │   │   return self.do_ope │                        
                    │   102 │   │   │   functools.part │                        
                    │   103 │   │   │   │   _create_ht │                        
                    │   104 │   │   │   req, context=s │                        
                    │                                  │                        
                    │ /usr/lib/python3.11/urllib/reque │                        
                    │ st.py:1351 in do_open            │                        
                    │                                  │                        
                    │   1348 │   │   │   │   h.request │                        
                    │   1349 │   │   │   │   │   │     │                        
                    │   1350 │   │   │   except OSErro │                        
                    │ ❱ 1351 │   │   │   │   raise URL │                        
                    │   1352 │   │   │   r = h.getresp │                        
                    │   1353 │   │   except:           │                        
                    │   1354 │   │   │   h.close()     │                        
                    ╰──────────────────────────────────╯                        
                    URLError: <urlopen error Tunnel                             
                    connection failed: 407 Proxy                                
                    Authentication Required>                                    
                                                                                
                    The above exception was the direct                          
                    cause of the following exception:                           
                                                                                
                    ╭─ Traceback (most recent call las─╮                        
                    │ /usr/lib/python3/dist-packages/y │                        
                    │ t_dlp/extractor/common.py:847 in │                        
                    │ _request_webpage                 │                        
                    │                                  │                        
                    │    844 │   │   │   headers.setde │                        
                    │    845 │   │                     │                        
                    │    846 │   │   try:              │                        
                    │ ❱  847 │   │   │   return self._ │                        
                    │        headers, query))          │                        
                    │    848 │   │   except network_ex │                        
                    │    849 │   │   │   if isinstance │                        
                    │    850 │   │   │   │   if self._ │                        
                    │                                  │                        
                    │ /usr/lib/python3/dist-packages/y │                        
                    │ t_dlp/YoutubeDL.py:4052 in       │                        
                    │ urlopen                          │                        
                    │                                  │                        
                    │   4049 │   │   clean_headers(req │                        
                    │   4050 │   │                     │                        
                    │   4051 │   │   try:              │                        
                    │ ❱ 4052 │   │   │   return self._ │                        
                    │   4053 │   │   except NoSupporti │                        
                    │   4054 │   │   │   for ue in e.u │                        
                    │   4055 │   │   │   │   if not (u │                        
                    │                                  │                        
                    │ /usr/lib/python3/dist-packages/y │                        
                    │ t_dlp/networking/common.py:114   │                        
                    │ in send                          │                        
                    │                                  │                        
                    │   111 │   │   │                  │                        
                    │   112 │   │   │   self._print_ve │                        
                    │   113 │   │   │   try:           │                        
                    │ ❱ 114 │   │   │   │   response = │                        
                    │   115 │   │   │   except Request │                        
                    │   116 │   │   │   │   raise      │                        
                    │   117 │   │   │   except Excepti │                        
                    │                                  │                        
                    │ /usr/lib/python3/dist-packages/y │                        
                    │ t_dlp/networking/_helper.py:204  │                        
                    │ in wrapper                       │                        
                    │                                  │                        
                    │   201 │   @functools.wraps(func) │                        
                    │   202 │   def wrapper(self, *arg │                        
                    │   203 │   │   try:               │                        
                    │ ❱ 204 │   │   │   return func(se │                        
                    │   205 │   │   except Unsupported │                        
                    │   206 │   │   │   if e.handler i │                        
                    │   207 │   │   │   │   e.handler  │                        
                    │                                  │                        
                    │ /usr/lib/python3/dist-packages/y │                        
                    │ t_dlp/networking/common.py:325   │                        
                    │ in send                          │                        
                    │                                  │                        
                    │   322 │   def send(self, request │                        
                    │   323 │   │   if not isinstance( │                        
                    │   324 │   │   │   raise TypeErro │                        
                    │ ❱ 325 │   │   return self._send( │                        
                    │   326 │                          │                        
                    │   327 │   @abc.abstractmethod    │                        
                    │   328 │   def _send(self, reques │                        
                    │                                  │                        
                    │ /usr/lib/python3/dist-packages/y │                        
                    │ t_dlp/networking/_urllib.py:408  │                        
                    │ in _send                         │                        
                    │                                  │                        
                    │   405 │   │   │                  │                        
                    │   406 │   │   │   # proxy errors │                        
                    │   407 │   │   │   if 'tunnel con │                        
                    │       SocksProxyError):          │                        
                    │ ❱ 408 │   │   │   │   raise Prox │                        
                    │   409 │   │   │                  │                        
                    │   410 │   │   │   handle_respons │                        
                    │   411 │   │   │   raise Transpor │                        
                    ╰──────────────────────────────────╯                        
                    ProxyError: <urlopen error Tunnel                           
                    connection failed: 407 Proxy                                
                    Authentication Required>                                    
                                                                                
                    During handling of the above                                
                    exception, another exception                                
                    occurred:                                                   
                                                                                
                    ╭─ Traceback (most recent call las─╮                        
                    │ /usr/lib/python3/dist-packages/y │                        
                    │ t_dlp/YoutubeDL.py:1567 in       │                        
                    │ wrapper                          │                        
                    │                                  │                        
                    │   1564 │   │   def wrapper(self, │                        
                    │   1565 │   │   │   while True:   │                        
                    │   1566 │   │   │   │   try:      │                        
                    │ ❱ 1567 │   │   │   │   │   retur │                        
                    │   1568 │   │   │   │   except (D │                        
                    │   1569 │   │   │   │   │   raise │                        
                    │   1570 │   │   │   │   except Re │                        
                    │                                  │                        
                    │ /usr/lib/python3/dist-packages/y │                        
                    │ t_dlp/YoutubeDL.py:1702 in       │                        
                    │ __extract_info                   │                        
                    │                                  │                        
                    │   1699 │   │   self._apply_heade │                        
                    │   1700 │   │                     │                        
                    │   1701 │   │   try:              │                        
                    │ ❱ 1702 │   │   │   ie_result = i │                        
                    │   1703 │   │   except UserNotLiv │                        
                    │   1704 │   │   │   if process:   │                        
                    │   1705 │   │   │   │   if self.p │                        
                    │                                  │                        
                    │ /usr/lib/python3/dist-packages/y │                        
                    │ t_dlp/extractor/common.py:715 in │                        
                    │ extract                          │                        
                    │                                  │                        
                    │    712 │   │   │   │   │   self. │                        
                    │    713 │   │   │   │   │   self. │                        
                    │    714 │   │   │   │   │   │   u │                        
                    │        20)))                     │                        
                    │ ❱  715 │   │   │   │   │   ie_re │                        
                    │    716 │   │   │   │   │   if ie │                        
                    │    717 │   │   │   │   │   │   r │                        
                    │    718 │   │   │   │   │   if se │                        
                    │                                  │                        
                    │ /usr/lib/python3/dist-packages/y │                        
                    │ t_dlp/extractor/youtube.py:4073  │                        
                    │ in _real_extract                 │                        
                    │                                  │                        
                    │   4070 │   │   base_url = self.h │                        
                    │   4071 │   │   webpage_url = bas │                        
                    │   4072 │   │                     │                        
                    │ ❱ 4073 │   │   webpage, master_y │                        
                    │        self._download_player_res │                        
                    │   4074 │   │                     │                        
                    │   4075 │   │   playability_statu │                        
                    │   4076 │   │   │   player_respon │                        
                    │                                  │                        
                    │ /usr/lib/python3/dist-packages/y │                        
                    │ t_dlp/extractor/youtube.py:4037  │                        
                    │ in _download_player_responses    │                        
                    │                                  │                        
                    │   4034 │   │                     │                        
                    │   4035 │   │   master_ytcfg = se │                        
                    │        self._get_default_ytcfg() │                        
                    │   4036 │   │                     │                        
                    │ ❱ 4037 │   │   player_responses, │                        
                    │   4038 │   │   │   self._get_req │                        
                    │   4039 │   │   │   video_id, web │                        
                    │   4040                           │                        
                    │                                  │                        
                    │ /usr/lib/python3/dist-packages/y │                        
                    │ t_dlp/extractor/youtube.py:3728  │                        
                    │ in _extract_player_responses     │                        
                    │                                  │                        
                    │   3725 │   │                     │                        
                    │   3726 │   │   if last_error:    │                        
                    │   3727 │   │   │   if not len(pr │                        
                    │ ❱ 3728 │   │   │   │   raise las │                        
                    │   3729 │   │   │   self.report_w │                        
                    │   3730 │   │   return prs, playe │                        
                    │   3731                           │                        
                    │                                  │                        
                    │ /usr/lib/python3/dist-packages/y │                        
                    │ t_dlp/extractor/youtube.py:3693  │                        
                    │ in _extract_player_responses     │                        
                    │                                  │                        
                    │   3690 │   │   │   │   tried_ifr │                        
                    │   3691 │   │   │                 │                        
                    │   3692 │   │   │   try:          │                        
                    │ ❱ 3693 │   │   │   │   pr = init │                        
                    │        self._extract_player_resp │                        
                    │   3694 │   │   │   │   │   clien │                        
                    │        player_url if require_js_ │                        
                    │   3695 │   │   │   except Extrac │                        
                    │   3696 │   │   │   │   if last_e │                        
                    │                                  │                        
                    │ /usr/lib/python3/dist-packages/y │                        
                    │ t_dlp/extractor/youtube.py:3613  │                        
                    │ in _extract_player_response      │                        
                    │                                  │                        
                    │   3610 │   │   │   yt_query['par │                        
                    │   3611 │   │                     │                        
                    │   3612 │   │   yt_query.update(s │                        
                    │ ❱ 3613 │   │   return self._extr │                        
                    │   3614 │   │   │   item_id=video │                        
                    │   3615 │   │   │   ytcfg=player_ │                        
                    │   3616 │   │   │   default_clien │                        
                    │                                  │                        
                    │ /usr/lib/python3/dist-packages/y │                        
                    │ t_dlp/extractor/youtube.py:966   │                        
                    │ in _extract_response             │                        
                    │                                  │                        
                    │    963 │   │   │   │   │   retur │                        
                    │    964 │   │   │   │   elif not  │                        
                    │    965 │   │   │   │   │   main_ │                        
                    │ ❱  966 │   │   │   │   │   next( │                        
                    │    967 │   │   │   │   │   conti │                        
                    │    968 │   │   │   │             │                        
                    │    969 │   │   │   │   first_byt │                        
                    │                                  │                        
                    │ /usr/lib/python3/dist-packages/y │                        
                    │ t_dlp/utils/_utils.py:5114 in    │                        
                    │ __iter__                         │                        
                    │                                  │                        
                    │   5111 │   │   │   self.attempt  │                        
                    │   5112 │   │   │   yield self    │                        
                    │   5113 │   │   │   if self.error │                        
                    │ ❱ 5114 │   │   │   │   self.erro │                        
                    │   5115 │                         │                        
                    │   5116 │   @staticmethod         │                        
                    │   5117 │   def report_retry(e, c │                        
                    │        suffix=None):             │                        
                    │                                  │                        
                    │ /usr/lib/python3/dist-packages/y │                        
                    │ t_dlp/extractor/common.py:3762   │                        
                    │ in _error_or_warning             │                        
                    │                                  │                        
                    │   3759 │   │   return True       │                        
                    │   3760 │                         │                        
                    │   3761 │   def _error_or_warning │                        
                    │ ❱ 3762 │   │   RetryManager.repo │                        
                    │   3763 │   │   │   err, _count o │                        
                    │   3764 │   │   │   info=self.to_ │                        
                    │        self.report_warning,      │                        
                    │   3765 │   │   │   sleep_func=se │                        
                    │                                  │                        
                    │ /usr/lib/python3/dist-packages/y │                        
                    │ t_dlp/utils/_utils.py:5122 in    │                        
                    │ report_retry                     │                        
                    │                                  │                        
                    │   5119 │   │   if count > retrie │                        
                    │   5120 │   │   │   if error:     │                        
                    │   5121 │   │   │   │   return er │                        
                    │        else error(str(e))        │                        
                    │ ❱ 5122 │   │   │   raise e       │                        
                    │   5123 │   │                     │                        
                    │   5124 │   │   if not count:     │                        
                    │   5125 │   │   │   return warn(e │                        
                    │                                  │                        
                    │ /usr/lib/python3/dist-packages/y │                        
                    │ t_dlp/extractor/youtube.py:955   │                        
                    │ in _extract_response             │                        
                    │                                  │                        
                    │    952 │   │   # and its result  │                        
                    │    953 │   │   while True:       │                        
                    │    954 │   │   │   try:          │                        
                    │ ❱  955 │   │   │   │   response  │                        
                    │    956 │   │   │   │   │   ep=ep │                        
                    │    957 │   │   │   │   │   video │                        
                    │    958 │   │   │   │   │   conte │                        
                    │                                  │                        
                    │ /usr/lib/python3/dist-packages/y │                        
                    │ t_dlp/extractor/youtube.py:603   │                        
                    │ in _call_api                     │                        
                    │                                  │                        
                    │    600 │   │   │   real_headers. │                        
                    │    601 │   │   api_key = (self._ │                        
                    │        ie_key=YoutubeIE.ie_key() │                        
                    │    602 │   │   │   │      or api │                        
                    │ ❱  603 │   │   return self._down │                        
                    │    604 │   │   │   f'https://{se │                        
                    │        default_client)}/youtubei │                        
                    │    605 │   │   │   video_id=vide │                        
                    │    606 │   │   │   data=json.dum │                        
                    │                                  │                        
                    │ /usr/lib/python3/dist-packages/y │                        
                    │ t_dlp/extractor/common.py:1069   │                        
                    │ in download_content              │                        
                    │                                  │                        
                    │   1066 │   │   │   if parser is  │                        
                    │   1067 │   │   │   │   kwargs.po │                        
                    │   1068 │   │   │   # The method  │                        
                    │        _download_..._handle      │                        
                    │ ❱ 1069 │   │   │   res = getattr │                        
                    │        **kwargs)                 │                        
                    │   1070 │   │   │   return res if │                        
                    │   1071 │   │                     │                        
                    │   1072 │   │   def impersonate(f │                        
                    │                                  │                        
                    │ /usr/lib/python3/dist-packages/y │                        
                    │ t_dlp/extractor/common.py:1033   │                        
                    │ in download_handle               │                        
                    │                                  │                        
                    │   1030 │   │                     │                        
                    │   1031 │   │   def download_hand │                        
                    │        transform_source=None,    │                        
                    │   1032 │   │   │   │   │   │   │ │                        
                    │        expected_status=None):    │                        
                    │ ❱ 1033 │   │   │   res = self._d │                        
                    │   1034 │   │   │   │   url_or_re │                        
                    │        encoding=encoding,        │                        
                    │   1035 │   │   │   │   data=data │                        
                    │        expected_status=expected_ │                        
                    │   1036 │   │   │   if res is Fal │                        
                    │                                  │                        
                    │ /usr/lib/python3/dist-packages/y │                        
                    │ t_dlp/extractor/common.py:903 in │                        
                    │ _download_webpage_handle         │                        
                    │                                  │                        
                    │    900 │   │   if isinstance(url │                        
                    │    901 │   │   │   url_or_reques │                        
                    │    902 │   │                     │                        
                    │ ❱  903 │   │   urlh = self._requ │                        
                    │        data=data, headers=header │                        
                    │    904 │   │   if urlh is False: │                        
                    │    905 │   │   │   assert not fa │                        
                    │    906 │   │   │   return False  │                        
                    │                                  │                        
                    │ /usr/lib/python3/dist-packages/y │                        
                    │ t_dlp/extractor/common.py:860 in │                        
                    │ _request_webpage                 │                        
                    │                                  │                        
                    │    857 │   │   │                 │                        
                    │    858 │   │   │   errmsg = f'{e │                        
                    │    859 │   │   │   if fatal:     │                        
                    │ ❱  860 │   │   │   │   raise Ext │                        
                    │    861 │   │   │   else:         │                        
                    │    862 │   │   │   │   self.repo │                        
                    │    863 │   │   │   │   return Fa │                        
                    ╰──────────────────────────────────╯                        
                    ExtractorError: [youtube]                                   
                    ad30z1t_t30: Unable to download API                         
                    page: <urlopen error Tunnel                                 
                    connection failed: 407 Proxy                                
                    Authentication Required> (caused by                         
                    ProxyError('<urlopen error Tunnel                           
                    connection failed: 407 Proxy                                
                    Authentication Required>')); please                         
                    report this issue on                                        
                    https://github.com/yt-dlp/yt-dlp/iss                        
                    ues?q= , filling out the appropriate                        
                    issue template. Confirm you are on                          
                    the latest version using  yt-dlp -U                         
                                                                                
                    During handling of the above                                
                    exception, another exception                                
                    occurred:                                                   
                                                                                
                    ╭─ Traceback (most recent call las─╮                        
                    │ /usr/local/lib/python3.11/dist-p │                        
                    │ ackages/spotdl/providers/audio/b │                        
                    │ ase.py:369 in                    │                        
                    │ get_download_metadata            │                        
                    │                                  │                        
                    │   366 │   │   """                │                        
                    │   367 │   │                      │                        
                    │   368 │   │   try:               │                        
                    │ ❱ 369 │   │   │   data = self.au │                        
                    │   370 │   │   │                  │                        
                    │   371 │   │   │   if data:       │                        
                    │   372 │   │   │   │   return dat │                        
                    │                                  │                        
                    │ /usr/lib/python3/dist-packages/y │                        
                    │ t_dlp/YoutubeDL.py:1556 in       │                        
                    │ extract_info                     │                        
                    │                                  │                        
                    │   1553 │   │   │   │   if self.p │                        
                    │   1554 │   │   │   │   │   raise │                        
                    │   1555 │   │   │   │   break     │                        
                    │ ❱ 1556 │   │   │   return self._ │                        
                    │        extra_info, process)      │                        
                    │   1557 │   │   else:             │                        
                    │   1558 │   │   │   extractors_re │                        
                    │        ['default'])              │                        
                    │   1559 │   │   │   self.report_e │                        
                    │        (%s)")} found for URL {ur │                        
                    │                                  │                        
                    │ /usr/lib/python3/dist-packages/y │                        
                    │ t_dlp/YoutubeDL.py:1585 in       │                        
                    │ wrapper                          │                        
                    │                                  │                        
                    │   1582 │   │   │   │   │   msg + │                        
                    │        --proxy) to workaround.'  │                        
                    │   1583 │   │   │   │   │   self. │                        
                    │   1584 │   │   │   │   except Ex │                        
                    │ ❱ 1585 │   │   │   │   │   self. │                        
                    │   1586 │   │   │   │   except Ex │                        
                    │   1587 │   │   │   │   │   if se │                        
                    │   1588 │   │   │   │   │   │   s │                        
                    │        tb=encode_compat_str(trac │                        
                    │                                  │                        
                    │ /usr/lib/python3/dist-packages/y │                        
                    │ t_dlp/YoutubeDL.py:1045 in       │                        
                    │ report_error                     │                        
                    │                                  │                        
                    │   1042 │   │   Do the same as tr │                        
                    │   1043 │   │   in red if stderr  │                        
                    │   1044 │   │   '''               │                        
                    │ ❱ 1045 │   │   self.trouble(f'{s │                        
                    │        *args, **kwargs)          │                        
                    │   1046 │                         │                        
                    │   1047 │   def write_debug(self, │                        
                    │   1048 │   │   '''Log debug mess │                        
                    │                                  │                        
                    │ /usr/lib/python3/dist-packages/y │                        
                    │ t_dlp/YoutubeDL.py:964 in        │                        
                    │ trouble                          │                        
                    │                                  │                        
                    │    961 │   │   @param is_error   │                        
                    │    962 │   │   """               │                        
                    │    963 │   │   if message is not │                        
                    │ ❱  964 │   │   │   self.to_stder │                        
                    │    965 │   │   if self.params.ge │                        
                    │    966 │   │   │   if tb is None │                        
                    │    967 │   │   │   │   if sys.ex │                        
                    │        block                     │                        
                    │                                  │                        
                    │ /usr/lib/python3/dist-packages/y │                        
                    │ t_dlp/YoutubeDL.py:906 in        │                        
                    │ to_stderr                        │                        
                    │                                  │                        
                    │    903 │   │   """Print message  │                        
                    │    904 │   │   assert isinstance │                        
                    │    905 │   │   if self.params.ge │                        
                    │ ❱  906 │   │   │   self.params[' │                        
                    │    907 │   │   else:             │                        
                    │    908 │   │   │   self._write_s │                        
                    │        self._out_files.error, on │                        
                    │    909                           │                        
                    │                                  │                        
                    │ /usr/local/lib/python3.11/dist-p │                        
                    │ ackages/spotdl/providers/audio/b │                        
                    │ ase.py:57 in error               │                        
                    │                                  │                        
                    │    54 │   │   YTDL uses this to  │                        
                    │    55 │   │   """                │                        
                    │    56 │   │                      │                        
                    │ ❱  57 │   │   raise AudioProvide │                        
                    │    58                            │                        
                    │    59                            │                        
                    │    60 ISRC_REGEX = re.compile(r" │                        
                    ╰──────────────────────────────────╯                        
                    AudioProviderError: ERROR: [youtube]                        
                    ad30z1t_t30: Unable to download API                         
                    page: <urlopen error Tunnel                                 
                    connection failed: 407 Proxy                                
                    Authentication Required> (caused by                         
                    ProxyError('<urlopen error Tunnel                           
                    connection failed: 407 Proxy                                
                    Authentication Required>')); please                         
                    report this issue on                                        
                    https://github.com/yt-dlp/yt-dlp/iss                        
                    ues?q= , filling out the appropriate                        
                    issue template. Confirm you are on                          
                    the latest version using  yt-dlp -U                         
                                                                                
                    The above exception was the direct                          
                    cause of the following exception:                           
                                                                                
                    ╭─ Traceback (most recent call las─╮                        
                    │ /usr/local/lib/python3.11/dist-p │                        
                    │ ackages/spotdl/download/download │                        
                    │ er.py:646 in search_and_download │                        
                    │                                  │                        
                    │   643 │   │   │   │   display_pr │                        
                    │   644 │   │   │   )              │                        
                    │   645 │   │   │                  │                        
                    │ ❱ 646 │   │   │   download_info  │                        
                    │   647 │   │   │   │   download_u │                        
                    │   648 │   │   │   )              │                        
                    │   649                            │                        
                    │                                  │                        
                    │ /usr/local/lib/python3.11/dist-p │                        
                    │ ackages/spotdl/providers/audio/b │                        
                    │ ase.py:375 in                    │                        
                    │ get_download_metadata            │                        
                    │                                  │                        
                    │   372 │   │   │   │   return dat │                        
                    │   373 │   │   except Exception a │                        
                    │   374 │   │   │   logger.debug(e │                        
                    │ ❱ 375 │   │   │   raise AudioPro │                        
                    │   376 │   │                      │                        
                    │   377 │   │   raise AudioProvide │                        
                    │   378                            │                        
                    ╰──────────────────────────────────╯                        
                    AudioProviderError: YT-DLP download                         
                    error -                                                     
                    https://music.youtube.com/watch?v=ad                        
                    30z1t_t30                                                   
[16:40:03] DEBUG    MainThread - Took 80 seconds              entry_point.py:151

Mine has started working again. I didn't do anything to it

@lsliddar
Copy link

lsliddar commented Feb 29, 2024

Not sure if this issue has been resolved - I have the same YT-DLP Error.

However, my logs indicate a 403 error.

Running spotdl and youtube-dl in Docker Containers within Synology NAS. Both containers are up to date to most stable release... the run and debug logs:

`sudo docker run --rm -v /volume1/data/media/music:/music spotdl/spotify-downloader:latest download https://open.spotify.com/track/4t0UsYzmmmZRMTWn77jiGF?si=c9e321b74136490c --log-level DEBUG
[16:21:48] DEBUG MainThread - Downloader settings: downloader.py:115
{'audio_providers': ['youtube-music'],
'lyrics_providers': ['genius', 'azlyrics',
'musixmatch'], 'playlist_numbering':
False, 'scan_for_songs': False, 'm3u':
None, 'output': '{artists} -
{title}.{output-ext}', 'overwrite':
'skip', 'search_query': None, 'ffmpeg':
'ffmpeg', 'bitrate': None, 'ffmpeg_args':
None, 'format': 'mp3', 'save_file': None,
'filter_results': True, 'threads': 4,
'cookie_file': None, 'restrict': False,
'print_errors': False, 'sponsor_block':
False, 'preload': False, 'archive': None,
'load_config': True, 'log_level': 'DEBUG',
'simple_tui': False, 'fetch_albums':
False, 'id3_separator': '/', 'ytm_data':
False, 'add_unavailable': False,
'generate_lrc': False,
'force_update_metadata': False,
'only_verified_results': False,
'sync_without_deleting': False,
'max_filename_length': None}
[16:21:48] DEBUG MainThread - FFmpeg path: ffmpeg downloader.py:133
[16:21:48] DEBUG MainThread - Found 0 known songs downloader.py:158
[16:21:50] DEBUG MainThread - Archive: 0 urls downloader.py:192
[16:21:50] DEBUG MainThread - Downloader initialized downloader.py:194
[16:21:50] INFO MainThread - Processing query: search.py:125
https://open.spotify.com/track/4t0UsYzmmmZRMTW
n77jiGF?si=c9e321b74136490c
[16:21:51] DEBUG MainThread - Found 1 songs in 0 lists search.py:257
[16:21:51] DEBUG MainThread - Downloading 1 songs downloader.py:241
[16:21:57] DEBUG asyncio_0 - Found lyrics for Robin S - downloader.py:352
Show Me Love on Genius
[16:21:57] DEBUG asyncio_0 - [4t0UsYzmmmZRMTWn77jiGF] Searching base.py:157
for robin s - show me love
[16:21:58] DEBUG asyncio_0 - [4t0UsYzmmmZRMTWn77jiGF] Found 3 base.py:172
results for ISRC USAT29300075
[16:21:58] DEBUG asyncio_0 - [4t0UsYzmmmZRMTWn77jiGF] Filtered to base.py:184
3 ISRC results
[16:21:58] DEBUG asyncio_0 - [4t0UsYzmmmZRMTWn77jiGF] Best ISRC base.py:193
result is
https://music.youtube.com/watch?v=Wx7I4yWJnXI
with score 100.0
[16:21:58] DEBUG asyncio_0 - Downloading Robin S - Show Me downloader.py:571
Love using
https://music.youtube.com/watch?v=Wx7I4yWJ
nXI
[16:22:00] ERROR asyncio_0 - Traceback (most recent progress_handler.py:358
call last):
File
"/spotdl/providers/audio/base.py",
line 343, in get_download_metadata
data =
self.audio_handler.extract_info(url,
download=download)
^^^^^^^^^^^^^^^^^^^^^^^^^
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File
"/root/.cache/pypoetry/virtualenvs/s
potdl-il7asoJj-py3.11/lib/python3.11
/site-packages/yt_dlp/YoutubeDL.py",
line 1507, in extract_info
return self.__extract_info(url,
self.get_info_extractor(key),
download, extra_info, process)
^^^^^^^^^^^^^^^^^^^^^^^^^
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
^^^^^^^^^^^^^^^^^^^^^^^^
File
"/root/.cache/pypoetry/virtualenvs/s
potdl-il7asoJj-py3.11/lib/python3.11
/site-packages/yt_dlp/YoutubeDL.py",
line 1518, in wrapper
return func(self, *args,
**kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^
^^
File
"/root/.cache/pypoetry/virtualenvs/s
potdl-il7asoJj-py3.11/lib/python3.11
/site-packages/yt_dlp/YoutubeDL.py",
line 1615, in __extract_info
return
self.process_ie_result(ie_result,
download, extra_info)
^^^^^^^^^^^^^^^^^^^^^^^^^
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File
"/root/.cache/pypoetry/virtualenvs/s
potdl-il7asoJj-py3.11/lib/python3.11
/site-packages/yt_dlp/YoutubeDL.py",
line 1674, in process_ie_result
ie_result =
self.process_video_result(ie_result,
download=download)
^^^^^^^^^^^^^^^^^^^^
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File
"/root/.cache/pypoetry/virtualenvs/s
potdl-il7asoJj-py3.11/lib/python3.11
/site-packages/yt_dlp/YoutubeDL.py",
line 2779, in process_video_result
self.process_info(new_info)
File
"/root/.cache/pypoetry/virtualenvs/s
potdl-il7asoJj-py3.11/lib/python3.11
/site-packages/yt_dlp/YoutubeDL.py",
line 3247, in process_info
success, real_download =
self.dl(temp_filename, info_dict)
^^^^^^^
^^^^^^^^^^^^^^^^^^^^^^^^^^
File
"/root/.cache/pypoetry/virtualenvs/s
potdl-il7asoJj-py3.11/lib/python3.11
/site-packages/yt_dlp/YoutubeDL.py",
line 2970, in dl
return fd.download(name,
new_info, subtitle)
^^^^^^^^^^^^^^^^^^^^^^^^^
^^^^^^^^^^^^
File
"/root/.cache/pypoetry/virtualenvs/s
potdl-il7asoJj-py3.11/lib/python3.11
/site-packages/yt_dlp/downloader/com
mon.py", line 444, in download
ret =
self.real_download(filename,
info_dict)
^^^^^^^^^^^^^^^^^^^^^^^^^^
^^^^^^^^^^^^^
File
"/root/.cache/pypoetry/virtualenvs/s
potdl-il7asoJj-py3.11/lib/python3.11
/site-packages/yt_dlp/downloader/das
h.py", line 60, in real_download
return
self.download_and_append_fragments_m
ultiple(args, is_fatal=lambda idx:
idx == 0)
^^^^^^^^^^^^^^^^^^^^^^^^^
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
^^^^^^^^^^^^^^^^^^^^
File
"/root/.cache/pypoetry/virtualenvs/s
potdl-il7asoJj-py3.11/lib/python3.11
/site-packages/yt_dlp/downloader/fra
gment.py", line 382, in
download_and_append_fragments_multip
le
return
self.download_and_append_fragments(

args[0], **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File
"/root/.cache/pypoetry/virtualenvs/s
potdl-il7asoJj-py3.11/lib/python3.11
/site-packages/yt_dlp/downloader/fra
gment.py", line 521, in
download_and_append_fragments
download_fragment(fragment, ctx)
File
"/root/.cache/pypoetry/virtualenvs/s
potdl-il7asoJj-py3.11/lib/python3.11
/site-packages/yt_dlp/downloader/fra
gment.py", line 466, in
download_fragment
for retry in
RetryManager(self.params.get('fragme
nt_retries'), error_callback):
File
"/root/.cache/pypoetry/virtualenvs/s
potdl-il7asoJj-py3.11/lib/python3.11
/site-packages/yt_dlp/utils.py",
line 6141, in iter
self.error_callback(self.error,
self.attempt, self.retries)
File
"/root/.cache/pypoetry/virtualenvs/s
potdl-il7asoJj-py3.11/lib/python3.11
/site-packages/yt_dlp/downloader/fra
gment.py", line 463, in
error_callback
self.report_retry(err, count,
retries, frag_index, fatal)
File
"/root/.cache/pypoetry/virtualenvs/s
potdl-il7asoJj-py3.11/lib/python3.11
/site-packages/yt_dlp/downloader/com
mon.py", line 389, in report_retry
RetryManager.report_retry(
File
"/root/.cache/pypoetry/virtualenvs/s
potdl-il7asoJj-py3.11/lib/python3.11
/site-packages/yt_dlp/utils.py",
line 6148, in report_retry
return error(f'{e}. Giving up
after {count - 1} retries') if count
> 1 else error(str(e))

                        ^^^^^^^^^^^^^                                       
                  File                                                      
                "/root/.cache/pypoetry/virtualenvs/s                        
                potdl-il7asoJj-py3.11/lib/python3.11                        
                /site-packages/yt_dlp/downloader/com                        
                mon.py", line 392, in <lambda>                              
                    error=IDENTITY if not fatal else                        
                lambda e: self.report_error(f'\r Got                        
                error: {e}'),                                               
                                                                            
                           ^^^^^^^^^^^^^^^^^^^^^^^^^                        
                ^^^^^^^^^^^^^^^^^^^^^^^^                                    
                  File                                                      
                "/root/.cache/pypoetry/virtualenvs/s                        
                potdl-il7asoJj-py3.11/lib/python3.11                        
                /site-packages/yt_dlp/YoutubeDL.py",                        
                 line 1015, in report_error                                 
                    self.trouble(f'{self._format_err                        
                ("ERROR:", self.Styles.ERROR)}                              
                {message}', *args, **kwargs)                                
                  File                                                      
                "/root/.cache/pypoetry/virtualenvs/s                        
                potdl-il7asoJj-py3.11/lib/python3.11                        
                /site-packages/yt_dlp/YoutubeDL.py",                        
                 line 935, in trouble                                       
                    self.to_stderr(message)                                 
                  File                                                      
                "/root/.cache/pypoetry/virtualenvs/s                        
                potdl-il7asoJj-py3.11/lib/python3.11                        
                /site-packages/yt_dlp/YoutubeDL.py",                        
                 line 883, in to_stderr                                     
                    self.params['logger'].error(mess                        
                age)                                                        
                  File                                                      
                "/spotdl/providers/audio/base.py",                          
                line 52, in error                                           
                    raise AudioProviderError(msg)                           
                spotdl.providers.audio.base.AudioPro                        
                viderError: ERROR:  Got error: HTTP                         
                Error 403: Forbidden                                        
                                                                            
                The above exception was the direct                          
                cause of the following exception:                           
                                                                            
                Traceback (most recent call last):                          
                  File                                                      
                "/spotdl/download/downloader.py",                           
                line 579, in search_and_download                            
                    download_info =                                         
                audio_downloader.get_download_metada                        
                ta(                                                         
                                    ^^^^^^^^^^^^^^^^                        
                ^^^^^^^^^^^^^^^^^^^^^^^                                     
                  File                                                      
                "/spotdl/providers/audio/base.py",                          
                line 348, in get_download_metadata                          
                    raise                                                   
                AudioProviderError(f"YT-DLP download                        
                error - {url}") from exception                              
                spotdl.providers.audio.base.AudioPro                        
                viderError: YT-DLP download error -                         
                https://music.youtube.com/watch?v=Wx                        
                7I4yWJnXI                                                   
                                                                            
                ╭─ Traceback (most recent call las─╮                        
                │ /spotdl/providers/audio/base.py: │                        
                │ 343 in get_download_metadata     │                        
                │                                  │                        
                │   340 │   │   """                │                        
                │   341 │   │                      │                        
                │   342 │   │   try:               │                        
                │ ❱ 343 │   │   │   data = self.au │                        
                │   344 │   │   │                  │                        
                │   345 │   │   │   if data:       │                        
                │   346 │   │   │   │   return dat │                        
                │                                  │                        
                │ /root/.cache/pypoetry/virtualenv │                        
                │ s/spotdl-il7asoJj-py3.11/lib/pyt │                        
                │ hon3.11/site-packages/yt_dlp/You │                        
                │ tubeDL.py:1507 in extract_info   │                        
                │                                  │                        
                │   1504 │   │   │   │   if self.p │                        
                │   1505 │   │   │   │   │   raise │                        
                │   1506 │   │   │   │   break     │                        
                │ ❱ 1507 │   │   │   return self._ │                        
                │        extra_info, process)      │                        
                │   1508 │   │   else:             │                        
                │   1509 │   │   │   extractors_re │                        
                │        ['default'])              │                        
                │   1510 │   │   │   self.report_e │                        
                │        (%s)")} found for URL {ur │                        
                │                                  │                        
                │ /root/.cache/pypoetry/virtualenv │                        
                │ s/spotdl-il7asoJj-py3.11/lib/pyt │                        
                │ hon3.11/site-packages/yt_dlp/You │                        
                │ tubeDL.py:1518 in wrapper        │                        
                │                                  │                        
                │   1515 │   │   def wrapper(self, │                        
                │   1516 │   │   │   while True:   │                        
                │   1517 │   │   │   │   try:      │                        
                │ ❱ 1518 │   │   │   │   │   retur │                        
                │   1519 │   │   │   │   except (D │                        
                │   1520 │   │   │   │   │   raise │                        
                │   1521 │   │   │   │   except Re │                        
                │                                  │                        
                │ /root/.cache/pypoetry/virtualenv │                        
                │ s/spotdl-il7asoJj-py3.11/lib/pyt │                        
                │ hon3.11/site-packages/yt_dlp/You │                        
                │ tubeDL.py:1615 in __extract_info │                        
                │                                  │                        
                │   1612 │   │   self.add_default_ │                        
                │   1613 │   │   if process:       │                        
                │   1614 │   │   │   self._wait_fo │                        
                │ ❱ 1615 │   │   │   return self.p │                        
                │   1616 │   │   else:             │                        
                │   1617 │   │   │   return ie_res │                        
                │   1618                           │                        
                │                                  │                        
                │ /root/.cache/pypoetry/virtualenv │                        
                │ s/spotdl-il7asoJj-py3.11/lib/pyt │                        
                │ hon3.11/site-packages/yt_dlp/You │                        
                │ tubeDL.py:1674 in                │                        
                │ process_ie_result                │                        
                │                                  │                        
                │   1671 │   │                     │                        
                │   1672 │   │   if result_type == │                        
                │   1673 │   │   │   self.add_extr │                        
                │ ❱ 1674 │   │   │   ie_result = s │                        
                │   1675 │   │   │   self._raise_p │                        
                │   1676 │   │   │   additional_ur │                        
                │   1677 │   │   │   if additional │                        
                │                                  │                        
                │ /root/.cache/pypoetry/virtualenv │                        
                │ s/spotdl-il7asoJj-py3.11/lib/pyt │                        
                │ hon3.11/site-packages/yt_dlp/You │                        
                │ tubeDL.py:2779 in                │                        
                │ process_video_result             │                        
                │                                  │                        
                │   2776 │   │   │   │   │   })    │                        
                │   2777 │   │   │   │   downloade │                        
                │   2778 │   │   │   │   try:      │                        
                │ ❱ 2779 │   │   │   │   │   self. │                        
                │   2780 │   │   │   │   except Ma │                        
                │   2781 │   │   │   │   │   max_d │                        
                │   2782 │   │   │   │   self._rai │                        
                │                                  │                        
                │ /root/.cache/pypoetry/virtualenv │                        
                │ s/spotdl-il7asoJj-py3.11/lib/pyt │                        
                │ hon3.11/site-packages/yt_dlp/You │                        
                │ tubeDL.py:3247 in process_info   │                        
                │                                  │                        
                │   3244 │   │   │   │   │   if dl │                        
                │   3245 │   │   │   │   │   │   # │                        
                │        partially downloaded with │                        
                │   3246 │   │   │   │   │   │   # │                        
                │ ❱ 3247 │   │   │   │   │   │   s │                        
                │   3248 │   │   │   │   │   │   i │                        
                │   3249 │   │   │   │   │   else: │                        
                │   3250 │   │   │   │   │   │   s │                        
                │                                  │                        
                │ /root/.cache/pypoetry/virtualenv │                        
                │ s/spotdl-il7asoJj-py3.11/lib/pyt │                        
                │ hon3.11/site-packages/yt_dlp/You │                        
                │ tubeDL.py:2970 in dl             │                        
                │                                  │                        
                │   2967 │   │   new_info = self._ │                        
                │   2968 │   │   if new_info.get(' │                        
                │   2969 │   │   │   new_info['htt │                        
                │ ❱ 2970 │   │   return fd.downloa │                        
                │   2971 │                         │                        
                │   2972 │   def existing_file(sel │                        
                │   2973 │   │   existing_files =  │                        
                │                                  │                        
                │ /root/.cache/pypoetry/virtualenv │                        
                │ s/spotdl-il7asoJj-py3.11/lib/pyt │                        
                │ hon3.11/site-packages/yt_dlp/dow │                        
                │ nloader/common.py:444 in         │                        
                │ download                         │                        
                │                                  │                        
                │   441 │   │   │   self.to_screen │                        
                │   442 │   │   │   time.sleep(sle │                        
                │   443 │   │                      │                        
                │ ❱ 444 │   │   ret = self.real_do │                        
                │   445 │   │   self._finish_multi │                        
                │   446 │   │   return ret, True   │                        
                │   447                            │                        
                │                                  │                        
                │ /root/.cache/pypoetry/virtualenv │                        
                │ s/spotdl-il7asoJj-py3.11/lib/pyt │                        
                │ hon3.11/site-packages/yt_dlp/dow │                        
                │ nloader/dash.py:60 in            │                        
                │ real_download                    │                        
                │                                  │                        
                │   57 │   │   │                   │                        
                │   58 │   │   │   args.append([ct │                        
                │   59 │   │                       │                        
                │ ❱ 60 │   │   return self.downloa │                        
                │      idx == 0)                   │                        
                │   61 │                           │                        
                │   62 │   def _resolve_fragments( │                        
                │   63 │   │   fragments = fragmen │                        
                │                                  │                        
                │ /root/.cache/pypoetry/virtualenv │                        
                │ s/spotdl-il7asoJj-py3.11/lib/pyt │                        
                │ hon3.11/site-packages/yt_dlp/dow │                        
                │ nloader/fragment.py:382 in       │                        
                │ download_and_append_fragments_mu │                        
                │ ltiple                           │                        
                │                                  │                        
                │   379 │   │   interrupt_trigger  │                        
                │   380 │   │   max_progress = len │                        
                │   381 │   │   if max_progress == │                        
                │ ❱ 382 │   │   │   return self.do │                        
                │   383 │   │   max_workers = self │                        
                │   384 │   │   if max_progress >  │                        
                │   385 │   │   │   self._prepare_ │                        
                │                                  │                        
                │ /root/.cache/pypoetry/virtualenv │                        
                │ s/spotdl-il7asoJj-py3.11/lib/pyt │                        
                │ hon3.11/site-packages/yt_dlp/dow │                        
                │ nloader/fragment.py:521 in       │                        
                │ download_and_append_fragments    │                        
                │                                  │                        
                │   518 │   │   │   │   if not int │                        
                │   519 │   │   │   │   │   break  │                        
                │   520 │   │   │   │   try:       │                        
                │ ❱ 521 │   │   │   │   │   downlo │                        
                │   522 │   │   │   │   │   result │                        
                │   523 │   │   │   │   │   │   de │                        
                │       fragment['frag_index'], ct │                        
                │   524 │   │   │   │   except Key │                        
                │                                  │                        
                │ /root/.cache/pypoetry/virtualenv │                        
                │ s/spotdl-il7asoJj-py3.11/lib/pyt │                        
                │ hon3.11/site-packages/yt_dlp/dow │                        
                │ nloader/fragment.py:466 in       │                        
                │ download_fragment                │                        
                │                                  │                        
                │   463 │   │   │   │   self.repor │                        
                │   464 │   │   │   │   ctx['last_ │                        
                │   465 │   │   │                  │                        
                │ ❱ 466 │   │   │   for retry in R │                        
                │       error_callback):           │                        
                │   467 │   │   │   │   try:       │                        
                │   468 │   │   │   │   │   ctx['f │                        
                │   469 │   │   │   │   │   if not │                        
                │                                  │                        
                │ /root/.cache/pypoetry/virtualenv │                        
                │ s/spotdl-il7asoJj-py3.11/lib/pyt │                        
                │ hon3.11/site-packages/yt_dlp/uti │                        
                │ ls.py:6141 in __iter__           │                        
                │                                  │                        
                │   6138 │   │   │   self.attempt  │                        
                │   6139 │   │   │   yield self    │                        
                │   6140 │   │   │   if self.error │                        
                │ ❱ 6141 │   │   │   │   self.erro │                        
                │   6142 │                         │                        
                │   6143 │   @staticmethod         │                        
                │   6144 │   def report_retry(e, c │                        
                │        suffix=None):             │                        
                │                                  │                        
                │ /root/.cache/pypoetry/virtualenv │                        
                │ s/spotdl-il7asoJj-py3.11/lib/pyt │                        
                │ hon3.11/site-packages/yt_dlp/dow │                        
                │ nloader/fragment.py:463 in       │                        
                │ error_callback                   │                        
                │                                  │                        
                │   460 │   │   │   def error_call │                        
                │   461 │   │   │   │   if fatal a │                        
                │   462 │   │   │   │   │   ctx['d │                        
                │ ❱ 463 │   │   │   │   self.repor │                        
                │   464 │   │   │   │   ctx['last_ │                        
                │   465 │   │   │                  │                        
                │   466 │   │   │   for retry in R │                        
                │       error_callback):           │                        
                │                                  │                        
                │ /root/.cache/pypoetry/virtualenv │                        
                │ s/spotdl-il7asoJj-py3.11/lib/pyt │                        
                │ hon3.11/site-packages/yt_dlp/dow │                        
                │ nloader/common.py:389 in         │                        
                │ report_retry                     │                        
                │                                  │                        
                │   386 │   def report_retry(self, │                        
                │   387 │   │   """Report retry""" │                        
                │   388 │   │   is_frag = False if │                        
                │ ❱ 389 │   │   RetryManager.repor │                        
                │   390 │   │   │   err, count, re │                        
                │   391 │   │   │   warn=lambda ms │                        
                │   392 │   │   │   error=IDENTITY │                        
                │       Got error: {e}'),          │                        
                │                                  │                        
                │ /root/.cache/pypoetry/virtualenv │                        
                │ s/spotdl-il7asoJj-py3.11/lib/pyt │                        
                │ hon3.11/site-packages/yt_dlp/uti │                        
                │ ls.py:6148 in report_retry       │                        
                │                                  │                        
                │   6145 │   │   """Utility functi │                        
                │   6146 │   │   if count > retrie │                        
                │   6147 │   │   │   if error:     │                        
                │ ❱ 6148 │   │   │   │   return er │                        
                │        else error(str(e))        │                        
                │   6149 │   │   │   raise e       │                        
                │   6150 │   │                     │                        
                │   6151 │   │   if not count:     │                        
                │                                  │                        
                │ /root/.cache/pypoetry/virtualenv │                        
                │ s/spotdl-il7asoJj-py3.11/lib/pyt │                        
                │ hon3.11/site-packages/yt_dlp/dow │                        
                │ nloader/common.py:392 in         │                        
                │ <lambda>                         │                        
                │                                  │                        
                │   389 │   │   RetryManager.repor │                        
                │   390 │   │   │   err, count, re │                        
                │   391 │   │   │   warn=lambda ms │                        
                │ ❱ 392 │   │   │   error=IDENTITY │                        
                │       Got error: {e}'),          │                        
                │   393 │   │   │   sleep_func=sel │                        
                │       'http'),                   │                        
                │   394 │   │   │   suffix=f'fragm │                        
                │       is_frag else None)         │                        
                │   395                            │                        
                │                                  │                        
                │ /root/.cache/pypoetry/virtualenv │                        
                │ s/spotdl-il7asoJj-py3.11/lib/pyt │                        
                │ hon3.11/site-packages/yt_dlp/You │                        
                │ tubeDL.py:1015 in report_error   │                        
                │                                  │                        
                │   1012 │   │   Do the same as tr │                        
                │   1013 │   │   in red if stderr  │                        
                │   1014 │   │   '''               │                        
                │ ❱ 1015 │   │   self.trouble(f'{s │                        
                │        *args, **kwargs)          │                        
                │   1016 │                         │                        
                │   1017 │   def write_debug(self, │                        
                │   1018 │   │   '''Log debug mess │                        
                │                                  │                        
                │ /root/.cache/pypoetry/virtualenv │                        
                │ s/spotdl-il7asoJj-py3.11/lib/pyt │                        
                │ hon3.11/site-packages/yt_dlp/You │                        
                │ tubeDL.py:935 in trouble         │                        
                │                                  │                        
                │    932 │   │   @param is_error   │                        
                │    933 │   │   """               │                        
                │    934 │   │   if message is not │                        
                │ ❱  935 │   │   │   self.to_stder │                        
                │    936 │   │   if self.params.ge │                        
                │    937 │   │   │   if tb is None │                        
                │    938 │   │   │   │   if sys.ex │                        
                │        block                     │                        
                │                                  │                        
                │ /root/.cache/pypoetry/virtualenv │                        
                │ s/spotdl-il7asoJj-py3.11/lib/pyt │                        
                │ hon3.11/site-packages/yt_dlp/You │                        
                │ tubeDL.py:883 in to_stderr       │                        
                │                                  │                        
                │    880 │   │   """Print message  │                        
                │    881 │   │   assert isinstance │                        
                │    882 │   │   if self.params.ge │                        
                │ ❱  883 │   │   │   self.params[' │                        
                │    884 │   │   else:             │                        
                │    885 │   │   │   self._write_s │                        
                │        self._out_files.error, on │                        
                │    886                           │                        
                │                                  │                        
                │ /spotdl/providers/audio/base.py: │                        
                │ 52 in error                      │                        
                │                                  │                        
                │    49 │   │   YTDL uses this to  │                        
                │    50 │   │   """                │                        
                │    51 │   │                      │                        
                │ ❱  52 │   │   raise AudioProvide │                        
                │    53                            │                        
                │    54                            │                        
                │    55 ISRC_REGEX = re.compile(r" │                        
                ╰──────────────────────────────────╯                        
                AudioProviderError: ERROR:                                  
                [download] Got error: HTTP Error                            
                403: Forbidden                                              
                                                                            
                The above exception was the direct                          
                cause of the following exception:                           
                                                                            
                ╭─ Traceback (most recent call las─╮                        
                │ /spotdl/download/downloader.py:5 │                        
                │ 79 in search_and_download        │                        
                │                                  │                        
                │   576 │   │   │   )              │                        
                │   577 │   │   │                  │                        
                │   578 │   │   │   # Download the │                        
                │ ❱ 579 │   │   │   download_info  │                        
                │   580 │   │   │   │   download_u │                        
                │   581 │   │   │   )              │                        
                │   582                            │                        
                │                                  │                        
                │ /spotdl/providers/audio/base.py: │                        
                │ 348 in get_download_metadata     │                        
                │                                  │                        
                │   345 │   │   │   if data:       │                        
                │   346 │   │   │   │   return dat │                        
                │   347 │   │   except Exception a │                        
                │ ❱ 348 │   │   │   raise AudioPro │                        
                │   349 │   │                      │                        
                │   350 │   │   raise AudioProvide │                        
                │   351                            │                        
                ╰──────────────────────────────────╯                        
                AudioProviderError: YT-DLP download                         
                error -                                                     
                https://music.youtube.com/watch?v=Wx                        
                7I4yWJnXI                                        `

@bdim404
Copy link

bdim404 commented Mar 22, 2024

Hello, I have the same problem.
macOS Sonoma 14.4

bdim404$ spotdl https://open.spotify.com/track/7yq4Qj7cqayVTp3FF9CWbm?si=5d3221278a584a95
Processing query:                                                               
https://open.spotify.com/track/7yq4Qj7cqayVTp3FF9CWbm?si=5d3221278a584a95       
AudioProviderError: YT-DLP download error -                                     
https://music.youtube.com/watch?v=MsTWpbR_TVE

@avishkarsaha
Copy link

avishkarsaha commented Mar 25, 2024

I was having this issue too last week. Now I have seen that instead of getting the AudioProviderError from YouTube, the SpotDL download command just hangs at processing query. I opened an issue here: #2050, again seems to be a YouTube rate-limiting issue maybe.

@RottenSchnitzel
Copy link

Same issue for me. No notes from the devs?

@xnetcat
Copy link
Member

xnetcat commented Jul 21, 2024

Looks like an rate limiting issue or issue with yt-dlp, new update coming soon with updated yt-dlp hopefully resolving all audio provider issues

@xnetcat xnetcat closed this as completed Jul 21, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Bug Unexpected problem or unintended behavior that needs to be fixed
Projects
None yet
Development

No branches or pull requests

10 participants