
    ŞiE                     ~    d dl Z d dlZd dlZddlmZ ddlmZmZ ddlm	Z	 ddl
mZmZmZ dZdZ G d	 d
e          ZdS )    N   )PostProcessor)FFmpegPostProcessorFFmpegSubtitlesConvertorPP)SponsorBlockPP   )PostProcessingError
orderedSetprepend_extensionz"[SponsorBlock]: %(category_names)lc                       e Zd ZdedddZ ej        d          d             Zd Zd Z	d	 Z
d
 ZddZed             ZdS )ModifyChaptersPPNF)sponsorblock_chapter_titleforce_keyframesc                (   t          j        | |           t          |pg           | _        t          |pg           t          t          j                                                  z
  | _        t          |pg           | _        || _	        || _
        d S N)r   __init__set_remove_chapters_patternsr   NON_SKIPPABLE_CATEGORIESkeys_remove_sponsor_segments_ranges_to_remove_sponsorblock_chapter_title_force_keyframes)self
downloaderremove_chapters_patternsremove_sponsor_segmentsremove_rangesr   r   s          iC:\Users\betacode\Desktop\descargarYoutube\venv\Lib\site-packages\yt_dlp/postprocessor/modify_chapters.pyr   zModifyChaptersPP.__init__   s    $T:666),-E-K)L)L&(+,C,Ir(J(JSQ_QxQ}Q}QQ  NA  NA  )A%!$]%8b!9!9+E( /    )imagesc                                           |                                t          j        |                    d                    pg t          j        |                    d                    pg           \  }}|s|sg |fS                      |d                   }|s"d|                    d          p||d         dg}                     ||z             \  |d<   sg |fS |d         s                     d           g |fS |                    d          |d         d	         d
         c}|d<                        ||d          r                     ||d                   s/ 	                    d 
                                 d           g |fS |                    d          st          d                               d                                |                               d                    d                    d D                                             fd |d         d          g}|                    fd                     |          D                        g }|D ]\  }}	t%          j        |          j        }
t+          |d          }t%          j        ||           t%          j        |	|                                ||
|
           |                    |           ||fS )Nchapterssponsorblock_chaptersfilepathr   durationtitle)
start_timeend_timer(   zDYou have requested to remove the entire video, which is not possibler*   r   z	Skipping z* since the video appears to be already cut__real_downloadzqCannot cut video since the real and expected durations mismatch. Different chapters may have already been removedz&Expected and actual durations mismatchzConcat spec = {}z, c              3   t   K   | ]3}|                     d d           d|                     dd           V  4dS )inpointg        -outpointinfN)get).0cs     r    	<genexpr>z'ModifyChaptersPP.run.<locals>.<genexpr>9   sk        =I  =IwxiQT@U@U=r=rXYX]X]^hjoXpXp=r=r  =I  =I  =I  =I  =I  =Ir!   c                 H    |                      | j        o|           fS r   )remove_chaptersr   )fileis_subconcat_optscutsr   s     r    r7   z-ModifyChaptersPP.run.<locals>.remove_chapters;   s.    --dD+tG\Gkekakllllr!   Fc              3   0   K   | ]} |d           V  dS )TN )r3   in_filer7   s     r    r5   z'ModifyChaptersPP.run.<locals>.<genexpr>?   s/      iiwOOGT::iiiiiir!   uncut)_fixup_chapters_mark_chapters_to_removecopydeepcopyr2   _get_real_video_duration_remove_marked_arrange_sponsorsreport_warning_duration_mismatch	to_screenpp_keyr	   write_debug_make_concat_optsformatjoinextend_get_supported_subsosstatst_mtimer   replace	try_utimeappend)r   infor$   sponsor_chaptersreal_durationoriginal_durationin_out_filesfiles_to_remover>   out_filemtime
uncut_filer:   r;   r7   s   `           @@@r    runzModifyChaptersPP.run   s   T"""%)%B%BM$((:..//52M$((#:;;<<B&D &D""  	 0 	t8O55d:6FGG 	v'(dhhz6J6J6[mfjkrfsttuH!%!E!EhQaFa!b!bZ$ 	t8Oj! 	 fgggt8O.2hhz.B.BDDTUWDXYcDd+4
+""=2CQGG 	K**=$z:JKK  d4;;==dddeee4x88-.. K) +] ^ ^ ^   !IJJJ,,T=AA+22499  =I  =I  }H  =I  =I  =I  4I  4I  J  J  	K  	K  	K	m 	m 	m 	m 	m 	m 	m (Z(8%@@Aiiii$JbJbcgJhJhiiiiii !- 	/ 	/GXGG$$-E*7G<<JJw
+++Jx)))NN7E5111"":....$$r!   c                    | j         r^d}|s|                     d           d}|D ])t          fd| j         D                       rdd<   d}*|r|                     d           | j        rMd}|s|                     d           d}|D ]d         | j        v rdd<   d}|r|                     d	           |                    d
 | j        D                        ||fS )NTz"Chapter information is unavailableFc              3   N   K   | ]}|                     d                    V   dS )r(   N)search)r3   regexr4   s     r    r5   z<ModifyChaptersPP._mark_chapters_to_remove.<locals>.<genexpr>T   s3      \\Eu||AgJ//\\\\\\r!   removez(There are no chapters matching the regexz'SponsorBlock information is unavailablecategoryz+There are no matching SponsorBlock chaptersc              3   6   K   | ]\  }}||d d ||dfgddV  dS )manually_removedzManually removedT)r)   r*   re   _categoriesrd   Nr=   )r3   startends      r    r5   z<ModifyChaptersPP._mark_chapters_to_remove.<locals>.<genexpr>f   s_        4  4 eS  */=OPQ!
 !
  4  4  4  4  4  4r!   )r   rH   anyr   rN   r   )r   r$   rW   warn_no_chapter_to_remover4   s       @r    rA   z)ModifyChaptersPP._mark_chapters_to_removeM   s`   ) 
	K(,% 2CDDD,1) 6 6\\\\T=[\\\\\ 6"&AhK05-( KIJJJ( 
	N(,%# 2HIII,1)% 6 6Z=D$AAA"&AhK05-( NLMMM  4  4 !2 4  4  4 	4 	4 	4 )))r!   c              #   >  K   |                     d          pi                                 D ]p}|                     d          }|rt          j                            |          s9|d         }|t
          j        vr|                     d| d| d           l|V  qd S )Nrequested_subtitlesr&   extz%Cannot remove chapters from external z subtitles; "z" is now out of sync)r2   valuesrP   pathexistsr   SUPPORTED_EXTSrF   )r   rV   subsub_filero   s        r    rO   z$ModifyChaptersPP._get_supported_subsp   s      HH2339rAACC 
	 
	Cwwz**H 27>>(#;#; e*C4CCC##$|C$|$|^f$|$|$|}}}NNNN
	 
	r!   c                 z   g fd}fdg fd}d t          |          D             }t          j        |           t          j        |          \  }}}|r5t          j        |          \  }}}|d         |d         k    r d|vr|n||           ||}}Cd|v rgd|v r!t	          |d         |d                   |d<   n|d         |d         k     r.|d         |d<   d|d	<   t          j        ||d         ||f           nd|v r!d|d	<   |d         |d         k    r|d         |d<    ||           ||}}d
|v rt          ||d         g           }	g }
|d
         D ]V}|d         |d         k     r|
                    |           |d         |d         k    r|	d
                             |           W|
|d
<   |d
         |	d
         k    r:t          j        ||	d         ||	f           |d         |d<    ||           ||}}|                    d ||                     nad
|v rFd
|vrB|d         |d         k     r.|d         |d<   d|d	<   t          j        ||d         ||f           nd
|v s
J d            d|d	<   d|d	<   |d         |d         k    rHt          t          j
        |          |d                   }	t          j        ||	d         ||	f           nd|d         |d         k    rRt          t          j
        |          |d                   }t          j        ||d         ||f           |d         |d<   d
|v r|d
         |d
         z   |d
<   d|v r|d         |d<   |d         |d<    ||           ||}}|5 d|vr|n||           |                               fS )Nc                     d| v s
J d            rd         nd }|r2|d         | d         k    r t          |d         | d                   |d<   n                    |            t                    dz
  S )Nrd   zNot a cut is appended to cutsr+   r*   r)   r   )maxrU   len)r4   last_to_cutr;   s     r    
append_cutzDModifyChaptersPP._remove_marked_arrange_sponsors.<locals>.append_cut   s    q==="A===&*4$r((K {:6!L/II*-k*.Eq}*U*UJ''At99q= r!   c                 ~   |                      dt                              d}}|t                    k     r|         }|d         | d         k    rnh|d         | d         k    r>|t          |d         | d                   z  }|t          |d         | d                   z  }|dz  }|t                    k     |S )Ncut_idxr   r)   r*   r   )popry   minrx   )r4   r}   excesscutr;   s       r    excess_durationzIModifyChaptersPP._remove_marked_arrange_sponsors.<locals>.excess_duration   s      eeIs4yy991VGCII%%7m|$*55z?Q|_44c#j/1Z=AAAFc#l"3Q|_EEEF1 CII%% Mr!   c                     d| vs
J d            | d         | d         z
   |           z
  }|dk    rd S rd         d         nd}|                      |||z                                  |            d S )Nrd   zCut is appended to chaptersr*   r)   r   r+   )r)   r*   )updaterU   )r4   lengthri   r   new_chapterss      r    append_chapterzHModifyChaptersPP._remove_marked_arrange_sponsors.<locals>.append_chapter   s    1$$$&C$$$z]Q|_4q7I7IIF{{4@GL$Z00aEHHH???"""""r!   c                 *    g | ]\  }}|d          ||fS r)   r=   )r3   ir4   s      r    
<listcomp>zDModifyChaptersPP._remove_marked_arrange_sponsors.<locals>.<listcomp>   s'    LLL1Q|_a+LLLr!   r*   r)   rd   T_was_cutrh   )r)   rh   r   r   r}   zNormal chapters overlapr   )	enumerateheapqheapifyheappoprx   heappushdictrU   
setdefaultrB   rC   _remove_tiny_rename_sponsors)r   r$   r{   r   _cur_icur_chapterr   r4   after_ccur_catscat_start_end	after_curr;   r   r   s                @@@r    rE   z0ModifyChaptersPP._remove_marked_arrange_sponsors}   s   	! 	! 	! 	! 	!	 	 	 	 	" 	# 	# 	# 	# 	# 	# ML	(8K8KLLLh %h 7 75+ W	*mH--GAq! :&!L/99N8;#>#>JP[\\\%&{ ;&&q==.1+j2I1Z=.Y.YK
++
 !,q}<<&1*&=AlO$(AjMN8aoq!-DEEEQ*.J' z*a
m;;./oK
+"N;///)*A;E !K//";1Z=VXYYYG!H)4])C I I(+ao==$OOM:::(+a
m;;#M299-HHH19K."=1W]5KKKx',2GPW1XYYY23L/J/&{333-.{  &&y**Q--@@@@ +---q2H2Hz*Qz]::&1*&=AlO$(AjMN8aoq!-DEEE %)))+D)))*.J' $*z*Qz]::"4=#=#=!J-XXXGN8gl.CUG-TUUUUz][%<<< $T]1%5%5+jBY Z Z ZIN8i.Eui-XYYY$/
$;AjM K//'2='AAmDT'TAm$++#.y#9AiL*+L/J'{+++%&{o  W	*p 
G8;66JTTT00>>DDr!   c           
         g }t          |          D ]\  }}d|v sd|v r|d         |d         z
  t          k     r|s,|t          |          dz
  k     r|d         ||dz            d<   UnY|d         }|t          |          dz
  k     r/||dz            }d|v }d|v }d|vr|r|rd|v r|s|r|d         |d<   |d         |d<   |                    dd            |                    dd           }	|	rt	          |	d 	          \  }
}}}|                    |
t          d
 |	D                       |t          d |	D                       d           | j                            | j	        |
                                          |d<   |r5d|d         v r+|d         d         |d         k    r|d         |d         d<   |                    |           |S )Nr   rh   r*   r)   r   r+   
categoriesc                 $    | d         | d         z
  S )Nr   r   r=   )r4   s    r    <lambda>z?ModifyChaptersPP._remove_tiny_rename_sponsors.<locals>.<lambda>)  s    !qQRt r!   )keyc              3   &   K   | ]}|d          V  dS )r   Nr=   r3   xs     r    r5   z@ModifyChaptersPP._remove_tiny_rename_sponsors.<locals>.<genexpr>,  s&      ,@,@aQqT,@,@,@,@,@,@r!   c              3   &   K   | ]}|d          V  dS )   Nr=   r   s     r    r5   z@ModifyChaptersPP._remove_tiny_rename_sponsors.<locals>.<genexpr>.  s&      0D0D!10D0D0D0D0D0Dr!   )re   r   namecategory_namesr(   )r   _TINY_CHAPTER_DURATIONry   r~   r   r   r
   _downloaderevaluate_outtmplr   rB   rU   )r   r$   r   r   r4   old_cnext_cprev_is_sponsornext_is_sponsorcatsre   r   category_names                r    r   z-ModifyChaptersPP._remove_tiny_rename_sponsors
  sV   h'' *	# *	#DAq qMQ$6$6*,7:PPP# 3x==1,,,89,Q5  - ),E3x==1,,,!)!a%*6%*?*76*A*!333P_3$1Q$6$6$6Sb$634\?F<0$()*E*%EE*d###55--D 03D>S>S0T0T0T-!Q (",,@,@4,@,@,@"@"@)&00D0Dt0D0D0D&D&D	     "->>t?_abagagaiaijj'
  \\"5E%E%E(,W57CC34Z=L$Z0""""r!   c                 (   |}t          |d          }|r |                     |d |D                       }|                     d|            |                     |gt	          |          z  ||           ||k    r|                     |d            |S )Ntempc              3   @   K   | ]}|d          |d         fD ]}|V  dS )r)   r*   Nr=   )r3   r4   ts      r    r5   z3ModifyChaptersPP.remove_chapters.<locals>.<genexpr>=  sC      4x4x1XYZfXgijkuivWw4x4xRSQ4x4x4x4x4x4x4xr!   zRemoving chapters from )msg)r   r   rH   concat_filesry   _delete_downloaded_files)r   filenameranges_to_cutr:   r   r>   r\   s          r    r7   z ModifyChaptersPP.remove_chapters9  s    $Wf55 	z**74x4x4x4x4xyyG;;;<<<7)c+&6&66+NNNh))'t)<<<r!   c                     i g}| D ]`}|d         dk    r|d         d|d         d<   "|d         d|d         d<   |d         |k     r|                     d|d         di           a|S )Nr)   r   r*   z.6fr+   r.   r0   )rU   )chapters_to_remover'   optsss       r    rK   z"ModifyChaptersPP._make_concat_optsD  s    t# 	A 	AA!##)*:&<&<R#&'o#;#;DHZ }x''Y1Z=(>(>?@@@r!   )NNN)F)__name__
__module____qualname__"DEFAULT_SPONSORBLOCK_CHAPTER_TITLEr   r   _restrict_tor_   rA   rO   rE   r   r7   staticmethodrK   r=   r!   r    r   r      s        0/Qch0 0 0 0 0  ]u---2% 2% .-2%h!* !* !*F  KE KE KEZ- - -^	 	 	 	   \  r!   r   )rB   r   rP   commonr   ffmpegr   r   sponsorblockr   utilsr	   r
   r   r   r   r   r=   r!   r    <module>r      s      				 ! ! ! ! ! ! C C C C C C C C ( ( ( ( ( ( F F F F F F F F F F %I "B B B B B* B B B B Br!   