
    $hf                     b   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        yy)    N)upload_to_azure_blob)send_openai_analysis)get_db_connection)load_dotenv)levelSARVAM_SUBSCRIPTION_KEYzstorage/audio/c                     t               } | j                  t        j                  j                        }|j                  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||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 }~,d }~ww xY w)!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 7417_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                  MC:\Users\pc\OneDrive\Desktop\rabbitasrvam\rabbitmqsarvam\sarvam_controller.pysend_to_sarvamrI      sT   D[[334F
NN>?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  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{   A;MM$L ?M $M&BM:#M&MA3M;-LL	M	M
%M MM

M	N'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_KEYr%   postr'   rP   r(   r)   text
exceptionsRequestExceptionr4   )rO   rA   rG   s      rH   r.   r.   T   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)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&MM<X=Q=Q<RRUV^VcVcUdef// @QIJs   (A+ /A+ +B3!B..B3c           
         dt         i}t        d      D ]  }t        j                  d       	 t	        j
                  d|  d|d      }|j                  dk(  r|j                         }t        j                  d	|  d
|d    d|d   d   d           |d   dk(  rL|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                           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)*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$	||&YZ`Yaah$isz  DH  IH##s*}}tF88D4E3Fc$}J]^_J`ahJiIjkl$3]8KA8Nw8W[d8d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vG N OO.vh78# $(#7#7 , '0RSYRZZjkyk~k~j  /A  !B'+, ""33 	MMKF8SUVWUXYZ	sI   D=J,,I	%J%J)AJ	8JJJJK%KK__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      s    	      - . '      ++BB C    ',, '29967 	@6D (*X z r~   