
    i                     *   S SK r S SKrS SKrS SKrS SKrS SKrS SKJr  S SK	J
r  S SKJr  S SKJr  \ R                  R                  \ R                   R#                  S\ R                  R%                  S5      5      S5      rSrS rS	 rS
 rS rS rS rg)    N)tqdm)
get_loggerPADDLE_OCR_BASE_DIRz~/.paddleocr/models   c                    [        5       nU(       a:  [        R                  R                  U5      (       a  UR	                  SU S35        g [
        R                  " 5       S:X  a  [        X5        g [        R                  R                  U5      (       d=  [        R                  " S5        [        R                  R                  U5      (       d  M<  g g )NzPath z already exists. Skipping...r      )
r   ospathexistsinfodistget_rank	_downloadtimesleep)url	save_pathloggers      ]/var/www/html/banglarbhumi/venv/lib/python3.13/site-packages/paddleocr/ppocr/utils/network.pydownload_with_progressbarr   !   s    \FRWW^^I..eI;&BCD
 ==?ac%ggnnY//

1 ggnnY//    c                 b   [        5       n[        R                  " U 5      S   nSn[        R                  " U5      (       Gdn  U[        :  a  US-  nO[        SR                  U 5      5      e [        R                  " U SS9nUR                  S	:w  a$  [        S
R                  XR                  5      5      eUS-   nUR                  R                  S5      n[!        US5       n	U(       aZ  [#        [%        U5      S-   S-  S9 n
UR'                  SS9 H%  nU	R)                  U5        U
R+                  S5        M'     SSS5        O0UR'                  SS9 H  nU(       d  M  U	R)                  U5        M     SSS5        [,        R.                  " Xq5        [        R                  " U5      (       d  GMn  U$ ! [         aP  nUR                  SR                  X0US-   [        U5      5      5        [        R                  " S5         SnAGM  SnAff = f! , (       d  f       N= f! , (       d  f       N= f)zc
Download from url, save to path.

url (str): download url
save_path (str): download to given path
r   r	   z,Download from {} failed. Retry limit reachedT)streamz8Downloading {} from {} failed {} times with exception {}N   z(Downloading from {} failed with code {}!z.tmpzcontent-lengthwbi  i   )total)
chunk_size)r   ospsplitr   DOWNLOAD_RETRY_LIMITRuntimeErrorformatrequestsget	Exceptionr   strr   r   status_codeheadersopenr   intiter_contentwriteupdateshutilmove)r   r   r   fname	retry_cntreqetmp_file
total_sizefpbarchunks               r   r   r   1   s    \FIIcN2EIjj##++NIAHHM 		,,s40C ??c!fS//2  v%[[__%56
(D!QZ4!7D @AT!$!1!1T!1!BA "C BA
 !--->Eu ? " 	H(Q jj##T A  	KKJQQ	As1v
 JJqM	, BA "!sC   -F2 " H 9H; H H 2
H<AHH
H	H  
H.c                 :   / SQn[         R                  R                  [         R                  R                  U S5      5      (       aC  [         R                  R                  [         R                  R                  U S5      5      (       Gdo  UR	                  S5      (       d   S5       e[         R                  R                  XR                  S5      S   5      n[        SR                  X5      5        [         R                  " U S	S
9  [        X5        [        R                  " US5       nUR                  5        H  nS nU H*  nUR                  R	                  U5      (       d  M%  SU-   nM,     Uc  M:  UR                  U5      n[        [         R                  R                  X5      S5       n	U	R                  UR!                  5       5        S S S 5        M     S S S 5        [         R"                  " U5        g g ! , (       d  f       M  = f! , (       d  f       N8= f)N)z
.pdiparamsz.pdiparams.infoz.pdmodelzinference.pdiparamszinference.pdmodelz.tarz$Only supports tar compressed package/r   download {} to {}Texist_okr	inferencer   )r
   r   r   joinendswithr!   printr$   makedirsr   tarfiler+   
getmembersnameextractfiler.   readremove)
model_storage_directoryr   tar_file_name_listtmp_pathtarObjmemberfilenametar_file_namefiler8   s
             r   maybe_downloadrT   j   s   F77>>
,.CD WW^^BGGLL)@BUVWW||F##K%KK#77<< 739KL!((78
+d;!#0\\(C(F ++-%7M{{++M::#.#> &8 #))&1"'',,'>I4PTUGGDIIK( QP . ) 			(# X QP )(s+   )9H&AH. G:H:
H	H
Hc                 ^   [         R                  R                  U 5      (       d  [        U 5      (       d  U $ U n[         R                  R	                  [
        UR                  S5      S   5      n[        SR                  X5      5        [         R                  " [
        SS9  [        X5        U$ )Nr<   r   r=   Tr>   )r
   r   r   is_linkrB   
MODELS_DIRr!   rD   r$   rE   r   )
model_pathr   rN   s      r   maybe_download_paramsrY      sz    	ww~~j!!)<)<ww||J		#r(:;H	

$
$S
34KK
T*c,Or   c                 :    U S L=(       a    U R                  S5      $ )Nhttp)
startswith)ss    r   rV   rV      s    D=1Q\\&11r   c                     UnU b  [        U 5      (       aJ  [        U 5      (       a  U nUR                  S5      S   S S nUn [        R                  R	                  X5      n X4$ )Nr<   r   )rV   r!   r
   r   rB   )	model_dirdefault_model_dirdefault_urlr   	file_names        r   confirm_model_dir_urlrd      s_    
CGI..9CIIcN2&s+	%	GGLL6	>r   )r
   sysr   r0   rF   r%   os.pathr   r    paddle.distributeddistributedr   r   ppocr.utils.loggingr   rB   environr&   
expanduserrW   r"   r   r   rT   rY   rV   rd    r   r   <module>rm      s    
 
      !  *WW\\JJNN("''*<*<_*MNPX
   6r2	2r   