B
    bÉß]c  ã            	   @   sJ   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 d	dd„Z	dS )
é    Né   )Úutilsé   Té   c             C   sÚ  |	p
t  ¡ }	|si }n
t |¡}|rä|r¼tj |¡r¼tj |¡}|	 d 	||¡¡ ||7 }|rl| j
|7  _
|d |krŒ|	 d 	|¡¡ dS ||kr¼|	 d 	||¡¡ d}|r¼| j
|8  _
|	 d||f ¡ d||f |d	 d
< n|	 d¡ d}|	 d 	| |¡¡ tjj| f|Ž}ytjj||d}W n‚ tjjk
rª } z^|jdkr˜|
dkr”|	 d 	|
d ¡¡ t d¡ t| |||||||||	|
d ƒS ‚ n‚ W dd}~X Y nX |sÚtj |¡rÚ|	 d 	|¡¡ t |¡ t|dƒâ}|rø|| }nRy*| ¡ }t|jd ƒ}|	 d 	|¡¡ W n& tttfk
rH   |	 d¡ Y nX d}t ¡ }d}d}xb|r0d|kr‚|	 d¡ tƒ ‚d|kršt d¡ qbd|kr0t ¡ }|| }|dkr0|| | |d kr(|| |d  }|	 d 	t  || ¡t j |ddd t  |d ¡¡¡ t |¡ qbn|}|}y| !|¡}W nH t"k
r† } z(|	 t#|ƒ¡ |rt| j
|8  _
‚ W dd}~X Y nX |sP |t$|ƒ7 }|r´| j
t$|ƒ7  _
| %|¡ qbW W dQ R X | &¡  dS )!z5The basic download function that runs at each thread.z1Found partial chunks of file {} (found {} bytes).r   z#This chunk is 100% downloaded ({}).NzKstartByte ({}) > endByte ({}). Chunks are corrupted. Overriding old chunks.FzDownloading bytes=%d-%dzbytes=%d-%dÚheadersÚRangez3without endByte, attempt_resume cannot be supportedzDownloading '{}' to '{}'...)Útimeouti   r   zHThread didn't got the file it was expecting. Retrying ({} times left)...é   zDeleting old {}...ÚabzContent-LengthzContent-Length is {}.z#Server did not send Content-Length.i    Ústopz stop command received. Stopping.Úpausegš™™™™™É?Úlimitgš™™™™™¹?z>Thread has downloaded {} in {}. Limit is {}/s. Slowing down...T)Ú	fmt_shortÚshow_ms)'r   ÚDummyLoggerÚcopyÚdeepcopyÚosÚpathÚexistsÚgetsizeÚinfoÚformatÚvalueÚwarningÚdebugÚurllibÚrequestÚRequestÚurlopenÚerrorÚ	HTTPErrorÚcodeÚtimeÚsleepÚdownloadÚunlinkÚopenÚintr   Ú
IndexErrorÚKeyErrorÚ	TypeErrorÚCanceledExceptionÚsizeof_humanÚ
time_humanÚreadÚ	ExceptionÚstrÚlenÚwriteÚclose)ÚurlÚdestr   Ú	startByteÚendByter   Zattempt_resumeÚ
shared_varÚthread_shared_cmdsÚloggerÚretriesZdownload_headersZpartial_sizeÚreqÚurlObjÚeÚfÚfilesizeÚmetaZfilesize_dlZlimitspeed_timestampZlimitspeed_filesizeÚblock_szÚnowZtime_passedZtime_to_sleepZbuff© rE   úHC:\Users\ibrahim.fayad\Desktop\sentSatProg_v.0.1.3\pySmartDL\download.pyr%      s¨    

	

 







4
r%   )	Nr   Nr   TNNNr   )
r   Úurllib.requestr   Úurllib.errorÚurllib.parser#   r   Ú r   r%   rE   rE   rE   rF   Ú<module>   s
   