o
    -F)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mZ ddl	Z	e
deeddZe
deed	d
ZdddZdddZdS )z?Probe WAV duration from recording URLs (no STT provider calls).    )annotationsN)Optionali   MIN_DURATION_PROBE_RANGE_BYTES65536   MIN_DURATION_PROBE_TIMEOUT_S20databytesreturnOptional[float]c           	      C  s\  t | dk s| dd dks| dd dkrd S d}d }d }d }|d t | kr| ||d  }td| |d |d  d }|d }|| }|d	krw|t | krw|d
krwtd| |d |d  d }td| |d |d  d }n|dkr~|}n||d  }|d t | ks(|r|dkr|d ur|t| S |r|dkr|d ur|t| S d S )N,   r      s   RIFF      s   WAVEz<Is   fmt    s   data   )lenstructunpackfloat)	r	   offsetsample_rate	byte_rate
data_byteschunk_id
chunk_sizechunk_start	chunk_end r   J/home/aiteam/pcaa-dev/call-proccessing/stt_pipeline/stt/recording_probe.py_wav_duration_from_header_bytes   s0   ,  "r!   urlstrc           	      C  s,  t | pd } | dsd S ddtd  i}d }z'tj| |td}|jdv r,|j}n|jdkr@tj| td	}|jd
kr@|j}W n
 t	yK   Y d S w |sPd S d }zznt
jdddd}|| |j}W d    n1 sow   Y  t|d>}| }|dkrtd| t| W  d    W W |rtj|rzt| W S  ty   Y S w S S W d    n1 sw   Y  W n	 t	y   Y nw W |rtj|rzt| W n( ty   Y n w n|rtj|rzt| W w  ty   Y w w w w t|}|d urtdt|S d S )N )zhttp://zhttps://Rangezbytes=0-   )headerstimeout)      i  )r(   r)   z.wavFz/tmp)suffixdeletedirrbr   g        )r#   strip
startswith_PROBE_RANGE_BYTESrequestsget_PROBE_TIMEOUT_Sstatus_codecontent	ExceptiontempfileNamedTemporaryFilewritenamewaveopengetframeratemax
getnframesr   ospathexistsunlinkOSErrorr!   )	r"   r'   r	   resptmp_pathtmpwfrateheader_durationr   r   r    probe_wav_duration_from_url+   sx   




rL   )r	   r
   r   r   )r"   r#   r   r   )__doc__
__future__r   rA   r   r8   r<   typingr   r2   r?   intgetenvr1   r4   r!   rL   r   r   r   r    <module>   s    
