
    jb                        d dl Z d dlmZ d dlmZmZmZmZ d dlm	Z	 d dl
mZmZmZmZmZmZmZmZmZmZ d dlmZ d dlmZmZmZmZ d dlmZmZ  ed	e d
          Z!h dZ"de#fdZ$e!%                    d          d             Z&e!'                    d          de(fd            Z)e!%                    d          de(fd            Z*e!'                    d          de(fd            Z+dS )    N)uuid4)	Blueprintjsonifyrequest	send_file)secure_filename)

BATCH_SIZECONF_THRESHIMGSZPROMPT_MODEL_DEFAULT_CLASSESPROMPT_MODEL_DEFAULT_CONFUPLOAD_TEMP_DIRVIDEO_FRAME_INTERVALget_upload_model_defaultmodel_supports_text_promptresolve_model_path)get_job)get_upload_job_snapshotrequest_upload_cancelstart_video_jobstart_zip_job)get_request_ownerjob_matches_owneruploadz/upload)
url_prefix>   .avi.mkv.mov.mp4.mpg.mpeg.zipreturnc           	         |                      dd          pd                                pt                      }|                      dd          pd                                }|                      dd          pd                                }|                      dd          pd                                }|                      dd          pd                                }|                      dd          pd                                }t          |          rt          nt
          }	 |r+t          dt          d	t          |                              n|}n# t          $ r |}Y nw xY w	 |r+t          d
t          dt          |                              nt          }	n# t          $ r
 t          }	Y nw xY w	 |r+t          dt          dt          |                              nt          }
n# t          $ r
 t          }
Y nw xY w	 |r+t          d
t          dt          |                              nt          }n# t          $ r
 t          }Y nw xY wt          |          r	|st          }||	|
|||fS )z@Parse and validate common detection parameters from a form dict.	model_key conf
batch_sizeimgszclassesframe_intervalg{Gz?g      ?   @   i@  i   <   )getstripr   r   r   r
   maxminfloat
ValueErrorintr	   r   r   r   )formr%   conf_inbatch_inimgsz_inclasses_rawframe_interval_indefault_confr'   r(   r)   r+   s               A/home/longshao/multi-rider-rag/modules/detection/upload_routes.py_parse_paramsr>   "   s   +r**0b7799W=U=W=WIxx##)r0022Gr**0b7799H"%%+2244H88Ir**0b7799K"2B77=2DDFF0J90U0Uf,,[fL6=Os4S%..11222<    7?OSCCMM22333Z

      


 6>ICT3x==11222E   .DUoQB,=(>(> ? ?@@@[o . . .-. "),, 3[ 32UKNJJsH   )/E E('E(,4F! !F54F594G. .HH4H; ;IIz/startc                     dt           j        vrt          ddd          dfS t           j        d         } | r| j        st          ddd          dfS t	          | j                  }t
          j                            |                                          d         }|t          vrt          dd| d	d          dfS t          t                     \  }}t          t           j                  \  }}}}}	}
	 t          |	           n'# t          $ r t          dd
|	 d          dfcY S w xY wt
          j                            t           t#                      j                  }t          j        |d           |dk    rQt
          j                            ||          }|                     |           t+          |||||||	|||
  
        \  }}nQt
          j                            ||          }|                     |           t-          |||
|||||	|||          \  }}|st          d|pdd          dfS t          d|d          S )NfileFu   未选择文件okerrori  u   文件为空r,   u   不支持的文件类型 u-   ，请上传 ZIP 或 MP4/AVI/MOV/MKV/MPG/MPEGu   未找到可用模型: T)exist_okr"   u   启动失败i  )rB   job_id)r   filesr   filenamer   ospathsplitextlower_ALLOWED_EXTSr   r>   r6   r   	Exceptionjoinr   r   hexmakedirssaver   r   )r@   rG   ext	owner_keyowner_ipr'   r(   r)   r:   r%   r+   temp_dirzip_pathrE   err
video_paths                   r=   upload_startrY   C   s   W]""e.?@@AA3FF= D Dt} Den==>>CCt}--H
'

8>>++
,
,Q
/C
-e.|#.|.|.|}}~~  AD  D  	D+G44IxFST[T`FaFaCD*e[)^[9%%%% [ [ [e.S	.S.STTUUWZZZZZ[ w||OUWW[99HK4((((
f}}7<<(33		(#hj%iQZ\dfn
 

 W\\(H55
		*%.$
EIx
 

  Kec.C^DDEEsJJ$&11222s   6D !D*)D*z/progress/<job_id>rE   c                 z   t          t                    \  }}t          |           r&t          ||          st	          ddd          dfS nOt          |           r*                    d          dk    st          ||          st	          ddd          dfS t	          dfdd	D             d
          S )NFu   任务不存在rA     job_typer   Tc                 <    i | ]}|                     |          S  )r/   ).0kjobs     r=   
<dictcomp>z#upload_progress.<locals>.<dictcomp>~   s5     
 
 
 swwqzz
 
 
    )idstatusmessagetotal	processedkeptfailedstart_tsend_tsr%   source_namesource_type)rB   ra   )r   r   r   r   r   get_saved_jobr/   )rE   rS   rT   ra   s      @r=   upload_progressrp   p   s   +G44Ix
!&
)
)C
 K i:: 	K%2CDDEEsJJ	K F## 	Kcggj))X55=NsT]_g=h=h5%2CDDEEsJJ
 
 
 

 
 

 
 
 
 
rc   z/cancel/<job_id>c                 t    t          t                    \  }}t          | ||          }t          d|i          S )NrB   )r   r   r   r   )rE   rS   rT   rB   s       r=   upload_cancelrr      s7    +G44Ix	vy(	;	;BD":rc   z/download/<job_id>c                    t          t                    \  }}t          |           }|t          |||          sdS |=t	          |           }|r*|                    d          dk    st          |||          sdS |                    d          dk    rdS |                    d          }|rt          j                            |          sdS |                    dd	          }t          |d
dd| d          S )N)u   任务未完成或不存在r[   r\   r   re   donerV   )u!   结果文件不存在或已过期r[   rm   resultzapplication/zipT	detected_r"   )mimetypeas_attachmentdownload_name)
r   r   r   r   ro   r/   rH   rI   isfiler   )rE   rS   rT   ra   rV   src_names         r=   upload_downloadr|      s   +G44Ix
!&
)
)C
0iJJ11
{F## 	6cggj))X55=NsT]_g=h=h555
wwxF""11wwz""H 827>>(33 877ww}h//H"0(000	   rc   ),rH   uuidr   flaskr   r   r   r   werkzeug.utilsr   shared.config.configr	   r
   r   r   r   r   r   r   r   r   shared.db.sqliter   ro   -modules.detection.services.upload_job_servicer   r   r   r   shared.ownership.ownershipr   r   __name__	upload_bprL   tupler>   postrY   r/   strrp   rr   r|   r^   rc   r=   <module>r      sO   				       8 8 8 8 8 8 8 8 8 8 8 8 * * * * * *                        6 5 5 5 5 5            L K K K K K K K IhY???	IIIK5 K K K KB )3 )3 )3X #$$C    %$0 "###    $# #$$C    %$  rc   