
    h                         d dl Z d dlZd dlmZmZmZ ddlmZ ddlm	Z	 ddl
mZ ddlmZ dd	lmZmZmZmZ dd
lmZ  e j        d          Z eddd          Z G d de          ZdS )    N)OptionalTextIOAny   )
FormatBase   )SSAEvent)SSAStyle)
parse_tags)ms_to_times	make_timeTIMESTAMP_SHORTtimestamp_to_ms)SSAFilez(\d{1,2}:\d{2}:\d{2}):(.+)c   ;   )hmsc                       e Zd ZdZededefd            Zedede	e         fd            Z
eddd	ed
ededdf
d            Zedddd	ed
edededdfd            ZdS )	TmpFormatz"TMP subtitle format implementationmsreturnc                     | dk     rd} | t           k    r!t          j        dt                     t           } t	          |           \  }}}}|dd|dd|dS )zConvert ms to 'HH:MM:SS'r   z=Overflow in TMP timestamp, clamping to MAX_REPRESENTABLE_TIME02d:)MAX_REPRESENTABLE_TIMEwarningswarnRuntimeWarningr   )r   r   r   r   _s        S/var/www/html/auto_sub_bot/venv/lib/python3.11/site-packages/pysubs2/formats/tmp.pyms_to_timestampzTmpFormat.ms_to_timestamp   so     66B&&&MY[ijjj'B __
1a)))!)))!))))    textc                     d|v sd|v rdS |                                 D ]J}t                              |          r.t          t                              |                    dk    r dS KdS )z5See :meth:`pysubs2.formats.FormatBase.guess_format()`z[Script Info]z[V4+ Styles]Nr   tmp)
splitlinesTMP_LINEmatchlenfindall)clsr%   lines      r"   guess_formatzTmpFormat.guess_format"   sx     d""n&<&<4OO%% 	 	D~~d## H,<,<T,B,B(C(Cq(H(Huutr$   subsr   fpformat_kwargsNc                 l   g }dt           dt           fd}|D ]}t                              |          }|s|                                \  }	}
t	          j        |	          }|
J d            t          |                                          }	|	dz   t          |          dz  z   }t          |	| ||
                    }|                    |           t          t          |          d	z
            D ]6}t          ||         j        ||d	z            j                  ||         _        7||_        dS )
z2See :meth:`pysubs2.formats.FormatBase.from_file()`r%   r   c                     |                      dd          } t          j        dd|           } t          j        dd|           } | S )N|\Nz< *u *>z{\\u1}z< */? *[a-zA-Z][^>]*> )replaceresub)r%   s    r"   prepare_textz)TmpFormat.from_file.<locals>.prepare_text4   sA    <<U++D6*i66D62B==DKr$   Nz!TMP_LINE contains TIMESTAMP_SHORTi  C   )startendr%   r   )strr)   r*   groupsr   r   r+   r	   appendrangeminr?   r>   events)r-   r0   r1   r2   r3   rE   r<   r.   r*   r>   r%   match2	end_guesseventis                  r"   	from_filezTmpFormat.from_file/   sH    	s 	s 	 	 	 	  	! 	!DNN4((E ,,..KE4$*511F%%'J%%%#FMMOO44E s4yy2~6I5ill4>P>PQQQEMM%     s6{{Q'' 	B 	BAq	vac{/@AAF1IMMr$   Tapply_stylesc                 F   dt           dt          dt           ffd}                                D ]m}|                     |j                  } ||j        j                            |j        t          j	                            }	t          |dz   |	z   d|           ndS )	z
        See :meth:`pysubs2.formats.FormatBase.to_file()`

        Italic, underline and strikeout styling is supported.

        Keyword args:
            apply_styles: If False, do not write any styling.

        r%   styler   c                    g }t          | |j                  D ]\  }}|                    dd          }|                    dd          }|                    dd          }r'|j        rd| d}|j        rd| d	}|j        rd
| d}|                    |           t          j        ddd	                    |          
                                          S )Nz\h z\n
r7   z<i>z</i>z<u>z</u>z<s>z</s>z
+r8   )r   stylesr9   italic	underline	strikeoutrB   r:   r;   joinstrip)r%   rM   bodyfragmentstyrK   r0   s        r"   r<   z'TmpFormat.to_file.<locals>.prepare_text\   s    D!+D%!E!E & &##++E377#++E488#++E488 8z 8#7#7#7#7} 8#7#7#7#7} 8#7#7#7#7H%%%%6%rwwt}}':':'<'<===r$   r   rP   )r?   fileN)r@   r
   get_text_eventsr#   r>   r%   rQ   getrM   DEFAULT_STYLEprint)
r-   r0   r1   r2   rK   r3   r<   r.   r>   r%   s
    `  `     r"   to_filezTmpFormat.to_fileQ   s    	>s 	>8 	> 	> 	> 	> 	> 	> 	> 	>" ((** 	9 	9D''
33E<	4;??4:xG]+^+^__D%#+$$R88888		9 	9r$   )T)__name__
__module____qualname____doc__staticmethodintr@   r#   classmethodr   r/   r   r   rJ   boolr_    r$   r"   r   r      s       ,,*C *C * * * \* 
 
 
 
 
 [
 Y F S C TX    [B 9 99 9& 93 9d 9eh 9mq 9 9 9 [9 9 9r$   r   )r:   r   typingr   r   r   baser   ssaeventr	   ssastyler
   
substationr   timer   r   r   r   ssafiler   compiler)   r   r   rh   r$   r"   <module>rq      s   				  ( ( ( ( ( ( ( ( ( (                   " " " " " " K K K K K K K K K K K K       2:344 #R2444 ]9 ]9 ]9 ]9 ]9
 ]9 ]9 ]9 ]9 ]9r$   