U
    Hc                     @   s   d 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lm	Z	 ddl
Z
ddlZdddZdd	d
ZdddZdddZdddZdS )z
Download utils
    N)Path)ZipFile c                 C   s8   t jd|  ddd}t|r4t|dd S dS )Nz
gsutil du T)shellzutf-8 r   )
subprocesscheck_outputdecodelenevalsplit)urls r   E/var/www/html/VideoAnalyticsDashboard/src/./yolov5/utils/downloads.pygsutil_getsize   s    r         ?c                 C   s  t | } d|  d| }zzJtd| d	|  d
 tj|t	|  |  rZ|  j|ksbt
|W nj tk
r } zL| jdd td| d|p| d	|  d
 td|p| d|  d W 5 d }~X Y nX W 5 |  r|  j|k r| jdd td| d|  td X d S )NzDownloaded file 'z(' does not exist or size is < min_bytes=T
missing_okzERROR: 
r   zDownloading z to z...z
Re-attempting z	curl -L 'z' -o 'z' --retry 3 -C -)r   existsstatst_sizeunlinkprinttorchhubdownload_url_to_filestrAssertionError	Exceptionossystem)filer   Zurl2	min_bytes	error_msgZ
assert_msger   r   r   safe_download   s    " 2r'   ultralytics/yolov5c                 C   s  t t|  dd} |  st tjt| j}t| 	drt| dd}|
dd } t |  rtd| d	|   nt| |d
d | S | jjddd z4td| d }dd |d D }|d }W nl tk
rH   ddddddddddg
}z"tjddtjd 
 d  }W n tk
rB   d!}Y nX Y nX ||krt| d"| d#| d$| d
|  d%| d&d' t| S )(N'r   )zhttp:/zhttps:/z:/z://?r   zFound z locally at g     j@)r#   r   r$   T)parentsexist_okzhttps://api.github.com/repos/z/releases/latestc                 S   s   g | ]}|d  qS )namer   ).0xr   r   r   
<listcomp>?   s     z$attempt_download.<locals>.<listcomp>assetsZtag_namez
yolov5n.ptz
yolov5s.ptz
yolov5m.ptz
yolov5l.ptz
yolov5x.ptzyolov5n6.ptzyolov5s6.ptzyolov5m6.ptzyolov5l6.ptzyolov5x6.ptzgit tag)r   stderrzv6.0zhttps://github.com/z/releases/download//z2 missing, try downloading from https://github.com/z
/releases/)r   r$   r%   )r   r   stripreplacer   urllibparseunquoter-   
startswithr   is_filer   r'   parentmkdirrequestsgetjsonr    r   r   STDOUTr	   )r#   repor-   r   responser1   tagr   r   r   attempt_download+   sD    

    "
rE   !16TiPfZj7htmTyhntwcZyEEAejOUxuT6mtmp.zipc                 C   s2  t   }t|}td}td|  d| ddd |jdd |jdd t d	krZd
nd}td|  d|  tjdrdt	  d|  d| }nd| d|  d}t|}|jdd |dkr|jdd td |S |j
dkrtddd t|j|jd |  tdt   | dd |S )Ncookiez;Downloading https://drive.google.com/uc?export=download&id=z as z... r   )endTr   WindowsNULz	/dev/nullz?curl -c ./cookie -s -L "drive.google.com/uc?export=download&id=z" > z?curl -Lb ./cookie "drive.google.com/uc?export=download&confirm=z&id=z" -o zcurl -s -L -o z) "drive.google.com/uc?export=download&id="r   zDownload error z.zipzunzipping... )pathzDone (z.1fzs))timer   r   r   platformr"   r!   rM   r   	get_tokensuffixr   
extractallr<   )idr#   trH   outr   rr   r   r   gdrive_downloadS   s.    
rW   ./cookiec              
   C   sF   t | 4}|D ](}d|kr| d   W  5 Q R  S qW 5 Q R X dS )Ndownloadr3   r   )openr   )rH   fliner   r   r   rP   v   s
    
(rP   )r   )Nr   r   )r(   )rF   rG   )rX   )__doc__r!   rO   r   rN   r7   pathlibr   zipfiler   r>   r   r   r'   rE   rW   rP   r   r   r   r   <module>   s   


(
#