
    j)                        S SK Jr  S SKrS SKrS SKrS SKJr  S SK	J
r
  S SKrS SKJrJr  S SKJr  S SKJrJrJrJr  S SKJr  S S	KJr  S SKr\" S
S9rSr " S S\5      rS r S r S r!  S r"S r#S r$S r%S r&\'S:X  a  \&" 5         gg)    )GroqN)VideoFileClip)AudioSegment)TokenTextSplitterRecursiveCharacterTextSplitter)Document)PyPDFLoader
TextLoaderDocx2txtLoaderUnstructuredPowerPointLoader)FAISS)OllamaEmbeddings8gsk_CEh3itIpUAkEkEKsUDqVWGdyb3FYoTjqmXNTBHOSxJFK3obGTzXZ)api_keyzwhisper-large-v3c                       \ rS rSrSrg)VideoTooLargeException    N)__name__
__module____qualname____firstlineno____static_attributes__r       F/var/www/eduai.edurigo.com/question_generate/testing/training_video.pyr   r      s    r   r   c           
         SS K nSS KnUR                  R                  U 5      (       d  [	        U  S35      e UR                  SSSSSSS	U /UR                  UR                  S
S9n[        UR                  R                  5       5      nUS-  n[        SUS S35        SSU SSSSU/nUR                  XR                  UR                  S9  [        SU  SU 35        g ! [         a  n[        SU5        Sn S nAN]S nAff = f)Nr   z
 not foundffprobez-verrorz-show_entrieszformat=durationz-ofz"default=noprint_wrappers=1:nokey=1T)stdoutstderrtext<   z
Duration: .2fz minzCould not get duration:ffmpegz-iz-vnz-acodec
libmp3lamez-y)r   r    z
Converted u    → )
subprocessospathexistsFileNotFoundErrorrunPIPEfloatr   stripprint	ExceptionDEVNULL)	
video_pathmp3_output_pathr&   r'   resultduration_secondsduration_minutesecommands	            r   convert_video_to_audior9      s$   77>>*%%:,j 9::g!2; ????   
 !!4!4!67+b0
+C056 	j<G NN7#5#5j>P>PNQ	Jzl%'8
9:!  '+s   A&C 
D (C;;D c                 x   [         R                  R                  U5      (       a3  [        SU 35        [	        USSS9 nUR                  5       nS S S 5        O[        SU  35        [	        U S5       n[        R                  R                  R                  XR                  5       4[        S9nS S S 5        WR                  n[	        USSS9 nUR                  U5        S S S 5        S	R                  WR                  S
5      5      nU$ ! , (       d  f       N0= f! , (       d  f       Nr= f! , (       d  f       NR= f)NzReading translation from rutf-8encodingzGenerating translation for rb)filemodelw
z. )r'   r(   r)   r/   openreadclientaudiotranslationscreaterA   r!   writejoinsplit)filepathoutput_fileftranslation_textr@   translationformatted_texts          r   audio_to_textrS   s   s   	ww~~k"")+78+sW5 vvx 65 	+H:67(D!T ,,33::		, ; K "
 '+++sW5GG$% 6 YY/55d;<N 65 "! 65s#   D	2<DD+	
D
D(+
D9c                     U R                   R                  R                  SSU S3S.SUS./SS9n[        UR                  S   R
                  R                  5        g )	NsystemzjUse this transcript or transcripts to answer any user questions, citing specific quotes:

                z
                )rolecontentuserzllama3-8b-8192)messagesrA   r   )chatcompletionsrI   r/   choicesmessagerW   )rF   
transcriptuser_questionchat_completions       r   transcript_chat_completionra      sw    kk--44 !   (
  5 O  
/
!
!!
$
,
,
4
45r   c                 (    [        U SSS9 nUR                  5       nS S S 5        [        SSS9nUR                  W5      nU Vs/ s H  n[	        USU 0S9PM     nnU$ ! , (       d  f       NG= fs  snf ! [
         a  n[        S	S
U 3S9eS nAff = f)Nr;   r<   r=   i     )
chunk_sizechunk_overlapsource)page_contentmetadatai  zError processing document: )status_codedetail)rD   rE   r   
split_textr   r0   )	file_pathr@   r!   text_splitterchunkschunk	documentsr7   s           r   load_and_split_document1rq      s    
S)S73t99;D 4 7$VYZ))$/_ef_eV[X5Hi;PQ_e	f 43 g SC2MaS0QRRSs9   A5 A'A5 A0A5 
A-)A5 5
B?BBc                 "   U (       d  [        S5      e[        SS9n [        R                  " X5      n[
        R                  " USS9  UR                  U5        [        SU 35        g ! [          a  n[        S[	        U5       35      eS nAff = f)Nu)   ❌ No documents found for FAISS indexingznomic-embed-text)rA   u   ❌ FAISS creation failed: T)exist_oku   ✅ FAISS index saved to )	r0   r   r   from_documentsstrr'   makedirs
save_localr/   )rp   faiss_save_pathembedding_function	docsearchr7   s        r   save_faiss_indexr{      s    CDD)0BC@((G	 KK$/)	%o%6
78  @5c!fX>??@s   A( (
B2B		Bc                 &    [        S U  5       5      $ )Nc              3   h   #    U  H(  n[        UR                  R                  5       5      v   M*     g 7fNlenrg   rL   .0docs     r   	<genexpr>%count_tokens_video.<locals>.<genexpr>   '     B	s3##))+,,	   02sumrp   s    r   count_tokens_videor          B	BBBr   c                 &    [        S U  5       5      $ )Nc              3   h   #    U  H(  n[        UR                  R                  5       5      v   M*     g 7fr~   r   r   s     r   r   count_tokens.<locals>.<genexpr>   r   r   r   r   s    r   count_tokensr      r   r   c                  ,   Sn SnSnSnSnSU SU 3n[         R                   " 5       n[        X5        [        X5        [        U5      n [	        Xu5        [         R                   " 5       n[        U5      n	[        SX-
  S	 S
35        [        SU	 35        g )NzGaur_Gopal.mp4zmp3-files/Gaur_Gopal.mp3zGaur_Gopal.txtB   
Gaur_Gopalzmy_embeddings_video//zTraining process took r#   z secondsz(Total tokens processed during training: )timer9   rS   rq   r{   r   r/   )
r2   r3   rN   	client_idreference_idfolder_path
start_timerp   end_timetoken_counts
             r   mainr      s    !J0O"K IL(1\NCK J:7//(5I\ Y,yy{Hy)K	"8#8"=X
FG	4[M
BCr   __main__)(groqr   r'   pandaspdnumpynpmoviepyr   pydubr   r$   langchain_text_splittersr   r   langchain_core.documentsr   $langchain_community.document_loadersr	   r
   r   r    langchain_community.vectorstoresr   langchain_ollamar   r   rF   rA   r0   r   r9   rS   ra   rq   r{   r   r   r   r   r   r   r   <module>r      s     	   !   V - v v 2 -  
P	Q	Y 	*;X>^46(#J3$S9 CC&DP zF r   