U
    <\$d                     @   s   d dl mZmZ d dlmZ ddlmZ d dlZd dlmZ d dl	m
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lZdd
lT dd ZdddZdd Zdd Zdd Zdd Zdd ZdS )    )renderredirect)auth   )adminN)datetime)VideoFileClip)AudioSegment)detect_nonsilent)*c              
   C   s   t  }t | }||}W 5 Q R X z8|j|ddd}|r\d|kr\|d d d }|W S W d S  t jk
r   td Y d S  t jk
r } ztd|  W Y d S d }~X Y nX d S )	Nzar-MAT)languageZshow_allalternativer   Z
transcriptzCould not understand the audiozBCould not request results from Google Speech Recognition service; )srZ
RecognizerZ	AudioFilerecordZrecognize_googleZUnknownValueErrorprintZRequestError)Z
audio_fileZ
recognizersourceaudioresultZbest_transcriptione r   3/var/www/html/transcribe_darija/transcribe/views.pytranscribe_audio   s    r        Tc                 C   sN  t | }|j}|d td}td t|||}tj	tj
| d }	|	 d}
tj|
spt|
 g }d}|D ]\}}|d }|d }|| }|r||k rq||d7 }tj|
|	 d| d}|||}|| |j}|d td}td |||||d	 q|t|}|jtj|
|	 d
dd td d S )Nztemp_audio1.wavr   _outputr   r   Z_part_z.mp4ztemp_audio_chunk.wav)filenamestart_atend_attranscriptionz_metadata.xlsxF)indexzVideo processing completed)r   r   Zwrite_audiofiler	   Zfrom_wavosremover
   pathsplitextbasenameexistsmakedirsjoinZsubclipZwrite_videofiler   appendpdZ	DataFrameZto_excelr   )Z
input_filemin_silence_lensilence_threshmin_durationuse_min_durationvideor   Zaudio_segmentZnonsilent_intervals
video_nameZoutput_folderZmetadataZpart_numberstartendZ
start_timeend_timedurationZoutput_fileZvideo_chunkZaudio_chunkr   dfr   r   r   process_video#   sF    









r6   c                 C   s
   t | dS )Nz	home.html)r   )requestr   r   r   home]   s    r8   c                 C   s   | j dkrt }| jd }| jd }td| td| ztjj|dj|d}W n* tj	k
r~   d}t
| d	d
|i Y S X td| |rt|j| jd< t|dd |_|  tdS t
| d	d
diS n
t
| d	S d S )NPOSTusernamepasswordzthe username is :zthe password is :)r:   )r;   zWrong username or password!zadmin_login.html	error_msgzthe data is id_admin.r   uploadzError detected.)methodr   nowr9   r   r   objectsfiltergetDoesNotExistr   strr=   sessionsplit	last_timesaver   )r7   rA   r:   r;   datar<   r   r   r   admin_logino   s&    





rL   c              	   C   sN   t |d:}t| tkr(||   n|  D ]}|| q0W 5 Q R X d S )Nzwb+)opentyperF   writeencodechunks)filer#   r   destinationchunkr   r   r   handle_uploaded_file   s
    rU   c                 C   sl   |}|}t |}|j}|dd }tjjdd}t }t|dd }	t	||	||||d}
|

  d S )Nr>   r   )id_userr   )r0   when_uploadedrW   r#   r4   	extension)r   r4   rH   userrB   rD   r   rA   rF   r/   rJ   )contentr   r0   r#   Zclipr4   rY   Zuser_instancerA   rX   Z	new_videor   r   r   
save_video   s    r\   c                 C   sz   | j dkrp| jd j}|}| jd }td| d}tj|sHt| t||| t	|ddddd	 t
| d
S t
| dS )Nr9   r   zthe file name is :/r   r   r   T)r+   r,   r-   r.   z	list.htmlzupload.html)r@   FILESnamer   r!   r#   r&   r'   rU   r6   r   )r7   Zmy_strr   r[   r#   r   r   r   r?      s    




r?   )r   r   r   T)Zdjango.shortcutsr   r   django.contribr   modelsr   r!   r   Zmoviepy.editorr   sysZpydubr	   Zpydub.silencer
   Zpandasr*   Z	audiofileZspeech_recognitionr   r   r6   r8   rL   rU   r\   r?   r   r   r   r   <module>   s&   
: