
    VGhg/                       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jJ                  dejL                        dd             Z'e'dk7  r!de'k  sejL                   de_(         e!d      d dl)Zd dl*m+Z+m,Z,  G d dejZ                        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d/d&d,       ed$d0d&d,       ed$d1d2d1      d3 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d4d&d,       edd4dd,       edd5d&d6       ed7d5d&d,       ed$d8d&d6       ed$d8d2d8      d9d: ed7d;d&d,      id<Z0d=e1d><   e G d? d@ee	             Z2 ee2      dA        Z3y)B    )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   z (unsupported)z7Only curl_cffi versions 0.5.10 and 0.10.x are supported)	CurlECodeCurlOptc                  4     e Zd ZddZd ZddZ fdZ xZS )CurlCFFIResponseReaderc                X    || _         |j                         | _        d| _        d| _        y )N    r   )	_responseiter_content	_iterator_buffer
bytes_read)selfresponses     d/var/www/it7/html/youtubeDownloader/venv/lib/python3.12/site-packages/yt_dlp/networking/_curlcffi.py__init__zCurlCFFIResponseReader.__init__-   s'    !!..0r!   c                     y)NT )r'   s    r)   readablezCurlCFFIResponseReader.readable3   s    r!   c                l   d}	 | j                   r|t        | j                        |k  r{t        | j                   d       }|d | _         n[| xj                  |z  c_        | xj                  t        |      z  c_        | j                   r|bt        | j                        |k  r{|t        | j                        }| j                  d | }| j                  |d  | _        | j                   s| j                  s| j                          d}||r| j                          S S # |r| j                          w w xY w)NTF)r$   lenr%   nextr&   close)r'   sizeexception_raisedchunkdatas        r)   readzCurlCFFIResponseReader.read6   s    	..dlc$,,6G$6NT^^T2=%)DN%3u:- ..dlc$,,6G$6N |4<<(<<&D<<.DL >>$,,

$

  

  s   BD D %A%D D3c                |    | j                   s!| j                  j                          d| _        t        | 	          y )Nr!   )closedr"   r1   r%   super)r'   	__class__s    r)   r1   zCurlCFFIResponseReader.closeP   s*    {{NN  "DLr!   r(   zcurl_cffi.requests.ResponseN)__name__
__module____qualname__r*   r-   r6   r1   __classcell__r:   s   @r)   r   r   ,   s    4 r!   r   c                  4     e Zd ZU ded<   d fdZddZ xZS )CurlCFFIResponseAdapterr   fpc                z    t         |   t        |      |j                  |j                  |j
                         y )N)rD   headersurlstatus)r9   r*   r   rF   rG   status_code)r'   r(   r:   s     r)   r*   z CurlCFFIResponseAdapter.__init__Z   s6    %h/$$''	 	 	)r!   c                   	 | j                   j                  |      S # t        j                  j                  j
                  $ r}|j                  t        j                  k(  rz|j                  xr. t        |j                  j                  j                  d            }t        | j                   j                  ||| j                   j                  z
  nd |      |t        |      |d }~ww xY w)NzContent-Length)partialexpectedcauserM   )rD   r6   r   requestserrorsRequestsErrorcoder   PARTIAL_FILEr(   r   rF   getr   r&   r   )r'   amtecontent_lengths       r)   r6   zCurlCFFIResponseAdapter.reada   s    		177<<$$!!((66 	1vv///!"!eAJJ<N<N<R<RSc<d0e$ GG..DRD^^dgg.@.@@dh #$$ !q)q0	1s    'C-B$C((C-r;   r<   )r=   r>   r?   __annotations__r*   r6   r@   rA   s   @r)   rC   rC   W   s    )
1r!   rC   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
safari15_3
safari15_511611914120123124z17.0z17.2ios)	chrome116	chrome119	chrome120	chrome123	chrome124
safari17_0safari17_2_ios13113315firefoxz18.0)rq   rr   r{   r|   r}   r~   	chrome131chrome131_android
chrome133a
firefox133
safari18_0safari18_0_ios
firefox135135))r   r   )r      r   	   r   z3dict[tuple[int, ...], dict[str, ImpersonateTarget]]BROWSER_TARGETSc            
         e Zd ZdZdZej                  ej                  fZdZ	 e
 eej                  j                  d ej!                         D              d d            j!                         D  ci c].  \  }}|t"        dk\  r|nt$        j&                  j(                  |   0 c}}}}} Zdd	Zfd
ZdfdZddZxZS c c}}}}} w )
CurlCFFIRHr   )httphttps)r   r   socks4socks4asocks5socks5hc              #  T   K   | ]   \  }}t         |k\  r|j                          " y wr<   )curl_cffi_versionitems).0versiontargetss      r)   	<genexpr>zCurlCFFIRH.<genexpr>   s,      F
  G+ MMOF
s   &(c                    | d   j                   dvdj                  | d   j                        | d   j                  rt	        | d   j                        nd| d   j                   fS )Nr   )ry   r]   )rd   r   re   rY   r   )osindexclientr   float)xs    r)   <lambda>zCurlCFFIRH.<lambda>   sW    aDGG--399!A$++F#$Q4<<E!A$,,QaDGG	
 r!   T)keyreverser   c                B    t         j                  j                  |      S )N)cookies)r   rO   Session)r'   	cookiejars     r)   _create_instancezCurlCFFIRH._create_instance   s    !!))))<<r!   c                    t         |   |       |j                  dd        |j                  dd        |j                  dd        |j                  dd        y )Nimpersonater   timeout
legacy_ssl)r9   _check_extensionspop)r'   
extensionsr:   s     r)   r   zCurlCFFIRH._check_extensions   sJ    !*-}d+{D)y$' 	|T*r!   c                    | j                  |      }	 t        | 	  |      }||j
                  d<   |S # t        $ r}||j                  j
                  d<    d }~ww xY w)Nr   )_get_request_targetr9   sendr   r(   r   )r'   requesttargetr(   rV   r:   s        r)   r   zCurlCFFIRH.send   sf    ))'2	w|G,H .4M*	  	39AJJ!!-0	s   4 	AAAc                N
   d}| j                  d|j                  vr| j                  |      nd       }| j                  r*|j                  j                  t        j                  d       | j                  |      }d|v r?|j                  j                  t        j                  |d          |j                  dd        t        |j                  |      }|r6|j                  j                  t        j                  |       t        j                  j!                  |j                        j"                  j%                         }|dk7  r*|j                  j                  t        j&                  d       |j                  j                  t        j(                  t+        j,                                | j.                  sT|j                  j                  t        j0                  d       |j                  j                  t        j2                  d       | j5                  |      }| j6                  r|j                  j                  t        j8                  | j6                  d	          | j6                  j;                  d
      }| j6                  j;                  d      }	|r*|j                  j                  t        j<                  |       |	r*|j                  j                  t        j>                  |	       | jA                  |      }
|j                  j                  t        jB                  d       |j                  j                  t        jD                  tG        jH                  |
             	 |jK                  |jL                  |j                  ||jN                  | j.                  d|
|
f| jP                  j;                  | jS                  |            | jT                  d
      }tw        |      }d|jx                  cxk  rdk  sn t{        ||      |S # tV        jX                  jZ                  j\                  $ r}|j^                  t`        jb                  k(  rte        |      ||j^                  t`        jf                  k(  rti        |      ||j^                  t`        jj                  k(  rd}|jl                  }na|j^                  t`        j                  k(  s*|j^                  t`        jn                  k(  rdtq        |      v rts        |      |tu        |      |Y d }~?d }~ww xY w)NFcookie)r   r   no)proxiesr   r   client_certificateclient_certificate_keyclient_certificate_passwordr   T)
methodrG   rF   r5   verifymax_redirectsr   r   	interfacestreamrN   CONNECT   i,  )redirect_loop)>_get_instancerF   _get_cookiejarverbosecurlsetoptr   VERBOSE_get_proxiesNOPROXYr   r   rG   PROXYurllibparseurlparseschemelowerHTTPPROXYTUNNELPROXY_CAINFOr   wherer   PROXY_SSL_VERIFYPEERPROXY_SSL_VERIFYHOST_get_impersonate_headers_client_certSSLCERTrT   SSLKEY	KEYPASSWD_calculate_timeoutLOW_SPEED_LIMITLOW_SPEED_TIMEmathceilr   r   r5   !_SUPPORTED_IMPERSONATE_TARGET_MAPr   source_addressr   rO   rP   rQ   rR   r   PEER_FAILED_VERIFICATIONr   SSL_CONNECT_ERRORr   TOO_MANY_REDIRECTSr(   
RECV_ERRORstrr   r   rC   rH   r   )r'   r   max_redirects_exceededsessionr   proxyr   rF   r   r   r   curl_responserV   r(   s                 r)   _sendzCurlCFFIRH._send   s   !&.2.@.@6>goo6Ud))'2[_ /A /a <<LL3##G,7?LL?KKd# W[[':LLu5\\**7;;7>>DDFF ##G$;$;Q? LL 4 4gmmoF;;##G$@$@!D##G$@$@!D//8LL1B1BCW1XY%)%6%6%:%:;S%T"*.*;*;*?*?@]*^'%##GNN4JK*##G$5$57RS))'2 	G33Q7G22DIIg4FG	5#OO~~KK\\{{ '* BBFF,,W57-- , M@ +=9hoo++H4JKK1 !!((66 	5vv;;;,151<9666Q'Q.9777)-& !

 )//)FFi222yCF7J q)q0$1-14 	5s   )A7P 'T$8C!TT$r<   )r   r	   returnr
   )r   r	   )r=   r>   r?   RH_NAME_SUPPORTED_URL_SCHEMESr   NO_PROXY	ALL_PROXY_SUPPORTED_FEATURES_SUPPORTED_PROXY_SCHEMESdictsorted	itertoolschainfrom_iterabler   r   r   r   rO   BrowserTyper   r   r   r   r   r@   )r   namer   r   r   r:   s   00000@r)   r   r      s    G.#,,h.@.@AZ !	(E(E F
$3$9$9$;F
 )
	
 "   %') )D& 	)V39K9K9W9WX\9]])%$=+[Q)s   83C	r   c                     y)Nir,   )rhr   s     r)   curl_cffi_preferencer  '  s    r!   )4
__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   rC   r   rX   r   r  r,   r!   r)   <module>r     s   " 	   	  ' +   F - 
2
33 #c8288Iy7L7L#Mbq#QRS 
"76G+G$-$9$9#:.!II
O
PP  .(RYY (V1h 16 &hiF-hiN&x	4H&x	4H&x	4H&x	4H&x	4H#FD)TB$VUItD'&'4H'&'4H 'x	4H&xF&xF&xF&xF'&'4H+HfeVL (&'4H'&'4H&xF&xF&xF&xF&xF.x	4P'%$G'	5'4H'&'4H+HfeVL 	'	5'4HK(HD (V H*,> H HV Z  !r!   