
    Ği@                         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
 ddlmZmZmZmZmZmZ ddlmZ  G d	 d
e          ZdS )    N   )FileDownloader   )Request)CertificateVerifyError	HTTPErrorTransportError)ContentTooShortErrorRetryManagerThrottledDownloadint_or_noneparse_http_rangetry_call)HTTPHeaderDictc                       e Zd Zd ZdS )HttpFDc                    
 d                              dd           i                                }||d<    G d dt                    } |            |_                             |          _        d _        t          ddi                     d                     j                             d	d
          r j	        nD j                             d          p*                     di                                d          pdd_
        d_         j                             dd          _        t          j                    _        t                               d                    \  } j                             dd          rMt           j                            j                  r)t           j                            j                  _        j        dk    _         G d dt*                     G d dt*                     G d dt*                    
 fd}fd
 fd}t-           j                             d           j                  D ]f}	  |              |            c S # $ r}	|	j        |_        Y d }	~	/d }	~	w
$ r d |_        |xj        dz  c_        Y P$ r Y  dS                 xY wd
S )Nurlrequest_dataimpersonatec                   8    e Zd Zej        Zej        Zej        Z	dS )-HttpFD.real_download.<locals>.DownloadContextN)
__name__
__module____qualname__dictget__getattr____setitem____setattr____delitem____delattr__     [C:\Users\betacode\Desktop\descargarYoutube\venv\Lib\site-packages\yt_dlp/downloader/http.pyDownloadContextr       s%        (K*K*KKKr$   r&   zAccept-Encodingidentityhttp_headerstestFhttp_chunk_sizedownloader_optionsr   wb
buffersizei   Range
continuedlTc                       e Zd ZdS )-HttpFD.real_download.<locals>.SucceedDownloadNr   r   r   r#   r$   r%   SucceedDownloadr1   B           Dr$   r3   c                       e Zd Zd ZdS )+HttpFD.real_download.<locals>.RetryDownloadc                     || _         d S N)source_error)selfr9   s     r%   __init__z4HttpFD.real_download.<locals>.RetryDownload.__init__F   s    $0!!!r$   N)r   r   r   r;   r#   r$   r%   RetryDownloadr6   E   s#        1 1 1 1 1r$   r<   c                       e Zd ZdS )*HttpFD.real_download.<locals>.NextFragmentNr2   r#   r$   r%   NextFragmentr>   I   r4   r$   r?   c            	        	
 s'r%t          j        t          dz                      n_        j        dk    r7j        

z  
j        r                    j                   d_        n
nj        dk    rd
nd 
d_        j        r"
j        z   dz
  } | nt          |           	n	nd 	t          	
fd          r-d_        d_         t          d
 d		 d
                    t          	fd          r
j        dz
  	t                    }
d u}|r,dt          
           dt          	          pd |j        d<   	 j                            |          _        |rj        j                            d          }t'          |          \  }}}
|k    r>j        r|	k    s|	k     r+|_        |srt          |pp|          pdz
  _        d S 
dk    r                                 d_        d_        t          j        j                            dd                     x_        _        d S # t,          $ r_}|j        dk    r,	 j                            t                              _        j        j        d         }|j        dz
  t          |          cxk     rj        dz   k     rin nf                    j                                       j        j                                       j        dj        j        d                                            d_        d_        Y d }~d S # t,          $ r!}|j        dk     s|j        dk    r Y d }~nd }~ww xY w|j        dk     s|j        dk    r  |          d }~wt:          $ r  t<          $ r} |          d }~ww xY w)Ngffffff?r   abFr   c                       k    S r8   r#   )	range_endrange_starts   r%   <lambda>zDHttpFD.real_download.<locals>.establish_connection.<locals>.<lambda>i   s    i 7 r$   r,   zConflicting range. (start=z > end=)c                       j         k    S r8   )content_len)ctxrC   s   r%   rE   zDHttpFD.real_download.<locals>.establish_connection.<locals>.<lambda>n   s    	S_ < r$   )
extensionszbytes=- r.   zContent-RangeContent-lengthi  zContent-Lengthd   finished)filenamestatusdownloaded_bytestotal_bytesi  iX  )randomrandintint
chunk_size
resume_len	is_resumereport_resuming_byte	open_modeminr   	ExceptionrH   r   r   headersydlurlopendatar   r   data_lenreport_unable_to_resumer   rQ   report_file_already_downloadedrP   
try_renametmpfilename_hook_progressr   r	   )chunk_aware_endrequest	has_rangecontent_rangecontent_range_startcontent_range_endrH   errcontent_lengthrC   rD   r<   r3   rW   rI   r^   	info_dictis_testreq_end	req_startr   request_extensionsr:   r   s            @@r%   establish_connectionz2HttpFD.real_download.<locals>.establish_connectionL   s
   %,L1;LfnSd1B-C-CZPPPAK N~!!!n(9,K= >--cn=== $&'!##"!CM~ !"-">"B/6OOCY`DaDa		$#		 	7777788 n!" $#mI.k;.k.k_h.k.k.k$l$lmmm<<<<<== 0Oa/	c<EWXXXG#4/I f+eC4D4D+e+e{S\G]G]Gcac+e+e(J)8++G44  )$'H$4$8$8$I$IMJZ[hJiJiG'):K"&999 # :
  1I==*Y66*5& r' r+.{/EgwG]R]+^+^bkbpop+qCL %q44666%&CN$(CM1<SX=M=Q=QRbdh=i=i1j1jjs () () ():$$!##'8#3#3#Cw??$A $A),)9:J)K +6%(^c%9C<O<O%f%f%f%fRUR`cfRf%f%f%f%f%f !??MMM OOCOS\JJJ //,/L*447N/2~	1 1
  )* * * #21 !88:::-.CN,0CM"FFFFF9 % " " ":++szS/@/@! 0A/@/@/@/@": Z#%%s):):#mC((()   ! ) ) )#mC((()sX   %BI <A!I O+*O7A M47B7O4
N>NON%OO+O&&O+c                  p     j         - j        dk    r j                                          d  _         d S d S )NrK   )streamrf   close)rI   s   r%   close_streamz*HttpFD.real_download.<locals>.close_stream   s?    z%?c))J$$&&&!


 &%r$   c                     j         j                            d          } j         j                            d          rd } r!| t          |           j        k    rj        } | t          |           j        z   } j                            d          }j                            d          }|$| |k     r                    d|  d| d           dS |$| |k    r                    d	|  d
| d           dS dj        z   j        }t          j	                    }d }|}fd}	 	 j         
                    s|nt          || z
                      }n"# t          $ r}	 ||	           Y d }	~	nd }	~	ww xY wt          |          z  t          |          dk    rnj        	                     j        j                  \  _        _        j        J                     j                  _                            j                   n0# t*          $ r#}	                    d|	            Y d }	~	dS d }	~	ww xY w	 j                            |           nE# t*          $ r8}	                    d                               d|	            Y d }	~	dS d }	~	ww xY w                    ||j        z
             t          j	                    }|}
j                            dd          s&                    |
|z
  t          |                    }|
}                    ||j        z
            }j        d }n>                    |t          j	                    j        j        z
  j        z
            }                    dj        j        j        |||j        z
                      d          d	           | | k    rn}|rp|j                            d          pdk     rPj         |_         nJ|j         z
  dk    r2j        $j        dk    rj        !                                 tD          n	|rd _         1j        ,                    d                               d           dS s"j#        rj$        j$        k     r	_        j        dk    rj        !                                 | .| k    r(tK          t          |                     }	 ||	           &                    j        j                   j                            d          r<'                    j        j         j                            dd                     d<                       j        dt          j	                    j        z
                      d          d           dS )NrM   zContent-encodingmin_filesizemax_filesizez/[download] File is smaller than min-filesize (z	 bytes < z bytes). Aborting.Fz.[download] File is larger than max-filesize (z	 bytes > r   c                                   j         dk    r_        nB	 t          j                            j                   _        n# t
          $ r
 d_        Y nw xY w |           )NrK   r   )rf   rX   ospathgetsizeFileNotFoundError)er<   byte_counterry   rI   s    r%   retryz5HttpFD.real_download.<locals>.download.<locals>.retry   sx    ?c))%1CNN+)+)I)I, + + +)*+#mA&&&s   )A
 
AATzunable to open for writing: 
zunable to write data: noresizebufferdownloadingctx_id)	rQ   rR   rS   rf   rP   etaspeedelapsedr   throttledratelimit   rK   zDid not get any data blocks
updatetimezlast-modifiedfiletimerO   )rR   rS   rP   rQ   r   r   )(ra   r^   r   rV   _TEST_FILE_SIZErX   params	to_screen
block_sizetimereadr\   r	   lenrw   sanitize_openrf   r[   undo_temp_namerP   report_destinationOSErrorreport_errorwrite	to_stderr	slow_downbest_block_size
calc_speedrb   calc_etarg   
start_timethrottle_startrx   r   rW   rH   r
   re   	try_utime)rb   min_data_lenmax_data_lenr   startnowbeforer   
data_blockrn   afterr   r   r   r?   r<   ry   rI   rp   rq   r:   s                @r%   downloadz&HttpFD.real_download.<locals>.download   s   x'++,<==Hx##$677      0H,H@T0T0T/#x==3>9#{~>>#{~>>+<0G0GNN~8~~^j~~~@ @ @ 5+<0G0GNN}(}}]i}}}   5s~-LJIKKE CF	' 	' 	' 	' 	' 	' 	' 	'M.!$/vzzcR\^fiu^uNvNv!w!wJJ%   E#JJJJJJJJ J/ z??a'' :%%6:6H6HOS]7< 7<3
CO"z555'+':':3?'K'K//====" % % %))*N*N*NOOO$uuuuu%!J$$Z0000 ! ! !NN4(((%%&Ds&D&DEEE 55555! uc<#.+HIII ikk {'7?? W!%!5!5efnc*oo!V!VJ sL3>4QRR<'CC--ty{{CL3><Y[gjmjx[xyyC##+(4#&<#&? #""S^3'mmH55
% 
% 
 
 
 'LH,D,D 
.Udkoo6J&K&K&PqQQ )1-0**s11A55:1co6L6LJ,,...// 6  .)-C&[M.^ z!t$$$!!"?@@@u #s~ ##/2MR^adapRpRp!-""#%%
  """#(@(@*<XGGc


OOCOS\::: {|,, r(,s|SXEUEYEYZikoEpEp(q(q	*%$0+L$9;;7#--11! !    4sI   1/E! !
F +E;;F 2A/H" "
I,I

II. .
J08-J++J0retriesr   )r   _get_impersonate_targetr   rP   	temp_namerf   rw   r   r   r   r[   rX   r   r   r   r   r~   r   isfiler   rY   r]   r   report_retryr9   errorattempt)r:   rP   rp   impersonate_targetr&   _ru   r   r   rn   r?   r<   r3   rW   ry   rI   r^   rq   rr   rs   r   rt   r   s   ` `       @@@@@@@@@@@@@r%   real_downloadzHttpFD.real_download   s    }}^T::!99)DD)0B}-	+ 	+ 	+ 	+ 	+d 	+ 	+ 	+
 o..22
 !"3Z!@)--P^B_B_``+//&%00-4 T))KOO-.. }}1266::;LMM 	
 t<< !1W1E1E F F	7A;??<.. 	Bw~~co.. B!#!A!A*	 	 	 	 	i 	 	 		1 	1 	1 	1 	1I 	1 	1 	1	 	 	 	 	9 	 	 	t	) t	) t	) t	) t	) t	) t	) t	) t	) t	) t	) t	) t	) t	) t	) t	) t	)l	" 	" 	" 	" 	"^	 ^	 ^	 ^	 ^	 ^	 ^	 ^	 ^	 ^	 ^	@ "$+//)"<"<d>OPP 	 	E$$&&&xzz!!!    !.   """   tttus$   J##K.(J99K.K."K.N)r   r   r   r   r#   r$   r%   r   r      s(        ` ` ` ` `r$   r   )r~   rT   r   commonr   
networkingr   networking.exceptionsr   r   r	   utilsr
   r   r   r   r   r   utils.networkingr   r   r#   r$   r%   <module>r      s   				   " " " " " "                     
                . - - - - -a a a a a^ a a a a ar$   