
    ڑhq(                     $   d dl 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
mZ d dlmZ d dlZ ej        ej        j                    e              ej        ej                    e j        d          ZdZd	 Zd
 Zd Zd Zd ZdS )    N)upload_to_azure_blob)send_openai_analysis)get_db_connection)load_dotenv)levelSARVAM_SUBSCRIPTION_KEYzstorage/audio/c                     t                      } |                     t          j        j                  }|                    d           |                                }|D ]S}	 |d         }|d         }t          j        	                    t          d| d          }t          j        |          }|j        dk    r t          j        d| d|j                    |t!          |d	          5 }|                    |j                   d d d            n# 1 swxY w Y   t          j                            |          st          j        d
|            t)                      }	|	st          j        d|            |	d         }
|	d         }|	d                             d          d                             d          dz   t          j                            |          z   dz   |	d                             d          d         z   }t1          ||          st          j        d|            t3          |
          st          j        d|
            t5          |
|          }|st          j        d|
            &|                    d||                    d          |
|                    dd          t7          |          df           |                                  t          j        d|            t=          |           	 t          j        |           t          j        d|            n1# t@          $ r$}t          j!        d| d|            Y d }~nd }~ww xY w# t@          $ r8}t          j        d|d          dt7          |                      Y d }~Md }~ww xY w|"                                 | "                                 dd iS )!Nz)SELECT * FROM 6840_calls WHERE status = 0callidfileUrl
translate_.wav   '   ❌ Failed to download file for callid . Status code: wb+   ❌ File missing after download for callid /   ❌ Failed to initialize Sarvam job for callid job_idoutput_storage_pathinput_storage_path?r   /   .   ❌ Failed to upload file to Azure for callid )   ❌ Failed to start Sarvam job for jobid #   ❌ Failed to get result for jobid z 
                INSERT INTO 6840_sarvamresponse (callid, transcript, request_id, language, raw_response, status, created_at, updated_at)
                VALUES (%s, %s, %s, %s, %s, %s, NOW(), NOW()) 
            
transcriptlanguage_codeunknownu.   ✅ Translated transcript inserted for callid u#   🧹 Removed local file for callid u   ⚠️ Could not delete file :    ❌ Exception for callid messagezTranslation batch completed)#r   cursorpymysqlcursors
DictCursorexecutefetchallospathjoin	AUDIO_DIRrequestsgetstatus_codeloggingerroropenwritecontentexistsinit_sarvam_jobsplitrstripbasenamer   start_sarvam_jobpoll_sarvam_statusstrcommitinfor   remove	Exceptionwarningclose)connr#   callscallcall_idfile_url
local_fileresponsefjobr   
output_url	azure_urlresultes                  0C:\wamp64\www\rabbitmqsarvam\sarvam_processor.pysend_to_sarvamrQ      s   D[[344F
NN>???OOE 7R 7R6	R8nGIHi1Kg1K1K1KLLJ|H--H#s**vvv`h`tvvwwwj$'' *1()))* * * * * * * * * * * * * * * 7>>*-- UGUUVVV!##C YPWYYZZZ]F23J0177<<Q?FFsKKcQTVT[TdTdeoTpTppsvvy|  ~R  zS  zY  zY  Z]  z^  z^  _`  za  aI'	:>> XwXXYYY#F++ R&RRSSS'
;;F LFLLMMMNN  6::l33VVZZYb=c=cehioepeprstv v v KKMMMLS'SSTTT )))S	*%%%L7LLMMMM S S S Q
 Q Qa Q QRRRRRRRRS  	R 	R 	RMPd8nPPAPPQQQQQQQQ	R LLNNNJJLLL455s   "A7M.M.*DM.D	M.D	9M.'M.<B3M.1&M.)M.B
M.+L;:M.;
M)M$M.$M))M..
N08-N++N0c                  ^   t           dd} 	 t          j        d| i d          }|j        dk    r|                                S t          j        d|j         d|j                    d S # t          j        j	        $ r/}t          j        d	t          |                      Y d }~d S d }~ww xY w)
Napplication/jsonAPI-Subscription-KeyzContent-Typez7https://api.sarvam.ai/speech-to-text-translate/job/initTheadersjsonverify   u   ❌ Job init failed:  - u'   ❌ Request exception during job init: )SUBSCRIPTION_KEYr-   postr/   rX   r0   r1   text
exceptionsRequestExceptionr<   )rW   rI   rO   s      rP   r6   r6   X   s     0* G	=!Zdkrt  ~B  C  C  C3&&==??"MZ(2FZZ8=ZZ[[[4/   HAHHIIIttttts   6A) $A) )B,=$B''B,c                 H   t           dd}| ddid}	 t          j        d||d          }|j        d	k    rdS t	          j        d
|j         d|j                    dS # t          j        j        $ r/}t	          j        dt          |                      Y d }~dS d }~ww xY w)NrS   rT   with_diarizationF)r   job_parametersz2https://api.sarvam.ai/speech-to-text-translate/jobTrV   r   u    ❌ Failed to start Sarvam job: r[   u(   ❌ Request exception during job start: )
r\   r-   r]   r/   r0   r1   r^   r_   r`   r<   )r   rW   datarI   rO   s        rP   r:   r:   h   s     0* G
 -u5 D	=!U_fmqz~3&&4MeX=QeeV^Vceefff5/   IQIIJJJuuuuus   #A $A B!2$BB!c           
         dt           i}t          d          D ]}t          j        d           	 t	          j        d|  d|d          }|j        dk    r|                                }t          j	        d	|  d
|d          d|d         d         d                     |d         dk    r|d         d         d         dk    rkt          j	        d|  d           t          j        d           d|v r4|
                    dd          \  }}|                    d           d| }n|                    d          dz   }t	          j        |d          }	t          j	        d|	 d|            |	j        dk    r|	j        ri	 |	                                }
t          j	        d|  d|
            |
c S # t          j        $ r$ t          j        d|  d|	j                    Y  d S w xY wt          j        d |  d!|	j                     d S t          j        d"|  d#|	j                     d S t          j	        d$|  d%|d                     nt          j        d&|  d'|j                    [# t          j        j        $ r&}t          j        d(|  d|            Y d }~ d S d }~ww xY wt          j        d)|             d S )*NrU   x   
   z3https://api.sarvam.ai/speech-to-text-translate/job/z/statusT)rW   rY   r   zJob z state: 	job_stater[   job_detailsr   state	CompletedSuccessu   ✅ Job z+ completed successfully, fetching result...r   r   r   z/0.json?z/0.json)rY   u   ✅ Final response job :u   ✅ Final JSON for job r    u"   ❌ Failed to decode JSON for job z. Raw response: u   ❌ Empty response for job z. Response: u2   ❌ Failed to get content from output URL for job z. Response status: u   ❌ Job z5 not completed or failed, retrying... Current state: u'   ❌ Failed to check job status for job r   u/   ❌ Exception while polling job status for job u   ❌ Timeout polling job )r\   rangetimesleepr-   r.   r/   rX   r0   r>   r7   r8   r^   JSONDecodeErrorr1   r_   r`   rA   )r   rL   rW   attemptrI   rd   base_urlquery	final_urlfinal_responseparsedrO   s               rP   r;   r;   |   s   %'78G:: & &
2$	|$iZ`$i$i$isz  DH  I  I  IH#s**}}kFkkD4Ekk$}J]^_J`ahJikklll$33]8KA8Nw8W[d8d8dL!_F!_!_!_```JrNNNj((*4*:*:3*B*B%'/s';';$L$LU$L$L		$.$5$5c$:$:Y$F	%-\)D%I%I%INL!X>!X!XJ!X!XYYY%1S88). 
(,)7)<)<)>)> '-Yv-Y-YQW-Y-Y Z Z Z'-#'#7 , , , '  /ASY  /A  /Akyk~  /A  /A  !B  !B  !B'+ttt, $M*q*q*q\j\o*q*qrrr#'44  'S[a  'S  'S  wE  wQ  'S  'S  T  T  T#ttL!|F!|!|imnyiz!|!|}}}}uuu_g_suuvvv"3 	 	 	MYFYYVWYYZZZ444444	 O7v778884sC   EI4/F88.G+&I4*G++"I4I42A I44J.J))J.c           
      
   t                      }|                    t          j        j                  }|                    d| f           |                                }|st          j        d|  d           d S 	 |d         }t          j
                            t          d|  d          }t          j        |          }|j        dk    rJt          j        d|  d	|j                    	 |                                 |                                 d S t%          |d
          5 }|                    |j                   d d d            n# 1 swxY w Y   t          j
                            |          sBt          j        d|             	 |                                 |                                 d S t-                      }|sBt          j        d|             	 |                                 |                                 d S |d         }	|d         }
|d                             d          d                             d          dz   t          j
                            |          z   dz   |d                             d          d         z   }t5          ||          sBt          j        d|             	 |                                 |                                 d S t7          |	          sBt          j        d|	            	 |                                 |                                 d S t9          |	|
          }|sBt          j        d|	            	 |                                 |                                 d S |                    d| |                    d          |	|                    dd          t;          |          df           |                    d| f           |                                 t          j        d|             tA          |            t          j
                            |          r+t          j!        |           t          j        d|             n># tD          $ r1}t          j        d|  dt;          |                      Y d }~nd }~ww xY w|                                 |                                 d S # |                                 |                                 w xY w) Nz9SELECT * FROM 6840_calls WHERE callid = %s AND status = 0u   ⚠️ Call ID z  not found or already processed.r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   z 
            INSERT INTO 6840_sarvamresponse (callid, transcript, request_id, language, raw_response, status, created_at, updated_at)
            VALUES (%s, %s, %s, %s, %s, %s, NOW(), NOW()) 
        r   r   r   z2UPDATE 6840_calls SET status = 1 WHERE callid = %suA   ✅ Translated transcript inserted and status updated for callid u)   🧹 Deleted local audio file for callid r!   r    )#r   r#   r$   r%   r&   r'   fetchoner0   rA   r)   r*   r+   r,   r-   r.   r/   r1   rB   r2   r3   r4   r5   r6   r7   r8   r9   r   r:   r;   r<   r=   r>   r   r?   r@   )rF   rC   r#   rE   rG   rH   rI   rJ   rK   r   rL   rM   rN   rO   s                 rP   process_call_idrz      sN   D[[344F
NNNQXPZ[[[??D S'SSSTTT:	?W\\)-G'-G-G-GHH
<))3&&MrGrr\d\prrsssf 	

e *d## 	&qGGH$%%%	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& w~~j)) 	MQQQRRRX 	

W  	MUGUUVVVN 	

M X./
,-33C88;BB3GG#MPRPWP`P`akPlPllorrux  zN  vO  vU  vU  VY  vZ  vZ  [\  v]  ]	#Iz:: 	MT7TTUUU> 	

=  '' 	MNfNNOOO6 	

5 $FJ77 	MHHHIII, 	

+ 	  vzz,//OU^9_9_adekalalnop	r 	r 	r
 	KgZXXXbY`bbcccW%%% 7>>*%% 	PIj!!!LNWNNOOO G G GE'EESVVEEFFFFFFFFG 	

 	

s{   ;A/Q9 Q9 %E Q9 EQ9 E9Q9 8'Q9 
B3Q9 (&Q9 9)Q9 C+Q9 8S! 9
R4'R/*S! /R44S! !*T)r)   r-   r0   ro   r$   rX   azure_uploadr   openai_helperr   	db_configr   dotenvr   urllib3disable_warningsr_   InsecureRequestWarningbasicConfigINFOgetenvr\   r,   rQ   r6   r:   r;   rz        rP   <module>r      s?   				      - - - - - - . . . . . . ' ' ' ' ' '         +B C C C   ', ' ' ' '29677 	@6 @6 @6D     (* * *ZD D D D Dr   