o
    |j                     @  s   d Z ddlmZ 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
 ejejeZejeZejeddZedZdd
dZdd ZdddZdddZedkr_ee dS )zHRun a short direct STT pass for one BID, bypassing RabbitMQ queue order.    )annotationsN)load_dotenvzcall-proccessingstt_pipelinededicated_stt_passreturnNonec                   C  s:   t tjtd t tjtddd tjdt d S )Nz.envF)overrider   )r   ospathjoinBACKEND_DIRSTT_DIRsysinsert r   r   run_dedicated_stt_pass.py	_load_env   s   r   c               	   C  s2   ddl m}  tj| j| j| j| j| jtj	j
ddS )Nr   settingsF)hostportuserpassworddatabasecursorclass
autocommit)config.settingsr   pymysqlconnectdb_hostdb_portdb_userdb_passworddb_namecursors
DictCursorr   r   r   r   _db_connection   s   r&   bidstrlimitintc              	   C  s   d|  d}t  5}|  }|d| d|f | pg W  d    W  d    S 1 s1w   Y  W d    d S 1 sAw   Y  d S )N`z_raw_calls`z=
                SELECT callid, fileurl
                FROM z
                WHERE status = 1
                  AND fileurl IS NOT NULL
                  AND fileurl != ''
                ORDER BY id DESC
                LIMIT %s
                )r&   cursorexecutefetchall)r'   r)   	raw_tableconncurr   r   r   _fetch_calls)   s   
	
"r2   c               
     sd  t  } | jddd | jdtdd | jdtdd |   t  tjtjd	t	t
jgd
 ddlm} ddlm} ||}| |_d|_tt jt j}td j dt| d  fdd}ttj| |D ];}t|d }td j d| dd ttdt j z|t j||d d W td qptd w td dS )Nz--bidT)requiredz--limit   )typedefaultz--call-timeoutiX  z1%(asctime)s [%(levelname)s] %(name)s: %(message)s)levelformathandlersr   )get_stt_provider)RabbitMQTranscriptionWorkerzDedicated STT pass for BID z: z call(s)c                   s   t d j d)NzCall exceeded s)TimeoutErrorcall_timeout)signumframeargsr   r   _timeout_handlerT   s   zmain.<locals>._timeout_handlercallidzProcessing /)flush   fileurl)r'   call_idrecording_urlzDedicated STT pass complete)argparseArgumentParseradd_argumentr*   
parse_argsr   loggingbasicConfigINFOStreamHandlerr   stdoutstt.factoryr:   %workers.rabbitmq_transcription_workerr;   __new__sttmax_retriesr2   r(   r'   r)   printlensignalSIGALRMalarmmaxr>   _process_job)parserr:   r;   workercallsrC   rowrI   r   rA   r   main<   sD   
rd   __main__)r   r   )r'   r(   r)   r*   )r   r*   )__doc__
__future__r   rK   rO   r	   r[   r   r   dotenvr   r
   dirnameabspath__file__r   REPO_DIRr   r   	getLoggerloggerr   r&   r2   rd   __name__
SystemExitr   r   r   r   <module>   s(   



.
