U
    Tr­`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|Ž}ztjj||d}W nŠ tjjk
r² } zf|jdkr |
dkrœ|	 d 	|
d ¡¡ t d¡ t| |||||||||	|
d ƒ W Y ¢S ‚ n‚ W 5 d}~X Y nX |sâtj |¡râ|	 d 	|¡¡ t |¡ t|dƒÞ}|r || }nRz*| ¡ }t|jd ƒ}|	 d 	|¡¡ W n& tttfk
rP   |	 d¡ Y nX d}t ¡ }d}d}|r4d|kr†|	 d¡ tƒ ‚d|kržt d¡ qfd|kr4t ¡ }|| }|dkr4|| | |d kr,|| |d  }|	 d 	t  || ¡t j |ddd t  |d ¡¡¡ t |¡ qfn|}|}z| !|¡}W nH t"k
rŠ } z(|	 t#|ƒ¡ |rx| j
|8  _
‚ W 5 d}~X Y nX |s–qÈ|t$|ƒ7 }|rº| j
t$|ƒ7  _
| %|¡ qfW 5 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_sleepÚbuff© rF   úI/mnt/cestravail/FreezeDetection/sentSatProg_v.0.1.3/pySmartDL/download.pyr%      s¦    

	

(







4
r%   )	Nr   Nr   TNNNr   )
r   Úurllib.requestr   Úurllib.errorÚurllib.parser#   r   Ú r   r%   rF   rF   rF   rG   Ú<module>   s
   