
    /_iH                        d dl m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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)caching)calc_md5z3\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        d/var/www/html/land_sniper/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                N   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_vttr3   G   s    $ (E"	Sw/H h$<T(^<LAN
 	

 vv*Hh?H )K%%g.. " 	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   r3   r   r   
startswithr   r'   )data_or_pathr9   file_extensionfilecontentcontent_strings         r&   _handle_string_or_path_datarF   n   s   	ww~~l#L!**,!99,^,< =115;S1T0UW  ,% 	"iikG	"'5'?{7#LW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'   r3   )r!   stream_datas     r&   _handle_stream_datarK      s/    
KKN//#K'.v;{#GKG    c                2    t        |       rt        |       S | S )rH   )r'   r3   )datas    r&   _handle_bytes_datarO      s     ';t747rL   c                   t        |t        t        f      rt        |      }nZt        |t        j
                        rt        |      }n4t        |t              rt        |      }nt        dt        |       d      t        j                         rft        |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_namer7   )r   r   r   rF   r   r   rK   r   rO   r+   r,   r   existsr   r   get_instancemedia_file_mgraddr   save_media_data)rS   rN   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~~ELLN+'')88<<&#!
$'	 = 
 	z;GrL   )r!   zstr | io.BytesIO | bytesreturnbool)r/   zstr | bytesr_   r   )rA   z
str | Pathr_   r   )r!   z
io.BytesIOr_   r   )rN   r   r_   r   )rS   r   rN   zstr | bytes | Path | io.BytesIOrZ   r   r_   r   )
__future__r   r   r8   r   pathlibr   	streamlitr   streamlit.runtimer   streamlit.utilr   r    r.   r=   r'   r3   rF   rK   rO   r^    rL   r&   <module>rg      sz    # 	 	 	   % #
 N 5 +  F$/NV4H8

)  		rL   