
    ge                        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m	Z	 d dl
mZ dZdZdZdd	Zdd
ZddZddZddZ	 	 	 	 	 	 	 	 ddZy)    )annotationsN)Path)runtime)cachingz3\d{2}:\d{2}:\d{2},\d{3} --> \d{2}:\d{2}:\d{2},\d{3}z(\d{2}:\d{2}:\d{2}),(\d{3})).srt.vttc                   t        | t              rt        j                  |       } t        | t              r$t        j                  | j                  d            } | j                  d       | j                  d      }	 |j                  d      j                         }|j                  d      }t        |      dk\  r3|d   j                         r t        j                  t         |d         }|ryy# t        $ r Y yw xY w)	Nutf-8r   !   F
      T)
isinstancebytesioBytesIOstrencodeseekreaddecodestripUnicodeDecodeErrorsplitlenisdigitresearchSRT_VALIDATION_REGEX)streamheader
header_strlinesmatchs        Z/var/www/openai/venv/lib/python3.12/site-packages/streamlit/elements/lib/subtitle_utils.py_is_srtr&   $   s    &% F# &#FMM'23 KKN
 [[_F]]7+113
 T"E 5zQ58++-		.a9  s   =C/ /	C;:C;c                R   t        | t              r	 | j                  d      } t        | t
              st        dt        |        d      t        j                  t        d|       }d|z   }|j                         j                  d      }|S # t        $ r}t	        d      |d}~ww xY w)a  
    Convert subtitles from SubRip (.srt) format to WebVTT (.vtt) format.
    This function accepts the content of the .srt file either as a string
    or as a BytesIO stream.
    Parameters
    ----------
    srt_data : str or bytes
        The content of the .srt file as a string or a bytes stream.
    Returns
    -------
    bytes
        The content converted into .vtt format.
    r
   z+Could not decode the input stream as UTF-8.Nz.Input must be a string or a bytes stream, not .z\1.\2zWEBVTT

)r   r   r   r   
ValueErrorr   	TypeErrortyper   subSRT_CONVERSION_REGEXr   r   )srt_dataevtt_datavtt_contents       r%   _srt_to_vttr2   G   s      (E"	Sw/H h$<T(^<LAN
 	

 vv*Hh?H )K##%,,W5K! " 	SJKQRR	Ss   B 	B&B!!B&c                V   t         j                  j                  |       rt        |       }|j                  j                         }|t        vr$t        d| ddj                  t                     t        | d      5 }|j                         }ddd       |dk(  rt              S S t        | t              rt        d|  d      | j                         }|j                  d	      s|d
k(  r|j                  d      S t!        |      rt        |      S t        d      # 1 sw Y   xY w)z:Handles string data, either as a file path or raw content.zIncorrect subtitle format z5. Subtitles must be in one of the following formats: z, rbNr   zFile z does not exist.WEBVTT r
   z=The provided string neither matches valid VTT nor SRT format.)ospathisfiler   suffixlowerSUBTITLE_ALLOWED_FORMATSr)   joinopenr   r2   r   r   
startswithr   r&   )data_or_pathr8   file_extensionfilecontentcontent_strings         r%   _handle_string_or_path_datarE   n   s   	ww~~l#L!**,!99,^,< =115;S1T0UW  ,%iikG &'5'?{7#LWL	L$	'5.>?@@!'')N  *n.B$$W--		 >**
T
UU &%s   =DD(c                t    | j                  d       | j                         }t        |       rt        |      S |S )AHandles io.BytesIO data, converting SRT to VTT content if needed.r   )r   getvaluer&   r2   )r    stream_datas     r%   _handle_stream_datarJ      s/    
KKN//#K'.v;{#GKG    c                2    t        |       rt        |       S | S )rG   )r&   r2   )datas    r%   _handle_bytes_datarN      s     ';t747rK   c                    t        |t        t        f      rt        |      }nZt        |t        j
                        rt        |      }n4t        |t              rt        |      }nt        dt        |       d      t        j                         r~t        j                  |j                               j!                         }t        j"                         j$                  j'                  |d| | d      }t)        j*                  |d|        |S y)Nz)Invalid binary data format for subtitle: r(   ztext/vttr   )path_or_datamimetypecoordinates	file_namer6   )r   r   r   rE   r   r   rJ   r   rN   r*   r+   r   existshashlibmd5r   	hexdigestget_instancemedia_file_mgraddr   save_media_data)rR   rM   labelsubtitle_datafilenamefile_urls         r%   process_subtitle_datar`      s     $d$3D9	D"**	%+D1	D%	 *40CDJ<qQRR~~;;u||~.88:'')88<<&#!
$'	 = 
 	z;G rK   )r    zstr | io.BytesIO | bytesreturnbool)r.   zstr | bytesra   r   )r@   z
str | Pathra   r   )r    z
io.BytesIOra   r   )rM   r   ra   r   )rR   r   rM   zstr | bytes | Path | io.BytesIOr\   r   ra   r   )
__future__r   rU   r   r7   r   pathlibr   	streamlitr   streamlit.runtimer   r   r-   r<   r&   r2   rE   rJ   rN   r`    rK   r%   <module>rh      sz    #  	 	 	   %
 N 5 +  F$NV4H8

)  		rK   