
    Ϥhf                     J   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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edk    r e             dS 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_z.wav   u'   ❌ Failed to download file for callid . Status code: wbu+   ❌ File missing after download for callid u/   ❌ Failed to initialize Sarvam job for callid job_idoutput_storage_pathinput_storage_path?r   /   u.   ❌ Failed to upload file to Azure for callid u)   ❌ Failed to start Sarvam job for jobid u#   ❌ 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 : u   ❌ 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                  1C:\wamp64\www\rabbitmqsarvam\sarvam_controller.pysend_to_sarvamrI      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'   rP   r(   r)   text
exceptionsRequestExceptionr4   )rO   rA   rG   s      rH   r.   r.   T   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)NrK   rL   with_diarizationF)r   job_parametersz2https://api.sarvam.ai/speech-to-text-translate/jobTrN   r   u    ❌ Failed to start Sarvam job: rS   u(   ❌ Request exception during job start: )
rT   r%   rU   r'   r(   r)   rV   rW   rX   r4   )r   rO   datarA   rG   s        rH   r2   r2   d   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 )*NrM   x   
   z3https://api.sarvam.ai/speech-to-text-translate/job/z/statusT)rO   rQ   r   zJob z state: 	job_staterS   job_detailsr   state	CompletedSuccessu   ✅ Job z+ completed successfully, fetching result...r   r   r   z/0.json?z/0.json)rQ   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 )rT   rangetimesleepr%   r&   r'   rP   r(   r6   r/   r0   rV   JSONDecodeErrorr)   rW   rX   r9   )r   rD   rO   attemptrA   r\   base_urlquery	final_urlfinal_responseparsedrG   s               rH   r3   r3   x   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.__main__)r!   r%   r(   rg   r   rP   azure_uploadr   openai_helperr   	db_configr   dotenvr   urllib3randomdisable_warningsrW   InsecureRequestWarningbasicConfigINFOgetenvrT   r$   rI   r.   r2   r3   __name__     rH   <module>r      sS   				      - - - - - - . . . . . . ' ' ' ' ' '          +B C C C   ', ' ' ' '29677 	@6 @6 @6D     (* * *X zN r~   