
    kq)j                    @    d dl mZ d dlZd dlmZ  G d d          ZdS )    )annotationsN)urljoinc                  6    e Zd ZddZddZdd
ZddZddZdS )PlaylistCleanerconfigdictc                    || _         t          |                    dd                    | _        d |                    dg           D             | _        |                    dg           | _        d S )Nremove_discontinuityTc                6    g | ]}t          j        |          S  )recompile).0patterns     moviebot\playlist\cleaner.py
<listcomp>z,PlaylistCleaner.__init__.<locals>.<listcomp>   s"     d d dG!4!4 d d d    rewrite_regexad_patterns)r   boolgetr
   convert_patternsr   )selfr   s     r   __init__zPlaylistCleaner.__init__   si    $(4JD)Q)Q$R$R! d dFJJ`bDcDc d d d!::mR88r   contentstrbase_urlreturnc                   |                                 }g }d}|t          |          k     r||                                         }| j        r|dk    r|dz  }@|                     ||          }|r||z  }^|r+|                    d          s|                     ||          }|                    |           |dz  }|t          |          k     d                    |          	                                dz   S )Nr   z#EXT-X-DISCONTINUITY   #
)

splitlineslenrstripr
   _matched_ad_pattern
startswith_absolute_urlappendjoinstrip)r   r   r   linesoutputindexlineskips           r   cleanzPlaylistCleaner.clean   s   ""$$c%jj  <&&((D( T5K-K-K
++E599D  :DOOC00 :))$99MM$QJE c%jj   yy  &&((4//r   r/   c                f    t          ||          }| j        D ]}|                    d|          }|S )N/)r   r   sub)r   r/   r   urlr   s        r   r(   zPlaylistCleaner._absolute_url!   s=    h%%, 	( 	(G++c3''CC
r   r,   	list[str]startintc                j    | j         D ]*}|                     |||          rt          |          c S +dS )Nr   )r   _pattern_matchesr$   )r   r,   r7   r   s       r   r&   z#PlaylistCleaner._matched_ad_pattern'   sJ    ' 	$ 	$G$$UE7;; $7||###$qr   r   r   c                   |t          |          z   t          |          k    rdS t          |          D ]J\  }}|||z                                            }|dk    r|                    d          s dS A||k    r dS KdS )NFtsz.tsT)r$   	enumerater+   endswith)r   r,   r7   r   offsetexpectedcurrents          r   r:   z PlaylistCleaner._pattern_matches-   s    3w<<#e**,,5 )' 2 2 	 	FHEFN+1133G4''.. ! 55!H$$uu %tr   N)r   r   )r   r   r   r   r   r   )r/   r   r   r   r   r   )r,   r6   r7   r8   r   r8   )r,   r6   r7   r8   r   r6   r   r   )__name__
__module____qualname__r   r1   r(   r&   r:   r   r   r   r   r      sx        9 9 9 90 0 0 0&      
 
 
 
 
 
r   r   )
__future__r   r   urllib.parser   r   r   r   r   <module>rG      sd    " " " " " " 				            0 0 0 0 0 0 0 0 0 0r   