
    h.C                        d dl Z d dlZd dlZd dlmZmZmZmZ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mZmZ dd	lmZmZmZmZmZ dd
lmZ dedefdZdedefdZ ej         d          Z! ej         d          Z"dddZ#g dg ddZ$dddZ%g dg ddZ& ed          dz
  Z'dede(fdZ)dede(fdZ*de(defd Z+de(de,fd!Z-ej.        dd"fd#e(d$ed%eee(ef                  d&e,de	ee(ef                  f
d'Z/d(Z0 G d) d*e          Z1dS )+    N)AnyUnionOptionalDictTupleListTextIO   )
FormatBase   )SSAEvent)SSAStyle)Color	AlignmentSSA_ALIGNMENT)	make_timems_to_timestimestamp_to_ms	TIMESTAMPTIMESTAMP_SHORT)SSAFileireturnc                 V    t          j        dt                     t          | dz
           S )NzJass_to_ssa_alignment function is deprecated, please use the Alignment enumr
   )warningswarnDeprecationWarningr   r   s    Z/var/www/html/auto_sub_bot/venv/lib/python3.11/site-packages/pysubs2/formats/substation.pyass_to_ssa_alignmentr       s%    M^`rsss1    c                 d    t          j        dt                     t          j        |           dz   S )NzJssa_to_ass_alignment function is deprecated, please use the Alignment enumr
   )r   r   r   r   indexr   s    r   ssa_to_ass_alignmentr$      s,    M^`rsssq!!A%%r!   z^.{,3}\[[^]]*[a-z][^]]*]z$(fontname|filename):\s+(?P<name>\S+)zFormat: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, EncodingzFormat: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, TertiaryColour, BackColour, Bold, Italic, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, AlphaLevel, Encoding)assssa)fontnamefontsizeprimarycolorsecondarycoloroutlinecolor	backcolorbolditalic	underline	strikeoutscalexscaleyspacingangleborderstyleoutlineshadow	alignmentmarginlmarginrmarginvencoding)r'   r(   r)   r*   tertiarycolorr,   r-   r.   r5   r6   r7   r8   r9   r:   r;   
alphalevelr<   zOFormat: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, TextzPFormat: Marked, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text)
layerstartendstylenamer9   r:   r;   effecttext)
markedr@   rA   rB   rC   r9   r:   r;   rD   rE   
   )hcc                 Z    d| j         dz  | j        dz  z  | j        dz  z  | j        z  dS )Nz&H         08X)abgrrI   s    r   color_to_ass_rgbarT   <   s6    D!#)r	*acQh7!#=DDDDr!   c                 >    | j         dz  | j        dz  z  | j        z   S )NrL   rM   )rP   rQ   rR   rS   s    r   color_to_ssa_rgbrV   ?   s#    r	acQh'!#-00r!   sc                     | d         dk    rt          | dd          d          }nt          |           }|dz  }|dz	  dz  }|dz	  dz  }|dz	  dz  }t          ||||          S )	Nr   &r   rL   )base   rM   rK   )intr   )rW   xrR   rQ   rP   rO   s         r   rgba_to_colorr^   B   s|    ts{{!""BFF	DA	
a4A	
bDA	
bDAAq!r!   c                     d| vod| vS )z
    Returns True if string s can be stored in a SubStation field.

    Fields are written in CSV-like manner, thus commas and/or newlines
    are not acceptable in the string.

    
, )rW   s    r   is_valid_field_contentrc   M   s     q=)S\)r!   FrE   rB   stylesskip_empty_fragmentsc                   	 i t           j                            |           }t          |          dk    r|r| sg S | fgS dt          dt
          ffd}t           j                            |           		fdt          t          	          dz             D             }t          ||          }t          t          ||                    }|rd |D             }|S )a  
    Split text into fragments with computed SSAStyles.
    
    Returns list of tuples (fragment, style), where fragment is a part of text
    between two brace-delimited override sequences, and style is the computed
    styling of the fragment, ie. the original style modified by all override
    sequences before the fragment.
    
    Newline and non-breakable space overrides are left as-is.
    
    Supported override tags:
    
    - i, b, u, s
    - fn
    - r (with or without style name)
    
    Nr
   all_overridesr   c                 N                                    }t          j        d|           D ]}|dk    r                                 }|                    d          r)|dd          }|v r|                                          }[|                    d          r|dd          }||_        d|v r
d|v |_        d|v r
d|v |_        d	|v r
d|v |_        d
|v r
d|v |_        d|v r;	 t          |dd                    }n# t          t          f$ r Y w xY w|dk    |_        |S )Nz3\\[ibusp][0-9]|\\r[a-zA-Z_0-9 ]*|\\fn[a-zA-Z_0-9 ]+z\rr   z\fn   r   1rP   urW   pr   )copyrefindall
startswithr'   r.   r-   r/   r0   r\   
ValueError
IndexErrordrawing)rg   rW   tagrC   r'   scalerB   rd   s         r   apply_overridesz#parse_tags.<locals>.apply_overridesv   sb   JJLL:TVcdd 	* 	*Ce||JJLL&& *122w6>>t))++A'' *qrr7%

#::"czAHHCZZ CZAFFCZZ"%*AKKCZZ"%*AKKCZZ! #CG&
3 ! ! ! ! !&	AIs   *DDDc                 J    g | ]}d                      d|                    S ) N)join).0r   	overridess     r   
<listcomp>zparse_tags.<locals>.<listcomp>   s-    VVVqBGGIbqbM22VVVr!   c                      g | ]\  }}|||fS rb   rb   )rz   fragmentstys      r   r|   zparse_tags.<locals>.<listcomp>   s%    JJJmhJ8S/JJJr!   )r   OVERRIDE_SEQUENCEsplitlenstrr   ro   rangemaplistzip)
rE   rB   rd   re   	fragmentsrv   overrides_prefix_sumcomputed_stylesoutputr{   s
    ``      @r   
parse_tagsr   X   s   ( ~*0066I
9~~ 	# 	#I5M?"s x       > *22488IVVVVE#i..STBT<U<UVVV/+?@@O#i1122F KJJvJJJMr!   z@Script generated by pysubs2
https://pypi.python.org/pypi/pysubs2c                       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efddd	ed
edededdfd            ZdS )SubstationFormatz:SubStation Alpha (ASS, SSA) subtitle format implementationrequested_msr   c                     | dk     rd} | t           k    r!t          j        dt                     t           } | dz   | dz   dz  z
  }t	          |          \  }}}}|dz  }|dd|dd|dd|dS )	zConvert ms to 'H:MM:SS.cc'r   zDOverflow in SubStation timestamp, clamping to MAX_REPRESENTABLE_TIME   rG   01d:02d.)MAX_REPRESENTABLE_TIMEr   r   RuntimeWarningr   )r   round_msrH   mrW   mscss          r   ms_to_timestampz SubstationFormat.ms_to_timestamp   s     !L000M`bpqqq1L "A%,*:b)@@!(++1a2X222!222!222"2222r!   rE   c                     t          j        d|t           j                  rdS t          j        d|t           j                  rdS dS )z5See :meth:`pysubs2.formats.FormatBase.guess_format()`zV4\+ Stylesr%   z	V4 Stylesr&   N)rn   search
IGNORECASE)clsrE   s     r   guess_formatzSubstationFormat.guess_format   sC     9^T2=99 	5Y|T2=99 	54r!   subsr   fpformat_kwargsNc                 &   dt           dt           dt          ffd|j                                         |j                                         |j                                         |j                                         |j                                         d}d}d}d}d}	g }
d}t          |d          D ]\  }}|	                                }t                              |          r't          j        d||           d	|v }d
|v }d|v }d|v }[|s|r~|                    d          ru	 |                    dd          \  }}|r|	                                |j        |<   n|r|	                                |j        |<   # t           $ r Y w xY w|s|rt"                              |          }|}|	rc|s|s_|
dd         }|r||j        |	<   n|r||j        |	<   nt%          d          t          j        d||	           |
                                 d}	|r|                    d          }|}	}|r|
                    |           |                    d          r|                    dd          \  }}|	                                                    d          }|^}}fdt+          t,                   |          D             }t/          di |}||j        |<   .|                    d          s|                    d          r|                    dd          \  }}|	                                                    dt1          t2                             dz
            }fdt+          t2                   |          D             }||d<   t5          di |}|j                            |           |	rN|
dd         }|r||j        |	<   n
||j        |	<   t          j        d|	           |
                                 d}	dS dS )z2See :meth:`pysubs2.formats.FormatBase.from_file()`fvr   c                    | dv r|                                 }|                    d          r|dd          }d}nd}t          j        |          }|(t	          j        |          }|t          d|          |t          |                                          z  S d| v r#|                                 }t          |          S | dv r|dk    S | d	v r?	 t          |          S # t
          $ r" t          j        d
|  dt                     Y dS w xY w| dv rt          |          S | dk    r|                    d          S | dk    rz	 dk    rt          t          |                    S t          j        t          |                    S # t"          $ r) t          j        dt                     t          j        cY S w xY w| dk    r|                                 S |S )N>   rA   r@   -r
   zFailed to parse timestamp: color>   r-   r.   r0   r/   0>   r?   r9   r:   r;   r<   r>   r5   zFailed to parse z, using defaultr   >   r4   r1   r2   r7   r6   r3   r(   rF   rj   r8   r%   z(Failed to parse alignment, using defaultr'   )striprp   r   matchr   rq   r   groupsr^   r\   r   r   r   floatendswithr   from_ssa_alignment	ExceptionBOTTOM_CENTER)r   r   signr   r   s       r   string_to_fieldz3SubstationFormat.from_file.<locals>.string_to_field   s    $$$GGII<<$$ !""ADDDOA&&9'-a00Ay()Lq)L)LMMMoahhjj9999AGGII$Q'''BBBCxiiiq66M!   M"GQ"G"G"GXXX11 ___Qxxhzz#&k!!3%''(Q000(;CFFCCC  3 3 3M"Ln]]]$22223 jwwyy s*   C% %(DD	!F + F 0F?>F?FNr
   zat line %d: section heading %sInfoAegisubFontsGraphics;r   z6Bad attachment section, expected [Fonts] or [Graphics]z-at line %d: finished attachment definition %srC   zStyle:ra   c                 0    i | ]\  }}| ||          S rb   rb   rz   r   r   r   s      r   
<dictcomp>z.SubstationFormat.from_file.<locals>.<dictcomp>2  +    jjj41aaA!6!6jjjr!   z	Dialogue:zComment:c                 0    i | ]\  }}| ||          S rb   rb   r   s      r   r   z.SubstationFormat.from_file.<locals>.<dictcomp>8  r   r!   typez)at EOF: finished attachment definition %srb   )r   r   infoclearaegisub_projectrd   fonts_opaquegraphics_opaque	enumerater   SECTION_HEADINGr   loggingdebugrp   r   rq   ATTACHMENT_FILE_HEADINGNotImplementedErrorgroupappendr   STYLE_FIELDSr   r   EVENT_FIELDSr   events)r   r   r   r   r   inside_info_sectioninside_aegisub_sectioninside_font_sectioninside_graphic_sectioncurrent_attachment_namecurrent_attachment_lines_buffercurrent_attachment_is_fontlinenolinekr   r   attachment_dataattachment_name_restbufrC   
raw_fields
field_dictr   ev_typeevr   s      `                        @r   	from_filezSubstationFormat.from_file   s   1	s 1	s 1	s 1	 1	 1	 1	 1	 1	f 		""$$$!!!""$$$#!&#!&"&*,'%)"%b!,, 9	' 9	'LFD::<<D$$T** 6'>MMM&,n#)2d):&&-o#)3t);&&$ 0'(> 0'??3'' ::c1--DAq* <'(wwyy	!/ <23'')),Q/!   D$ %'(> %'+11$77-@** 3 3 3&Eaaa&HO* lET)*ABB/ lHW,-DEE12jkkkM"QSY[rsss399;;;.2+ A&'ggfooO.=++ A3::4@@@** '**S!,,4jjll((--$'!zjjjj3|T[G\^hCiCijjj
,,,,$'D!!-- '1L1L ' $

3 2 2!ZZ\\//Sg9N5O5OPQ5QRR
jjjj3|T[G\^hCiCijjj
%,
6"++
++""2&&& # 	+=aaa@O) P=L!"9::@O$%<=MEG^___+11333&*###	+ 	+s   /AF
FFheader_noticec                     t          d|           |                    d          D ]}t          d||           dk    rdnd|j        d<   |j                                        D ]\  }}t          ||d	|
           |j        rCt          d|           |j                                        D ]\  }}t          ||d	|
           dt
          dt          dt          t          t          f         dt
          f fdt          dk    rdnd|           t          t                   |           |j                                        D ]3\  }	fdt                   D             }
t          d|	 g|
R d|d
 4|j        rwt          d|           t          |j                                                  D ]?\  }}t          d| |           |D ]}t          ||           t          |           @|j        rwt          d|           t          |j                                                  D ]?\  }}t          d| |           |D ]}t          ||           t          |           @t          d|           t          t                    |           |j        D ]@fdt$                   D             }
t          j        d	|           t          |
d|d
 AdS )z0See :meth:`pysubs2.formats.FormatBase.to_file()`z[Script Info])fileFr   r%   zv4.00+zv4.00
ScriptTypez: )sepr   z
[Aegisub Project Garbage]r   r   r   r   c                 (   | dv r                     |          S | dk    rd|dS | dk    r|t          |t                    r|}n)t          j        dt
                     t          |          }dk    r!t          |                                          S t          |j                  S t          |t                    r|rdnd	S t          |t                    rt          |          S t          |t                    r2t          |                                rt          |          n|          S t          |t                    r|S t          |t                    r$d
k    rt          |          S t          |          S t!          d| d|          )N>   rA   r@   rF   zMarked=dr8   zdThe 'alignment' attribute of SSAStyle should be an Alignment instance, using plain int is deprecatedr&   z-1r   r%   z0Unexpected type when writing a SubStation field z
 for line )r   
isinstancer   r   r   r   r   to_ssa_alignmentvalueboolr\   r   
is_integerr   rT   rV   	TypeError)r   r   r   r8   r   r   s       r   field_to_stringz1SubstationFormat.to_file.<locals>.field_to_string[  s   $$$**1---h&&k!!a++ - !IIM  #I  K]  ^  ^  ^ )!Ie##y99;;<<<y///At$$ l )ttc)As## l1vvAu%% 
lQ\\^^:3q666;;;As## lAu%% le##,Q///+A... jST j jbf j jkkkr!   z
[V4+ Styles]z
[V4 Styles]c           	      F    g | ]} |t          |                    S rb   getattr)rz   r   r   r   s     r   r|   z,SubstationFormat.to_file.<locals>.<listcomp>~  s/    ^^^1ooaa#>>^^^r!   zStyle: ra   z
[Fonts]z
fontname: z
[Graphics]z
filename: z	
[Events]c           	      F    g | ]} |t          |                    S rb   r   )rz   r   r   r   s     r   r|   z,SubstationFormat.to_file.<locals>.<listcomp>  s/    \\\ooaQ<<\\\r!   )rA   r   N)print
splitlinesr   itemsr   r   r   r   r   r   STYLE_FORMAT_LINErd   r   r   sortedr   EVENT_FORMAT_LINEr   r   r   )r   r   r   r   r   r   r   r   r   rC   fields	font_name
font_linespicture_namepicture_linesr   r   r   s   `  `           @@@r   to_filezSubstationFormat.to_fileK  s    	oB''''!,,U33 	& 	&D#t"%%%%%.5.>.>((G	,IOO%% 	+ 	+DAq!QDr***** 	//b9999,2244 / /1a2.....	ls 	ls 	l%(8J2K 	lPS 	l 	l 	l 	l 	l 	l 	l@ 	'U"2"2bQQQQ(r2222**,, 	? 	?ID#^^^^^U\H]^^^F"D"">V>>2>>>>> 	+B'''')/0A0G0G0I0I)J)J  %	:.9..R8888& ) )D$R(((((2 	.r****/5d6J6P6P6R6R/S/S  +m1<11;;;;) ) )D$R(((((2l$$$$(r2222+ 	- 	-B\\\\\lSZF[\\\F"'t"----6s,,,,,	- 	-r!   )__name__
__module____qualname____doc__staticmethodr\   r   r   classmethodr   r   r	   r   r   NOTICEr  rb   r!   r   r   r      s'       DD3c 3c 3 3 3 \3      [ K+Y K+F K+S K+C K+TX K+ K+ K+ [K+Z U[ J- J-9 J-& J-3 J-s J-gj J-os J- J- J- [J- J- J-r!   r   )2r   rn   r   typingr   r   r   r   r   r   r	   rZ   r   ssaeventr   ssastyler   commonr   r   r   timer   r   r   r   r   ssafiler   r\   r    r$   compiler   r   r   r   r   r   r   r   rT   rV   r^   r   rc   DEFAULT_STYLEr   r  r   rb   r!   r   <module>r     s7    				  B B B B B B B B B B B B B B B B B B                   4 4 4 4 4 4 4 4 4 4 V V V V V V V V V V V V V V      C C    &C &C & & & & "*	  %"*%LMM 2g	  F F Fx x x	  ]]   ihhiii  #R2- E E3 E E E E1 1# 1 1 1 1	S 	U 	 	 	 	*c *d * * * * -5,B7;,1C CS C CS(] 34C%)C6:5h;O6PC C C CL 
Mv- v- v- v- v-z v- v- v- v- v-r!   