
    O3h!                        d dl mZmZmZmZm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Zd dlmZ d dlmZ  e       Z ed      Zej'                  ed	gd
d	gd	g       dZ e
j*                  ed
       d Zd Zej1                  d       ed      fdefd       Zej5                  d      d        Zej5                  d      defd       Zej=                  d ee      d       ej?                  e       y)    )FastAPI
UploadFileFileHTTPException	APIRouter)StaticFiles)FileResponseN)datetime)CORSMiddlewarez/api/audio-converter)prefix*T)allow_originsallow_credentialsallow_methodsallow_headersz./audios)exist_okc                    d}t        j                  |       5 }|j                  D ]  }|j                         }|s|j	                  d      D cg c]#  }|j                         s|j                         % }}d}t        |      D ]7  \  }}||z  }|j                  d      s|t        |      dz
  k  r|dz  }3|dz  }9 ||dz   z  } 	 d d d        |j                         S c c}w # 1 sw Y   |j                         S xY w)N 
).!?    )	
pdfplumberopenpagesextract_textsplitstrip	enumerateendswithlen)	pdf_file_pathtextpdfpage	page_textlinelinescleanedjs	            "/var/www/html/audio-gradio/main.pyread_pdf_textr.      s    D		' '3II 	'D))+I2;//$2GX$4::<XX(/ (GAttOG==9a#e*q.>P34( $&	'' ::< Y	' ::<s)   "C'C'C"$C"6AC'"C''C?c                 p   K   t        j                  | d      }|j                  |       d {    y 7 w)Nzvi-VN-HoaiMyNeural)voice)edge_ttsCommunicatesave)r%   output_pathcommunicates      r-   convert_text_to_speechr6   *   s-     &&t3GHK


;
'''s   ,646z	/convert/.filec                   K   | j                   dk7  rt        dd      dt        j                         j	                          d}t        |d      5 }|j                  | j                          d {          d d d        t        |      }t        j                  |       |j                         st        dd      t        j                         j                  d	      }t        j                  j                  t        d
| d      }t!        ||       d {    t        j                  j#                  |      ddS 7 # 1 sw Y   xY w7 4w)Nzapplication/pdfi  u   File không phải PDFstatus_codedetailtmp_z.pdfwbu2   Không tìm thấy nội dung văn bản trong PDFz%Y%m%d_%H%M%Saudio_.mp3u   Chuyển đổi thành công)filenamemessage)content_typer   r
   now	timestampr   writereadr.   osremover    strftimepathjoinAUDIO_FOLDERr6   basename)r7   tmp_pdf_pathfr%   rD   r4   s         r-   convert_pdf_to_audiorP   .   s    --4LMM(,,.2245T:L	lD	! #Q	diik!"# &DIIl::<4hii''8I'',,|vi[-EFK
 {
333((5B`aa "# # 4s=   AEE0D?
1E9BEE&E?EE
Ez/list-audio/c                      t        j                  t              D  cg c]$  } | j                         j	                  d      s#| & }} |j                          d|iS c c} w )Nr?   files)rG   listdirrL   lowerr"   sort)rO   rR   s     r-   list_audio_filesrV   D   sK    

<0O1AGGI4F4Fv4NQOEO	JJLU Ps   $AAz/audio/{filename}r@   c                     t         j                  j                  t        |       }t         j                  j	                  |      st        dd      t        |d      S )Ni  u   File không tồn tạir9   z
audio/mpeg)
media_type)rG   rJ   rK   rL   existsr   r	   )r@   	file_paths     r-   get_audio_filer[   J   sA    \84I77>>)$4MNN	l;;    z/audios)	directoryaudios)name) fastapir   r   r   r   r   fastapi.staticfilesr   fastapi.responsesr	   rG   r   asyncior1   r
   fastapi.middleware.corsr   approuteradd_middlewarerL   makedirsr.   r6   postrP   getrV   strr[   mountinclude_router r\   r-   <module>ro      s   G G + * 	     2i	0	1   %%%    L4 ("( [26s) bZ b b* N 
  <S < !< Yl;( K   6 r\   