
    Şi3                    B   U d dl m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	 ddl
mZ ddlmZmZmZmZmZ ddlmZmZmZmZmZmZ dd	lmZmZ dd
lmZmZ ddlm Z  e e!d           e" e#e$ ej%        dej&                  dd                             Z'e'dk    r)de'cxk    rdk     sn ej&         de_(         e!d          d dl)Zd dl*m+Z+m,Z,  G d dej-                  Z. G d de          Z/ edddd           edddd           edddd           edd dd           edd!dd           edd"dd           edd#dd           ed$ddd           ed$d dd           ed%d&d'd(           ed%d)d'd          d* edd+dd           edd,d'd-           edd.d'd-           edd/d'd-           edd0d'd-           ed%d1d'd-           ed%d2d3d2          d4 ed%d&d'd-           ed%d)d'd-           edd,d'd-           edd.d'd-           edd/d'd-           edd0d'd-           edd5d'd-           edd5dd-           edd6d'd7           ed8d6d'd-           ed%d9d'd7           ed%d9d3d9          d:d; ed8d<d'd-          i ed=d>d'd-           ed%d?d'd7           ed%d?d3d?           edd@d'd7          dA ed%dBd'dC           ed%dBd3dB          dDdEZ0dFe1dG<   dHdIdJdKdLdMdNZ2e G dO dPee	                      Z3 ee3          dQ             Z4dS )R    )annotationsN   )InstanceStoreMixin   )select_proxy)FeaturesRequestResponseregister_preferenceregister_rh)CertificateVerifyError	HTTPErrorIncompleteRead
ProxyErrorSSLErrorTransportError)ImpersonateRequestHandlerImpersonateTarget)	curl_cfficertifi)int_or_nonezcurl_cffi is not installedz[^\d]+   )r      
   r   r   )r      z (unsupported)zFOnly curl_cffi versions 0.5.10 and 0.10.x through 0.14.x are supported)	CurlECodeCurlOptc                  4     e Zd ZddZd Zd	dZ fdZ xZS )
CurlCFFIResponseReaderresponsecurl_cffi.requests.Responsec                b    || _         |                                | _        d| _        d| _        d S )N    r   )	_responseiter_content	_iterator_buffer
bytes_read)selfr!   s     `C:\Users\betacode\Desktop\descargarYoutube\venv\Lib\site-packages\yt_dlp/networking/_curlcffi.py__init__zCurlCFFIResponseReader.__init__-   s.    !!..00r$   c                    dS )NT )r*   s    r+   readablezCurlCFFIResponseReader.readable3   s    tr$   Nc                H   d}	 | j         r|t          | j                  |k     rmt          | j         d           }|d | _         nN| xj        |z  c_        | xj        t          |          z  c_        | j         r|Ut          | j                  |k     m|t          | j                  }| j        d |         }| j        |d          | _        | j         s| j        s|                                  d}||r|                                  S S # |r|                                  w w xY w)NTF)r'   lenr(   nextr)   close)r*   sizeexception_raisedchunkdatas        r+   readzCurlCFFIResponseReader.read6   s8   	. .dlc$,6G6G$6N6NT^T22=%)DN%3u::- . .dlc$,6G6G$6N6N |4<((<&D<.DL > $, 

$ 

 

s   C,D D!c                    | j         s | j                                         d| _        t	                                                       d S )Nr$   )closedr%   r3   r(   super)r*   	__class__s    r+   r3   zCurlCFFIResponseReader.closeP   s=    { 	N  """DLr$   r!   r"   N)__name__
__module____qualname__r,   r/   r8   r3   __classcell__r<   s   @r+   r    r    ,   so                4        r$   r    c                  4     e Zd ZU ded<   d fdZd	dZ xZS )
CurlCFFIResponseAdapterr    fpr!   r"   c                    t                                          t          |          |j        |j        |j                   d S )N)rF   headersurlstatus)r;   r,   r    rH   rI   status_code)r*   r!   r<   s     r+   r,   z CurlCFFIResponseAdapter.__init__Z   sJ    %h//$'	 	 	) 	) 	) 	) 	)r$   Nc                   	 | j                             |          }| j         j        r|                                  |S # t          j        j        j        $ r}|j        t          j
        k    ra|j        o+t          |j        j                            d                    }t          | j         j        ||| j         j        z
  nd |          |t#          |          |d }~ww xY w)NzContent-Length)partialexpectedcauserO   )rF   r8   r:   r3   r   requestserrorsRequestsErrorcoder   PARTIAL_FILEr!   r   rH   getr   r)   r   )r*   amtresecontent_lengths        r+   r8   zCurlCFFIResponseAdapter.reada   s    	1',,s##Cw~ 

J!(6 	1 	1 	1v///!"!eAJ<N<R<RSc<d<d0e0e$ G.DRD^^dg.@@@dh   #$$ !q)))q0	1s   ;> C#BCC#r=   r>   )r?   r@   rA   __annotations__r,   r8   rB   rC   s   @r+   rE   rE   W   s_         ) ) ) ) ) )1 1 1 1 1 1 1 1r$   rE   chrome99windows10android12100101104107110edgesafariz15.3macos11z15.5)chrome99chrome99_android	chrome100	chrome101	chrome104	chrome107	chrome110edge99edge101	safari153	safari15511611914120123124z17.0z17.2ios)	chrome116	chrome119	chrome120	chrome123	chrome124	safari170safari172_ios13113315firefoxz18.0)rt   ru   r~   r   r   r   	chrome131chrome131_android
chrome133a
firefox133	safari180safari180_ios
firefox135135torz14.5z18.4136)tor145	safari184safari184_ios	chrome136z26.026)	safari260safari260_ios))r   r   )r      r   	   r   r      )r      z3dict[tuple[int, ...], dict[str, ImpersonateTarget]]BROWSER_TARGETS
safari15_3
safari15_5
safari17_0safari17_2_ios
safari18_0safari18_0_ios)rt   ru   r   r   r   r   c            
      2    e Zd ZdZdZej        ej        fZdZ	d  e
 eej                            d e                                D                       d d                                                    D             Zdd
Z fdZd fdZddZ xZS )
CurlCFFIRHr   )httphttps)r   r   socks4socks4asocks5socks5hc                    i | ]i\  }}|t           d k    r|nUt           dk    rt                              ||          n/t          j        j        t                              ||                   jS )r   r   )curl_cffi_version_TARGETS_COMPAT_LOOKUPrV   r   rQ   BrowserType).0nametargets      r+   
<dictcomp>zCurlCFFIRH.<dictcomp>   s     ) ) )
 dF	 	%00DD;LPV;V;V'++D$777#/0F0J0J4QU0V0VW	) ) )r$   c              #  Z   K   | ]&\  }}t           |k    |                                V  'd S r>   )r   items)r   versiontargetss      r+   	<genexpr>zCurlCFFIRH.<genexpr>   sI       H
 H
  G++ MMOO++++H
 H
r$   c                    | d         j         dvd                    | d         j                  | d         j        rt	          | d         j                  nd| d         j         fS )Nr   )r|   r`   )r   rg   r   rh   r\   r   )osindexclientr   float)xs    r+   <lambda>zCurlCFFIRH.<lambda>   sY    aDG--:@@1MM#$Q4<6E!A$,QaDG	
 r$   T)keyreverseNc                B    t           j                            |          S )N)cookies)r   rQ   Session)r*   	cookiejars     r+   _create_instancezCurlCFFIRH._create_instance   s    !))))<<<r$   c                    t                                          |           |                    dd            |                    dd            |                    dd            |                    dd            d S )Nimpersonater   timeout
legacy_ssl)r;   _check_extensionspop)r*   
extensionsr<   s     r+   r   zCurlCFFIRH._check_extensions   ss    !!*---}d+++{D)))y$''' 	|T*****r$   requestr	   returnr
   c                    |                      |          }	 t                                          |          }n"# t          $ r}||j        j        d<    d }~ww xY w||j        d<   |S )Nr   )_get_request_targetr;   sendr   r!   r   )r*   r   r   r!   rY   r<   s        r+   r   zCurlCFFIRH.send   sw    ))'22	ww||G,,HH 	 	 	39AJ!-0	 .4M*s   !: 
AAAc                d	   d}|                      d|j        vr|                     |          nd           }| j        r%|j                            t          j        d           |                     |          }d|v rA|j                            t          j	        |d                    |
                    dd            t          |j        |          }|r|j                            t          j        |           t          j                            |j                  j                                        }|dk    r%|j                            t          j        d           |j                            t          j        t+          j                               | j        sJ|j                            t          j        d           |j                            t          j        d           |                     |          }| j        r|j                            t          j        | j        d	                    | j                            d
          }| j                            d          }	|r%|j                            t          j        |           |	r%|j                            t          j        |	           |                      |          }
|j                            t          j!        d           |j                            t          j"        tG          j$        |
                     	 |%                    |j&        |j        ||j'        | j        d|
|
f| j(                            | )                    |                    | j*        d
  
        }n# tV          j,        j-        j.        $ r}|j/        t`          j1        k    rte          |          ||j/        t`          j3        k    rti          |          ||j/        t`          j5        k    r
d}|j6        }n]|j/        t`          j        k    s&|j/        t`          j7        k    r"dtq          |          v rts          |          |tu          |          |Y d }~nd }~ww xY wtw          |          }d|j<        cxk    rdk     sn t{          ||          |S )NFcookie)r   r   no)proxiesr   r   client_certificateclient_certificate_keyclient_certificate_passwordr   T)
methodrI   rH   r7   verifymax_redirectsr   r   	interfacestreamrP   CONNECT   i,  )redirect_loop)>_get_instancerH   _get_cookiejarverbosecurlsetoptr   VERBOSE_get_proxiesNOPROXYr   r   rI   PROXYurllibparseurlparseschemelowerHTTPPROXYTUNNELPROXY_CAINFOr   wherer   PROXY_SSL_VERIFYPEERPROXY_SSL_VERIFYHOST_get_impersonate_headers_client_certSSLCERTrV   SSLKEY	KEYPASSWD_calculate_timeoutLOW_SPEED_LIMITLOW_SPEED_TIMEmathceilr   r   r7   !_SUPPORTED_IMPERSONATE_TARGET_MAPr   source_addressr   rQ   rR   rS   rT   r   PEER_FAILED_VERIFICATIONr   SSL_CONNECT_ERRORr   TOO_MANY_REDIRECTSr!   
RECV_ERRORstrr   r   rE   rJ   r   )r*   r   max_redirects_exceededsessionr   proxyr   rH   r   r   r   curl_responserY   r!   s                 r+   _sendzCurlCFFIRH._send   sd   !&.2.@.@6>go6U6Ud))'222[_ /A /a /a < 	4L333##G,,7??L???KKd### W['::: 	ELu555\**7;77>DDFFF ##G$;Q??? L 4gmooFFF; E##G$@!DDD##G$@!DDD//88 	TL1BCW1XYYY%)%6%:%:;S%T%T"*.*;*?*?@]*^*^'% L##GN4JKKK* T##G$57RSSS))'22 	G3Q777G2DIg4F4FGGG	5#OO~K\{ '* BFF,,W557 7- ,  MM !(6 	5 	5 	5v;;;,15551<9666Q'''Q.9777)-& !
 )/))Fi222yCFF7J7J q)))q0$1---14 	5& +=99ho++++++++H4JKKKKs   (A%N Q9'CQ44Q9r>   )r   r	   r   r
   )r   r	   )r?   r@   rA   RH_NAME_SUPPORTED_URL_SCHEMESr   NO_PROXY	ALL_PROXY_SUPPORTED_FEATURES_SUPPORTED_PROXY_SCHEMESdictsorted	itertoolschainfrom_iterabler   r   r  r   r   r   r  rB   rC   s   @r+   r   r      sC       G.#,h.@AZ) )
 #d66)/*G*G H
 H
$3$9$9$;$;H
 H
 H
 +
 +
	
 	
 $ $ $    %''%) ) )%*= = = =+ + + + +     [ [ [ [ [ [ [ [r$   r   c                    dS )Nir.   )rhr   s     r+   curl_cffi_preferencer  B  s    4r$   )5
__future__r   ior  r   reurllib.parser   _helperr   utils.networkingr   commonr   r	   r
   r   r   
exceptionsr   r   r   r   r   r   r   r   r   dependenciesr   r   utilsr   ImportErrortuplemapintsplit__version__r   _yt_dlp__versioncurl_cffi.requestscurl_cffi.constr   r   IOBaser    rE   r   r[   r   r   r  r.   r$   r+   <module>r/     sH   " " " " " " " 				      				     ' ' ' ' ' ' + + + + + +                             F E E E E E E E - - - - - - - -      
+2
3
33 E##c828Iy7L#M#Mbqb#QRRSS 
""76G+Q+Q+Q+Q'+Q+Q+Q+Q$-$9!I!I!II
+^
_
__     . . . . . . . .( ( ( ( (RY ( ( (V1 1 1 1 1h 1 1 1< &%hiFF--hiNN&&x	4HH&&x	4HH&&x	4HH&&x	4HH&&x	4HH##FD)TBB$$VUItDD&&x$GG&&x$GG  '&x	4HH&&xFF&&xFF&&xFF&&xFF&&x$GG**8VUFKK  '&x$GG&&x$GG&&xFF&&xFF&&xFF&&xFF&&xFF..x	4PP''%$GG''	5'4HH&&x$GG**8VUFKK  	''	5'4HH $#E67DAA&&x$GG**8VUFKK&&xFF	  '&x$GG**8VUFKK ]2H 2H 2 2 2 2n %%   K K K K K*,> K K K\ Z    !   r$   