
    ;3h	                     <    d Z ddlmZ ddlZddlmZ  G d d      Zy)zGSubMaker module is used to generate subtitles from WordBoundary events.    )ListN   )TTSChunkc                   P    e Zd ZdZddZdeddfdZdeddfdZde	fd	Z
de	fd
Zy)SubMakerzL
    SubMaker is used to generate subtitles from WordBoundary messages.
    returnNc                     g | _         y N)cuesselfs    Q/var/www/html/audio-gradio/venv/lib/python3.12/site-packages/edge_tts/submaker.py__init__zSubMaker.__init__   s	    (*	    msgc                 4   |d   dk7  rt        d      | j                  j                  t        j                  t        | j                        dz   t        j                  |d   dz        t        j                  |d   |d   z   dz        |d	   
             y)z
        Feed a WordBoundary message to the SubMaker object.

        Args:
            msg (dict): The WordBoundary message.

        Returns:
            None
        typeWordBoundaryz-Invalid message type, expected 'WordBoundary'r   offset
   )microsecondsdurationtextindexstartendcontentN)
ValueErrorr   appendsrtSubtitlelen	timedelta)r   r   s     r   feedzSubMaker.feed   s     v;.(LMM		LL$))nq(mmX1CDMMHJ0OSU/UVF		
r   wordsc                    |dk  rt        d      t        | j                        dk(  ryg }| j                  d   }| j                  dd D ]  }t        |j                  j	                               |k  rRt        j                  |j                  |j                  |j                  |j                  dz   |j                  z         }{|j                  |       |} |j                  |       || _        y)z
        Merge cues to reduce the number of cues.

        Args:
            words (int): The number of words to merge.

        Returns:
            None
        r   z.Invalid number of words to merge, expected > 0Nr    r   )r   r#   r   r   splitr!   r"   r   r   r   r    )r   r&   new_cuescurrent_cuecues        r   
merge_cueszSubMaker.merge_cues(   s     A:MNNtyy>Q')$(IIaL99QR= 
	"C;&&,,./%7!ll%++%++'//#5C	 ,!
	" 	$	r   c                 @    t        j                  | j                        S )z
        Get the SRT formatted subtitles from the SubMaker object.

        Returns:
            str: The SRT formatted subtitles.
        )r!   composer   r   s    r   get_srtzSubMaker.get_srtH   s     {{499%%r   c                 "    | j                         S r
   )r0   r   s    r   __str__zSubMaker.__str__Q   s    ||~r   )r   N)__name__
__module____qualname____doc__r   r   r%   intr-   strr0   r2    r   r   r   r   
   sK    +
 
T 
,  @& & r   r   )r6   typingr   r!   r   r   r9   r   r   <module>r;      s    M  
 H Hr   