
    uki                        d Z ddlZddlZddlZddlZddlZddlZddlZddl	m
Z
mZmZ ddlmZ ddlmZmZ ddlmZ dd	lmZ dd
lmZ ddlmZ ddlmZmZ ddlmZ ddlmZ ddlmZm Z  ddlm!Z" ddlm#Z$ ddlm%Z%m&Z& ddl'm(Z(m)Z)  e*e      Z+ e*e      Z,d Z-d)dZ.d Z/d Z0d Z1d Z2d Z3d Z4d Z5d Z6 G d de      Z7e7Z8 G d  d!ejr                  jt                        Z;d" Z<d# Z=d*d$Z>d*d%Z?d& Z@d' ZAd( ZBy)+zGNo longer used and new code should not use. Exists only for API compat.    N   )Popendecode_base_npreferredencodingtraverse_obj   )certifi
websockets)make_ssl_context)HTTPHandler)escape_rfc3986)normalize_url)random_user_agentstd_headers)YoutubeDLCookieJar)
PUTRequest)SUPPORTED_ENCODINGSHEADRequest)ProxyHandler)RedirectHandler)make_socks_conn_classupdate_Request)	HTTPErrornetwork_exceptionsc                 F    ddl m}  || |      }|j                  |       |S )Nr	   )load_plugins)pluginsr   update)namesuffix	namespacer   rets        O/home/cdr/jupyterlab/.venv/lib/python3.12/site-packages/yt_dlp/utils/_legacy.pyr   r   #   s$    &
tV
$CSJ    c                 "    t        | ||dd      S )NT)	casesenseis_user_inputtraverse_stringr   )dictnkeysr'   s      r$   traverse_dictr,   *   s    ty^bccr%   c                     t        | |      S )N)table)r   )valuedigitss     r$   decode_baser1   .   s    f--r%   c                  *    t        j                          S )z$ Returns the platform name as a str )platform r%   r$   platform_namer5   2   s    r%   c                      t         j                  dk(  r%t        j                         d   dk\  rt               } nt        j                         } | d} | S )Nwin32r      zutf-8)sysr3   getwindowsversionr   getfilesystemencoding)encodings    r$   get_subprocess_encodingr=   7   sK    
||w3#8#8#:1#=#B %&,,.Or%   c                 B    | dd  }| d d dk7  s|dd dk7  rt        d      dddd	fd
}g }|rA ||d d       }|dd  }|d d }|dd  }|d | }||d  }|dd  }|j                  |||d       |rA|d   d   } ||d d       } ||dd       }	d}
|D ]  }|d   dk(  s|
|d   z  }
 |
st        d      t        t        j                  |
            }|dz   g  fd}t        |	      D ])  }|d z   z  }||   }g }j                  |       t               D ]  }|d|z   |z      }| z  |z   }d}d}|dkD  r ||dz
        }|dkD  r || z
        }|dk(  r	||z   dz  }n|dk(  r	||z   dz  }n|dk(  r|||z   dz	  z   dz  }n~|dk(  ry|}|}d}|dkD  r|dkD  r || z
  dz
        }||z   |z
  }t        ||z
        }t        ||z
        }t        ||z
        }||k  r||k  r	||z   dz  }n||k  r	||z   dz  }n||z   dz  }|j                  |        , ||	fS )N   s   PNG

   s   IHDRzNot a valid PNG file.z>Bz>Hz>I)r   r	   r@   c                 N    t        j                  t        |          |       d   S )Nr   )structunpacklen)xint_maps    r$   <lambda>zdecode_png.<locals>.<lambda>N   s    v}}WSV_a@C r%   )typelengthdatar   rJ   r%   rH   s   IDATzUnable to read PNG data.   c                 (    | z  }| z  }|   |   S Nr4   )idxrE   ypixelsstrides      r$   
_get_pixelzdecode_png.<locals>._get_pixelw   s#    &L6May|r%   r   r	      )OSErrorappend	bytearrayzlib
decompressrangeabs)!png_dataheaderunpack_integerchunksrI   
chunk_type
chunk_dataihdrwidthheightidatchunkdecompressed_datarR   rO   base_posfilter_typecurrent_rowrE   colorbasexleftupabcppapbpcrF   rP   rQ   s!                                 @@@r$   
decode_pngru   F   s   ab\F|11VAa[G5K-..4D)GCNF
r
+BQZ
GV_

 	 $ !9VD48$ED1I&FD "=G#E&M!D" 011!$//$"78QYFF
 6] .&F
#'1k"v &	&A%a(lQ&67EJNEDB1u!%!),1u/a-!t+!4"9"23t;!q5QU"56>A#56AEAIQZQZQZ8b"QY$.E2X"QY$.E"QY$.Eu%M&	&.&` &&  r%   c                      dD ]H  } | t         j                  j                  vs t         j                  j                  j                  |        J y )N)sockssocks4socks4asocks5)urllibparseuses_netlocrU   )schemes    r$   register_socks_protocolsr      s=     ; 4111LL$$++F34r%   c                     | }d|v r:|j                         D ci c]  \  }}|j                         dk7  s|| }}}|d= |S c c}}w )NzYoutubedl-no-compressionzaccept-encoding)itemslower)headersfiltered_headerskvs       r$   handle_youtubedl_headersr      sY    !%55-=-C-C-EhTQVgIgAqDhh78 is
   AAc                 n    t        | t        j                  j                        r| j	                         S | S rM   )
isinstancer{   requestRequestget_full_url)reqs    r$   request_to_urlr      s*    #v~~--.!!
r%   c                     ddl m}m}  |t         ||                   \  } }|*t	        |      dk\  r|d   n|j                  di       }||d<   t        j                  j                  | g|i |S )Nr	   )extract_basic_authsanitize_urlr   r   Authorization)	utilsr   r   
escape_urlrD   
setdefaultr{   r   r   )urlargskwargsr   r   auth_headerr   s          r$   sanitized_Requestr      so    8)*\#5F*GHC Y!^$q'1B1B9b1Q#. >>!!#7777r%   c                        e Zd Z fdZ xZS )YoutubeDLHandlerc                 2    || _         t        |   |i | y rM   )_paramssuper__init__)selfparamsr   r   	__class__s       r$   r   zYoutubeDLHandler.__init__   s    $)&)r%   )__name__
__module____qualname__r   __classcell__)r   s   @r$   r   r      s    * *r%   r   c                   ^    e Zd ZddZd Zej                  j                  j                  Z	eZ
y)YoutubeDLCookieProcessorNc                 X    t         j                  j                  j                  | |       y rM   )r{   r   HTTPCookieProcessorr   )r   	cookiejars     r$   r   z!YoutubeDLCookieProcessor.__init__   s    **33D)Dr%   c                 X    t         j                  j                  j                  | ||      S rM   )r{   r   r   http_response)r   r   responses      r$   r   z&YoutubeDLCookieProcessor.http_response   s!    ~~11??gxXXr%   rM   )r   r   r   r   r   r{   r   r   http_requesthttps_requesthttps_responser4   r%   r$   r   r      s*    EY NN66CCM"Nr%   r   c                     t        | fdt        | j                  d       | j                  d      | j                  d      | j                  d      | j                  d      d| j                  dg       v	      i|S )
Ncontextnocheckcertificateclient_certificateclient_certificate_keyclient_certificate_passwordlegacyserverconnectz
no-certificompat_opts)verifyr   r   r   legacy_supportuse_certifi)YoutubeDLHTTPSHandlerr   get)r   r   s     r$   make_HTTPS_handlerr      s      1A::233!::&:;%zz*BC$*JJ/L$Mzz"78 

="(EE2  
 r%   c                 4    t        j                  | g|i |S rM   )r   communicate_or_kill)rq   r   r   s      r$   process_communicate_or_killr      s    $$Q8888r%   c                 *    t        | t              sJ | S rM   )r   str)sfor_subprocesss     r$   encodeFilenamer      s    aHr%   c                     | S rM   r4   )ro   r   s     r$   decodeFilenamer          Hr%   c                     | S rM   r4   )ro   s    r$   decodeArgumentr      r   r%   c                     | | S t        | t              r| j                  t                     } t        | t              sJ | S rM   )r   bytesdecoder   r   )optvals    r$   decodeOptionr     s=    ~&% 023fc"""Mr%   c                     t        |       S rM   )r   )errs    r$   error_to_compat_strr     s    s8Or%   )T)F)C__doc__r3   rB   r9   urllib.errorr{   urllib.parseurllib.requestrW   _utilsr   r   r   	traversalr   dependenciesr
   r   networking._helperr   networking._urllibr   
networkingr   r   r   r   r   cookiesr   r   r   r   r   PerRequestProxyHandlerr   YoutubeDLRedirectHandlerr   r   networking.exceptionsr   r   boolhas_certifihas_websocketsr   r,   r1   r5   r=   ru   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r4   r%   r$   <module>r      s    M   
     ; ; # . 1 , ' 3 6 ( + A G L B7mj!d.
	f!R48*{ * ) #v~~AA #9
r%   