
    h+                     H   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d	Zd
 Zd Zd Zd Zy)    N)upload_to_azure_blob)send_openai_analysis)get_db_connection)load_dotenv)levelSARVAM_SUBSCRIPTION_KEYzstorage/audio/c                 J   t               }|j                  t        j                  j                        }| r|  d}|  d}nd}d}|j                  d| d       |j                         }|D ]  }	 |d   }|d   }t        j                  j                  t        d	| d
      }	t        j                  |      }
|
j                  dk7  r&t        j                  d| d|
j                          t!        |	d      5 }|j#                  |
j$                         d d d        t        j                  j'                  |	      st        j                  d|        t)               }|st        j                  d|        |d   }|d   }|d   j+                  d      d   j-                  d      dz   t        j                  j/                  |	      z   dz   |d   j+                  d      d   z   }t1        ||	      st        j                  d|        t3        |      st        j                  d|        t5        ||      }|st        j                  d|        |j                  d| d||j                  d      ||j                  dd      t7        |      df       |j9                          t        j:                  d |        t=        ||        	 t        j>                  |	       t        j:                  d!|         |jE                          |jE                          d%d&iS # 1 sw Y   xY w# t@        $ r%}t        jB                  d"|	 d#|        Y d }~]d }~ww xY w# t@        $ r2}t        j                  d$|d    d#t7        |              Y d }~1d }~ww xY w)'N_calls_sarvamresponse
7417_calls7417_sarvamresponseSELECT * FROM z 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 z (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)bidconnr(   calls_tablesarvam_response_tablecallscallcall_idfile_url
local_fileresponsefjobr   
output_url	azure_urlresultes                     FC:\Users\pc\OneDrive\Desktop\local2\rabbitmqsarvam\sarvam_processor.pysend_to_sarvamrY      s   D[[334F Vn#&% 7" 5
NN^K=0ABCOOE6	R8nGIHi:gYd1KLJ||H-H##s* GyP_`h`t`t_uvwj$'1(() ( 77>>*- KG9UV!#C OPWyYZ]F23J0177<Q?FFsKcQTVT[T[TdTdeoTppsvvy|  ~R  zS  zY  zY  Z]  z^  _`  za  aI'	:> NwiXY#F+ I&RS'
;F CF8LMNN  23 4 6::l3VVZZYb=cehioeprstv KKMLLI'ST #.S		*%B7)LMe r LLNJJL455c ('R  S"?
|2aS QRRS  	RMM5d8n5ERAxPQQ	Rs{   1A;M'-M'9L)?M'$M';BM'#M'4&M'A8M'-L6)L3	.M'6	M$?MM'M$$M''	N"0'NN"c                  |   t         dd} 	 t        j                  d| i d      }|j                  dk(  r|j	                         S t        j                  d|j                   d|j                          y # t        j                  j                  $ r+}t        j                  d	t        |              Y d }~y 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_KEYr2   postr4   r`   r5   r6   text
exceptionsRequestExceptionrA   )r_   rQ   rW   s      rX   r;   r;   a   s     0*G	==!Zdkrt  ~B  C3&==?"MM1(2F2F1Gs8==/Z[// ?AxHIs   7A3 /A3 3B;!B66B;c                 l   t         dd}| ddid}	 t        j                  d||d      }|j                  d	k(  ryt	        j
                  d
|j                   d|j                          y# t        j                  j                  $ r+}t	        j
                  dt        |              Y d }~yd }~ww xY w)Nr[   r\   with_diarizationF)r   job_parametersz2https://api.sarvam.ai/speech-to-text-translate/jobTr^   r   u    ❌ Failed to start Sarvam job: rc   u(   ❌ Request exception during job start: )
rd   r2   re   r4   r5   r6   rf   rg   rh   rA   )r   r_   datarQ   rW   s        rX   r?   r?   q   s     0*G
 -u5D	==!U_fmqz~3&MM<X=Q=Q<RRUV^VcVcUdef// @QIJs   (A+ /A+ +B3!B..B3c           
      6   dt         i}t        d      D ]e  }t        j                  d       	 t	        j
                  d|  d|d      }|j                  dk(  r|j                         }|j                  d	      rTt        |d	         d
kD  rCt        j                  d|  d|d    d|d	   d
   d           |d   dk(  xr |d	   d
   d   dk(  }n't        j                  d|  d|d    d       |d   dk(  }|r=t        j                  d|  d       t        j                  d       d|v r,|j                  dd      \  }}|j                  d       d| }	n|j                  d      dz   }	t	        j
                  |	d      }
t        j                  d|
 d|        |
j                  dk(  rc|
j                  r0	 |
j                         }t        j                  d|  d|        |c S t        j                  d!|  d"|
j                           y t        j                  d#|  d$|
j                           y t        j                  d%|  d&|d           n%t        j                  d'|  d(|j                          h t        j$                  d*|         y # t        j                  $ r) t        j                  d|  d |
j                          Y  y w xY w# t        j                   j"                  $ r&}t        j                  d)|  d|        Y d }~ y d }~ww xY w)+Nr]   x   
   z3https://api.sarvam.ai/speech-to-text-translate/job/z/statusT)r_   ra   r   job_detailsr   zJob z state: 	job_staterc   state	CompletedSuccessz - no job details availableu   ✅ Job z+ completed successfully, fetching result...r   r   r   z/0.json?z/0.json)ra   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 )rd   rangetimesleepr2   r3   r4   r`   lenr5   rC   r<   r=   rf   JSONDecodeErrorr6   rg   rh   rF   )r   rT   r_   attemptrQ   rl   job_successbase_urlquery	final_urlfinal_responseparsedrW   s                rX   r@   r@      sK   %'78G:

2+	||&YZ`Yaah$isz  DH  IH##s*}}88M*s43F/G!/KLL4xx[8I7J#dS`NabcNdelNmMn!op"&{"3{"B"stMGZ[\G]^eGfjsGsKLL4xx[8I7JJe!fg"&{"3{"BKLL8F83^!_`JJrNj(*4*:*:3*B%'/s';&<HUG$L	$.$5$5c$:Y$F	%-\\)D%INLL#:>:J!J<!XY%11S8)..,)7)<)<)> '/FvhbQWPX-Y Z'-
 $MM,Gx|\j\o\o[p*qr#'(Z[aZbbu  wE  wQ  wQ  vR  'S  T#LL8F83himnyizh{!|} Gx_g_s_s^tuvU \ OO.vh78# $(#7#7 , '0RSYRZZjkyk~k~j  /A  !B'+, ""33 	MMKF8SUVWUXYZ	sI   F
K9,J(%K%K6AK8KKKKL2LLc           
      *	   t               }|j                  t        j                  j                        }| d}| d}|j                  d| d| f       |j                         }|st        j                  d|  d| d       y 	 |d   }t        j                  j                  t        d	|  d
      }t        j                  |      }	|	j                  dk7  rGt        j                   d|  d|	j                          	 |j#                          |j#                          y t%        |d      5 }
|
j'                  |	j(                         d d d        t        j                  j+                  |      s:t        j                   d|         	 |j#                          |j#                          y t-               }|s:t        j                   d|         	 |j#                          |j#                          y |d   }|d   }|d   j/                  d      d   j1                  d      dz   t        j                  j3                  |      z   dz   |d   j/                  d      d   z   }t5        ||      s:t        j                   d|         	 |j#                          |j#                          y t7        |      s:t        j                   d|        	 |j#                          |j#                          y t9        ||      }|s:t        j                   d|        	 |j#                          |j#                          y |j                  d| d| |j                  d      ||j                  dd      t;        |      df       |j                  d | d!| f       |j=                          t        j>                  d"|         tA        | |       t        j                  j+                  |      r-t        jB                  |       t        j>                  d#|         |j#                          |j#                          y # 1 sw Y   xY w# tD        $ r.}t        j                   d$|  d%t;        |              Y d }~`d }~ww xY w# |j#                          |j#                          w xY w)&Nr
   r   r   z! WHERE callid = %s AND status = 0u   ⚠️ Call ID z) not found or already processed in table .r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   z 
            INSERT INTO z (callid, transcript, request_id, language, raw_response, status, created_at, updated_at)
            VALUES (%s, %s, %s, %s, %s, %s, NOW(), NOW()) 
        r"   r#   r$   zUPDATE z! 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,   fetchoner5   rF   r.   r/   r0   r1   r2   r3   r4   r6   rG   r7   r8   r9   r:   r;   r<   r=   r>   r   r?   r@   rA   rB   rC   r   rD   rE   )rN   rH   rI   r(   rJ   rK   rM   rO   rP   rQ   rR   rS   r   rT   rU   rV   rW   s                    rX   process_call_idr      s#   D[[334F E.K"e?3
NN^K=0QRU\T^_??D/'2[\g[hhijk:	?WW\\)z'$-GH
<<)3&MMCG9O\d\p\p[qrsf 	

e *d#qGGH$$% $ ww~~j)MMGyQRX 	

W MMKG9UVN 	

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

=  'MMEfXNO6 	

5 $FJ7MM?xHI, 	

+ 	 ./ 0	 vzz,/OU^9_adekalnop	r
 	-NORYQ[\XY`XabcWc* 77>>*%IIj!LLDWINO 	

e $#Z  G1'"SVHEFFG 	

si   A6P6 P6 )P)?P6 &$P6 ,BP6  #P6 %&P6 -CP6 )P3.P6 6	Q-?$Q(#Q0 (Q--Q0 0"R)N)r.   r2   r5   rw   r)   r`   azure_uploadr   openai_helperr   	db_configr   dotenvr   urllib3disable_warningsrg   InsecureRequestWarningbasicConfigINFOgetenvrd   r1   rY   r;   r?   r@   r        rX   <module>r      s    	      - . '     ++BB C    ',, '29967 	I6V (1hHr   