
    soj                         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Zd dlZd dl	Zd dl
Z
d dlZd dlmZ ddededefdZddZdedefdZdd	edefd
ZdS )    Nurl	extensionreturnc                 8   t           j                            t          j                  st          j        t          j                   |t          j        |           j        n|}t          |          }t          j                            | dddd          }t          d          D ]}	 t          j                            |d	          5 }t          |d
          5 }t!          j        ||           ddd           n# 1 swxY w Y   ddd           n# 1 swxY w Y   |c S # t          j        j        $ r.}|dk     r"|j        dv rt+          j        d           Y d}~ d}~wt          j        j        $ r |dk     rt+          j        d           Y  w xY w|S )z
    Download file to temp folder
    :param url: url of file
    :param extension: File extension
    :return: path of downloaded file
    NzoMozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36z2image/avif,image/webp,image/apng,image/*,*/*;q=0.8zen-US,en;q=0.9)z
User-AgentAcceptzAccept-Language)headers      )timeoutwb   >              )ospathexistscTEMP_DIRmakedirspathlibPathsuffixgenerate_temp_file_pathurllibrequestRequestrangeurlopenopenshutilcopyfileobjerror	HTTPErrorcodetimesleepURLError)r   r   	file_pathr   attemptresponseout_filees            /app/src/utils/download_utils.pydownload_temp_filer1      s0    7>>!*%%  
AJ -6,=S!!((9I'	22I n$$1 K/
 
 %  G 88  	'''<< ;)T** ;h&x:::; ; ; ; ; ; ; ; ; ; ; ; ; ; ;; ; ; ; ; ; ; ; ; ; ; ; ; ; ; |% 	 	 	{{qv)===
1|$ 	 	 	{{
1		 sl   +!D%DC?3D?DDDD
D%D	D%D	D%%F9#E"!E""1FFc                     t          j                     } t          t          j                                                  }t
          j                            t          j	                  rt          j
        t          j	                  D ]}t
          j                            t          j	        |          }	 t          j        |          }|j        | |z
  k     s	 t
          j                            |          rt          j        |           nt!          j        |           # t$          $ r}t'          j        d|           Y d}~d}~ww xY wdS dS )z:
    Removes files older than x time from temp folder
    Tz"Error while deleting temp path: %sN)r(   floatEnvTEMP_DIR_CLEANUP_TIME_SECONDSgetr   r   r   r   r   listdirjoinstatst_ctimeisfileunlinkr#   rmtree	Exceptionloggingr%   )current_time
time_limitfiler+   pathinfor/   s         r0   cleanup_temp_dirrD   C   s<   
 9;;Ls8<<>>??J 
w~~aj!! GJqz** 	G 	GDQZ66I
G79--%z(AAAAw~~i00 1	),,,,i000 G G GBAFFFFFFFFGG G	G 	Gs   3A+D
E)EEc                     t          j        t          j        d           t	          j                    j        |                     d          sdndz   | z   }t           j        	                    t          j        |          S )z~
    Generate temp file path
    :param extension: file extension
    :type extension: str
    :return: path of temp file
    T)exist_ok. )
r   r   r   r   uuiduuid4hex
startswithr   r8   )r   	file_names     r0   r   r   \   sg     K
T**** 
 y/C/CC/H/H$PCCbQT]]I 7<<
I...    
   lengthc                     t           j        t           j        z   d                    fdt	          |           D                       S )zk
    Create a random string
    :param length: The length of the string
    :return: The random string
    rH   c              3   @   K   | ]}t          j                  V  d S N)randomchoice).0_
characterss     r0   	<genexpr>z$get_random_string.<locals>.<genexpr>{   s-      DD6=,,DDDDDDrN   )stringascii_lettersdigitsr8   r    )rP   rX   s    @r0   get_random_stringr]   n   sF     	v}, 
 77DDDDeFmmDDDDDDrN   rS   )r   N)rO   )r?   r   r   rT   r#   rZ   r(   urllib.errorr   urllib.requestrI   	constantsr   resources.EnvironmentEnvironmentr4   strr1   rD   r   intr]    rN   r0   <module>rf      s&    				                   # # # # # #0 0C 0C 03 0 0 0 0fG G G G2/s /s / / / /$E Ec E3 E E E E E ErN   