
    i1                     4    d dl mZ ddlmZmZ  G d d      Zy)    )Console   )build_tablerun_selectorc                   &    e Zd Zd ZddZd Zd Zy)TrackSelectorc           	          | _         t         j                         D ch c]  \  }}t        |dd      s| c}} _        d _        	 t               j                  j                  xs d}t        dt        d|dz
               _        t                _        	 t         j                         D cg c]2  \  }}t        |dd      j                         j                  d	      s1|4 }}}|r4t         fd
|D              s j                  j!                  |d          y y y c c}}w # t        $ r d}Y w xY wc c}}w # t        $ r Y y w xY w)NselectedFr            type videoc              3   :   K   | ]  }|j                   v   y w)N)r
   ).0iselfs     c/home/nidran/Documenti/script/streaming-community/StreamingCommunity/source/N_m3u8/trackSelector.py	<genexpr>z)TrackSelector.__init__.<locals>.<genexpr>    s     (Sdmm);(Ss   )streams	enumerategetattrr
   cursorr   sizeheight	Exceptionminmaxwindow_sizeconsolelower
startswithanyadd)r   r   r   sterm_heightvideo_indicess   `     r   __init__zTrackSelector.__init__   s)    (1'>`tq!'!ZY^B_`	!)..//52K
 r3q+/#:;y	+4T\\+By41agaQWY[F\FbFbFdFoFopwFxQyMyS(S](S%S!!-"23 &T}! a  	K	 z  		sF   D%D%"D+ E 42D<'D<+7E +D98D9<E 	EENc           	          | j                   j                  t        | j                  | j                  | j
                  | j                  d             y)z,Print static table without cursor highlight.F)highlight_cursorN)r!   printr   r   r
   r   r    )r   s    r   previewzTrackSelector.preview%   s5    ;t||T]]DKKQUQaQatyz{    c                    | j                   | j                     }t        |dd      j                         j	                  d      rB| j                  | j
                  v r| j
                  D cg c]<  }t        | j                   |   dd      j                         j	                  d      s;|> }}t        |      dk  r|d   | j                  k(  ry | j
                  j                  | j                         y | j
                  D ch c]<  }t        | j                   |   dd      j                         j	                  d      s;|> }}| j
                  j                  |       | j
                  j                  | j                         y | j                  | j
                  v r&| j
                  j                  | j                         y | j
                  j                  | j                         y c c}w c c}w )Nr   r   r   r   r   )
r   r   r   r"   r#   r
   lenremovedifference_updater%   )r   r&   r   current_video_selected	to_removes        r   _toggle_selectionzTrackSelector._toggle_selection)   s   LL% 1fb!'')44W={{dmm+ 6:]]  *Hgdll[\o_egiFjFpFpFrF}F}  F  GG!  *H&  *H-.!38Nq8QUYU`U`8`$$T[[1 )-z1aRXZ\9]9c9c9e9p9pqx9yQz	z//	:!!$++. {{dmm+$$T[[1!!$++. *H {s   +<G+(G+<G0 G0c                       j                   sg S dt        f fd}t         j                    j                   j                   j
                  |      }|y|D cg c]  } j                   |    c}S c c}w )zJRun interactive selection and return selected streams or None if canceled.statec                     | j                  dj                        _        j                          j                  | d<   y )Nr   r
   )getr   r5   r
   )r7   r   s    r   _toggle_with_statez-TrackSelector.run.<locals>._toggle_with_stateG   s3    ))Hdkk:DK""$ $E*r.   N)r   dictr   r
   r   r    )r   r:   resultr   s   `   r   runzTrackSelector.runB   sf    ||I	.d 	.
 dllDMM4;;HXHXZlm>)/0AQ000s   A3)returnN)__name__
__module____qualname__r)   r-   r5   r=    r.   r   r   r      s    2|/21r.   r   N)rich.consoler   uir   r   r   rB   r.   r   <module>rE      s    ! *D1 D1r.   