
    h!                         d dl mZ d dlZd dl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mZmZ d Z G d dej                  Z G d	 d
e          Zd Zedk    r e             dS dS )    )print_functionN)dedent)detect)
SubRipFile
SubRipTimeVERSION_STRINGc                     d| z  S )Nz
[4m%s[0m )strings    N/var/www/html/auto_sub_bot/venv/lib/python3.11/site-packages/pysrt/commands.py	underliner      s    &&    c                   @     e Zd Z ej        d          Zd fd	Z xZS )TimeAwareArgumentParserz^\-?(\d+[hms]{0,2}){1,4}$Nc                     d}t          |          D ]%\  }}| j                            |          }|r|} n&|dk    r|                    |d           t	          t
          |                               ||          S )Nr   z--)	enumerateRE_TIME_REPRESENTATIONmatchinsertsuperr   
parse_args)selfargs	namespace
time_indexindexargr   	__class__s          r   r   z"TimeAwareArgumentParser.parse_args   s    
#D// 	 	JE3/55c::E "
 ??KK
D))),d33>>tYOOOr   )NN)__name__
__module____qualname__recompiler   r   __classcell__)r   s   @r   r   r      sZ        'RZ(DEEP P P P P P P P P Pr   r   c                      e Zd ZdZ ej        d          Zdej        ej        ej	        ej
        dZ ed          ZdZ ed          Z ed          Zd	Z ed
          ZdZ ed          Z ed          ZdZd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z e!d             Z"e!d             Z#e!d             Z$d Z%dS )SubRipShifterz.bakz(\d+)([hms]{0,2})   )ms smhz^        Srt subtitle editor

        It can either shift, split or change the frame rate.
    z.A timestamp in the form: [-][Hh][Mm]S[s][MSms]a  
        Examples:
            1 minute and 12 seconds foreward (in place):
                $ srt -i shift 1m12s movie.srt

            half a second foreward:
                $ srt shift 500ms movie.srt > othername.srt

            1 second and half backward:
                $ srt -i shift -1s500ms movie.srt

            3 seconds backward:
                $ srt -i shift -3 movie.srt
    zw
        Examples:
            Convert 23.9fps subtitles to 25fps:
                $ srt -i rate 23.9 25 movie.srt
    z3Each parts duration in the form: [Hh][Mm]S[s][MSms]a|  
        Examples:
            For a movie in 2 parts with the first part 48 minutes and 18 seconds long:
                $ srt split 48m18s movie.srt
                => creates movie.1.srt and movie.2.srt

            For a movie in 3 parts of 20 minutes each:
                $ srt split 20m 20m movie.srt
                => creates movie.1.srt, movie.2.srt and movie.3.srt
    z)A frame rate in fps (commonly 23.9 or 25)z        Change file encoding. Useful for players accepting only latin1 subtitles.
        List of supported encodings: http://docs.python.org/library/codecs.html#standard-encodings
    z3        Break lines longer than defined length
    z%Maximum number of characters per linec                     d | _         d S N)output_file_pathr   s    r   __init__zSubRipShifter.__init__d   s     $r   c           	         t          | j        t          j                  }|                    ddddd           |                    dd	t          d
          dd| j        | j                   |                    ddddt          z             |	                    d          }|
                    dd| j        t          j                  }|                    ddt          d          | j        | j                   |                    | j                   |
                    dd| j        t          j                  }|                    ddt"          | j                   |                    d dt"          | j                   |                    | j                   |
                    d!d"| j        t          j                  }|                    d#dd$| j        | j        %           |                    | j                   |
                    d&d'| j        t          j                  }|                    d(dt0          | j                   |                    | j                   |                    d)d           |S )*N)descriptionformatter_classz-iz
--in-place
store_truein_placezTEdit file in-place, saving a backup as file.bak (do not works for the split command))actiondesthelpz-ez--output-encodingencodingstoreoutput_encoding)metavarr8   r9   typer:   z-vz	--versionversionz%%(prog)s %s)r8   r@   commands)titleshiftz(Shift subtitles by specified time offset)r:   epilogr5   time_offsetoffset)r8   r>   r?   r:   )r8   ratez.Convert subtitles from a frame rate to anotherinitial)r8   r?   r:   finalsplitzSplit a file in multiple partslimits+)r8   nargsr?   r:   breakzBreak long lineslengthfile)r   DESCRIPTIONargparseRawTextHelpFormatteradd_argumentr   parse_encodingENCODING_HELPr   add_subparsers
add_parserSHIFT_EPILOG
parse_timeTIMESTAMP_HELPset_defaultsrC   RATE_EPILOGfloatFRAME_RATE_HELPrG   SPLIT_EPILOGLIMITS_HELPrJ   BREAK_EPILOGintLENGTH_HELPbreak_lines)r   parser
subparsersshift_parserrate_parsersplit_parserbreak_parsers          r   build_parserzSubRipShifter.build_parserg   s   (T5EW_WtuuuD,|*g 	 	i 	i 	iD"5y?T?T]dk|$4+= 	 	? 	? 	?D+iZhIhiii***<<
!,,W;enrn  RZ  Ro,  p  p!!-S[I\I\t': 	" 	< 	< 	<!!!444 ++F9irv  sC  U]  Ur+  s  s  7TMa bbb  u4K_ ```  	 222!,,W;[dhdu  HP  He,  f  f!!(7#DObfbr!sss!!!444!,,W;MVZVg  zB  zW,  X  X!!(74K[!\\\!!)9!:::F7333r   c                 Z   |                                                      |          | _        t          j                            | j        j                  r;| j        j        r|                                  | j        	                                 d S t          d| j        j                   d S )NzNo such file)rl   r   	argumentsospathisfilerP   r7   create_backupr8   print)r   r   s     r   runzSubRipShifter.run   s    **,,77==7>>$.-.. 	7~& %""$$$N!!##### .$."566666r   c                      |                     d          }|r
|dd          }t           fd j                            |          D                       }|r| n|S )N-r(   c              3   X   K   | ]$\  }}t          |          j        |         z  V  %d S r/   )rc   UNIT_RATIOS).0valueunitr   s      r   	<genexpr>z+SubRipShifter.parse_time.<locals>.<genexpr>   sR       E EkeTc%jj4#3D#99 E E E E E Er   )
startswithsumRE_TIME_STRINGfindall)r   time_stringnegativeordinals   `   r   rZ   zSubRipShifter.parse_time   s    ))#.. 	*%abb/K E E E E.66{CCE E E E E#0xx0r   c                     	 t          j        |           n+# t          $ r}t          j        |j                  d }~ww xY w|S r/   )codecslookupLookupErrorrR   ArgumentTypeErrormessage)r   encoding_nameerrors      r   rU   zSubRipShifter.parse_encoding   sR    	<M-(((( 	< 	< 	<,U];;;	<s    
?:?c                     | j                             | j        j                   | j                             | j                   d S )Nmilliseconds)
input_filerC   rn   rE   
write_intooutput_filer1   s    r   rC   zSubRipShifter.shift   s?    4>+EFFF""4#344444r   c                     | j         j        | j         j        z  }| j                            |           | j                            | j                   d S )N)ratio)rn   rI   rH   r   rC   r   r   )r   r   s     r   rG   zSubRipShifter.rate   sN    $t~'==E***""4#344444r   c                     dg| j         j        z   | j        d         j        j        dz   gz   }t
          j                            | j         j                  \  }}t          t          |d d         |dd                              D ]w\  }\  }}|d|dz   |}| j                            ||          }|                    |            |                                 |                    || j                   xd S )Nr   r   r(   .)
ends_afterstarts_beforer   )rp   r;   )rn   rK   r   endr   ro   rp   splitextrP   r   zipslicerC   clean_indexessaver=   )	r   rK   	base_name	extensionr   startr   	file_name	part_files	            r   rJ   zSubRipShifter.split   s   t~,,0C0G0ORS0S/TT!w//0CDD	9#,SfQRRj-I-I#J#J 	J 	JE<E3%.YY		99EI--c-RRIOO%O000##%%%NN	D4HNIIII	J 	Jr   c                     | j         j        | j        z   }t          j                            |          st          j        | j         j        |           | j         j        | _        || j         _        d S r/   )	rn   rP   BACKUP_EXTENSIONro   rp   existsshutilcopy2r0   )r   backup_files     r   rr   zSubRipShifter.create_backup   s^    n)D,AAw~~k** 	;L,k::: $ 3)r   c                    t          j        d| j        j        z            }| j        D ]=}d                    |                    |j                  dd d                   |_        >| j                            | j	                   d S )Nz(.{,%i})(?:\s+|$)
r(      )
r#   r$   rn   rO   r   joinrJ   textr   r   )r   split_reitems      r   re   zSubRipShifter.break_lines   s|    :2T^5JJKKO 	C 	CD		(..";";ADqD"ABBDII""4#344444r   c                 2    | j         j        p| j        j        S r/   )rn   r=   r   r;   r1   s    r   r=   zSubRipShifter.output_encoding   s    ~-I1IIr   c                    t          | d          st          | j        j        d          5 }|                                }t          |                              d          }|                     |          }d d d            n# 1 swxY w Y   t          j        | j        j        |t          j	                  | _
        | j
        S )N_source_filerbr;   )r;   error_handling)hasattropenrn   rP   readr   getnormalize_encodingr   	ERROR_LOGr   )r   fcontentr;   s       r   r   zSubRipShifter.input_file   s    t^,, 	Hdn)400 =A&&((!'??..z::228<<= = = = = = = = = = = = = = =
 !+0C!*2F!H !H !HD  s   ABB
Bc                     t          | d          s?| j        r't          j        | j        d| j                  | _        nt          j        | _        | j        S )N_output_filezw+)r;   )r   r0   r   r   r=   r   sysstdoutr1   s    r   r   zSubRipShifter.output_file   sU    t^,, 	/$ /$*K0EtVZVj$k$k$k!!$'J!  r   c                 R    |                                                     dd          S )Nrv   _)lowerreplace)r   r;   s     r   r   z SubRipShifter.normalize_encoding   s"    ~~''S111r   N)&r    r!   r"   r   r#   r$   r   r   SECONDS_RATIOMINUTES_RATIOHOURS_RATIOrx   r   rQ   r[   rY   r]   ra   r`   r_   rV   rb   rd   r2   rl   rt   rZ   rU   rC   rG   rJ   rr   re   propertyr=   r   r   r   r
   r   r   r'   r'   (   s       RZ 455N$%%# K &  	 	K
 FN6  	 	L &  	 	K HK6 
 
	 
	L BOF  	 	M 6  	 	L :K% % %  >	7 	7 	71 1 1  5 5 55 5 5
J J J* * *5 5 5 J J XJ 	! 	! X	! ! ! X!2 2 2 2 2r   r'   c                  l    t                                          t          j        dd                     d S )Nr(   )r'   rt   r   argvr
   r   r   mainr      s*    OO%%%%%r   __main__)
__future__r   ro   r#   r   r   r   rR   textwrapr   chardetr   pysrtr   r   r   r   ArgumentParserr   objectr'   r   r    r
   r   r   <module>r      s;   & % % % % % 				 				 



                8 8 8 8 8 8 8 8 8 8' ' 'P P P P Ph5 P P P$r2 r2 r2 r2 r2F r2 r2 r2j& & & zDFFFFF r   