Ë
    š„j£E  ã                   óv   — 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y)é    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y)ÚModifyChaptersPPNF)Úsponsorblock_chapter_titleÚforce_keyframesc                ó  — t        j                  | |«       t        |xs g «      | _        t        |xs g «      t        t        j
                  j                  «       «      z
  | _        t        |xs g «      | _        || _	        || _
        y ©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          ú[/var/www/html/GAP/venv/lib/python3.12/site-packages/yt_dlp/postprocessor/modify_chapters.pyr   zModifyChaptersPP.__init__   s{   € ä×$Ñ$ T¨:Ô6Ü),Ð-EÒ-KÈÓ)LˆÔ&Ü(+Ð,CÒ,IÀrÓ(JÌSÔQ_×QxÑQx×Q}ÑQ}ÓQó  NAñ  )AˆÔ%Ü!$ ]Ò%8°bÓ!9ˆÔØ+EˆÔ(Ø /ˆÕó    )Úimagesc                 ó0  ‡ ‡‡‡— ‰ j                  |«       ‰ j                  t        j                  |j	                  d«      «      xs g t        j                  |j	                  d«      «      xs g «      \  }}|s|sg |fS ‰ j                  |d   «      }|sd|j	                  d«      xs ||d   dœg}‰ j                  ||z   «      \  |d<   Š‰sg |fS |d   s‰ j                  d«       g |fS |j	                  d«      |d   d	   d
   c}|d<   ‰ j                  ||d«      ri‰ j                  ||d   «      s'‰ j                  d‰ j                  «       › d�«       g |fS |j	                  d«      st        d«      ‚‰ j                  d«       ‰ j                  ‰|«      Š‰ j                  dj                  dj                  d„ ‰D «       «      «      «       ˆˆˆ fd„Š ‰|d   d«      g}|j!                  ˆfd„‰ j#                  |«      D «       «       g }|D ]€  \  }}	t%        j&                  |«      j(                  }
t+        |d«      }t%        j,                  ||«       t%        j,                  |	|«       ‰ j/                  ||
|
«       |j1                  |«       Œ‚ ||fS )NÚchaptersÚsponsorblock_chaptersÚfilepathr   ÚdurationÚtitle)Ú
start_timeÚend_timer(   zDYou have requested to remove the entire video, which is not possibleéÿÿÿÿr*   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   ój   K  — | ]+  }|j                  d d«      › d|j                  dd«      › �–— Œ- y­w)Úinpointg        ú-ÚoutpointÚinfN)Úget)Ú.0Úcs     r    ú	<genexpr>z'ModifyChaptersPP.run.<locals>.<genexpr>9   sA   è ø€ ò  =IÐwxÀÇÁÀiÐQTÓ@UÐ?VÐVWÐXY×X]ÑX]Ð^hÐjoÓXpÐWqÔ=rñ  =Iùs   ‚13c                 óN   •— | ‰j                  | ‰‰‰j                  xr | «      fS r   )Úremove_chaptersr   )ÚfileÚis_subÚconcat_optsÚcutsr   s     €€€r    r7   z-ModifyChaptersPP.run.<locals>.remove_chapters;   s.   ø€ Ø˜×-Ñ-¨d°D¸+Àt×G\ÑG\ÒGkÐekÐakÓlÐlÐlr!   Fc              3   ó0   •K  — | ]  } ‰|d «      –— Œ y­w)TN© )r3   Úin_filer7   s     €r    r5   z'ModifyChaptersPP.run.<locals>.<genexpr>?   s   øè ø€ Òi¸w™O¨G°T×:Ñiùs   ƒÚ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‰M˜$Ÿ(™( :Ó.Ó/Ò5°2Ü�M‰M˜$Ÿ(™(Ð#:Ó;Ó<ÒBÀó&DÑ"ˆÐ"ñ Ñ 0Ø�t�8ˆOà×5Ñ5°d¸:Ñ6FÓGˆÙØ'(°d·h±h¸zÓ6JÒ6[ÈmÐfjÐkrÑfsÑtÐuˆHà!%×!EÑ!EÀhÐQaÑFaÓ!bÑˆˆZÑ˜$ÙØ�t�8ˆOØ�jÒ!Ø×ÑÐ fÔgØ�t�8ˆOà.2¯h©h°zÓ.BÀDÈÑDTÐUWÑDXÐYcÑDdÐ+Ð˜4 
Ñ+Ø×"Ñ" =Ð2CÀQÔGØ×*Ñ*¨=¸$¸zÑ:JÔKØ—‘ ¨4¯;©;«=¨/Ð9cÐdÔeØ˜4�x�Ø—8‘8Ð-Ô.Ü)ð +]ó ^ð ^ð × Ñ Ð!IÔJà×,Ñ,¨T°=ÓAˆØ×ÑÐ+×2Ñ2°4·9±9ñ  =Ið  }Hô  =Ió  4Ió  Jô  	Kö	mñ (¨¨ZÑ(8¸%Ó@ÐAˆØ×ÑÓiÈ$×JbÑJbÐcgÓJhÔiÔið ˆØ!-ò 	/ÑˆG�XÜ—G‘G˜GÓ$×-Ñ-ˆEÜ*¨7°GÓ<ˆJÜ�J‰J�w 
Ô+Ü�J‰J�x Ô)Ø�N‰N˜7 E¨5Ô1Ø×"Ñ" :Õ.ð	/ð  Ð$Ð$r!   c                 óÂ  ‡— | j                   rWd}|s| j                  d«       d}|D ](  Št        ˆfd„| j                   D «       «      sŒ"d‰d<   d}Œ* |r| j                  d«       | j                  rJd}|s| j                  d«       d}|D ]  Š‰d   | j                  v sŒd‰d<   d}Œ |r| j                  d	«       |j	                  d
„ | j
                  D «       «       ||fS )NTz"Chapter information is unavailableFc              3   óF   •K  — | ]  }|j                  ‰d    «      –— Œ y­w)r(   N)Úsearch)r3   Úregexr4   s     €r    r5   z<ModifyChaptersPP._mark_chapters_to_remove.<locals>.<genexpr>T   s   øè ø€ Ò\°E�u—|‘| A g¡J×/Ñ\ùs   ƒ!Úremovez(There are no chapters matching the regexz'SponsorBlock information is unavailableÚcategoryz+There are no matching SponsorBlock chaptersc              3   ó<   K  — | ]  \  }}||d d ||dfgddœ–— Œ y­w)Ú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ñ ˆe�Sð  ØØ*Ø/°¸Ð=OÐPÐQØõ!
ñ  4ùs   ‚)r   rH   Úanyr   rN   r   )r   r$   rW   Úwarn_no_chapter_to_remover4   s       @r    rA   z)ModifyChaptersPP._mark_chapters_to_removeM   s  ø€ Ø×)Ò)Ø(,Ð%ÙØ—‘ÐCÔDØ,1Ð)Øò 6�ÜÓ\¸T×=[Ñ=[Ô\Õ\Ø"&�A�h‘KØ05Ñ-ð6ñ )Ø—‘ÐIÔJà×(Ò(Ø(,Ð%Ù#Ø—‘ÐHÔIØ,1Ð)Ø%ò 6�Ø�Z‘= D×$AÑ$AÒAØ"&�A�h‘KØ05Ñ-ð6ñ )Ø—‘ÐLÔMà×Ññ  4ð !×2Ñ2ô 4ô 	4ð Ð)Ð)Ð)r!   c              #   ó*  K  — |j                  d«      xs i j                  «       D ]i  }|j                  d«      }|rt        j                  j	                  |«      sŒ6|d   }|t
        j                  vr| j                  d|› d|› d�«       Œf|–— Œk y ­w)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’   è ø€ Ø—H‘HÐ2Ó3Ò9°r×AÑAÓCò 
	ˆCØ—w‘w˜zÓ*ˆHá¤2§7¡7§>¡>°(Ô#;ØØ�e‘*ˆCØÔ4×CÑCÑCØ×#Ñ#Ð&KÈCÈ5ÐP]Ð^fÐ]gÐg{Ð$|Ô}Øà‹Nñ
	ùs   ‚BBc                 óP  ‡‡‡— g Šˆfd„}ˆfd„Šg Šˆˆfd„}t        |«      D ��cg c]  \  }}|d   ||f‘Œ }}}t        j                  |«       t        j                  |«      \  }}}|�r•t        j                  |«      \  }}}|d   |d   k  r d|vr|n||«       ||}}Œ:d|v rRd|v rt	        |d   |d   «      |d<   �n;|d   |d   k  �r/|d   |d<   d|d<   t        j
                  ||d   ||f«       �nd|v rÞd|d<   |d   |d   k  r|d   |d<    ||«       ||}}Œ¹d	|v r›t        ||d   g ¬
«      }	g }
|d	   D ]>  }|d   |d   k  r|
j                  |«       |d   |d   kD  sŒ+|	d	   j                  |«       Œ@ |
|d	<   |d	   |	d	   k7  r2t        j
                  ||	d   ||	f«       |d   |d<    ||«       ||}}�ŒX|j                  d ||«      «       �n"d	|v r:d	|vr6|d   |d   k  �r|d   |d<   d|d<   t        j
                  ||d   ||f«       näd	|v sJ d«       ‚d|d<   d|d<   |d   |d   kD  r@t        t        j                  |«      |d   ¬«      }	t        j
                  ||	d   ||	f«       nR|d   |d   kD  rGt        t        j                  |«      |d   ¬«      }t        j
                  ||d   ||f«       |d   |d<   d	|v r|d	   |d	   z   |d	<   d|v r|d   |d<   |d   |d<    ||«       ||}}|r�Œ• d|vr|n||«       | j                  ‰«      ‰fS c c}}w )Nc                 ó°   •— d| v sJ d«       ‚‰r‰d   nd }|r!|d   | d   k\  rt        |d   | d   «      |d<   n‰j                  | «       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�   sh   ø€ Ø˜q‘=ÐAÐ"AÓA�=Ù&*˜$˜rš(°ˆKÙ˜{¨:Ñ6¸!¸L¹/ÒIÜ*-¨k¸*Ñ.EÀqÈÁ}Ó*U�˜JÒ'à—‘˜A”Ü�t“9˜q‘=Ð r!   c                 ó  •— | j                  dt        ‰«      «      d}}|t        ‰«      k  r\‰|   }|d   | d   k\  r	 |S |d   | d   kD  r*|t        |d   | d   «      z  }|t        |d   | d   «      z  }|dz  }|t        ‰«      k  rŒ\|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°   ø€ ð  Ÿe™e I¬s°4«yÓ9¸1�VˆGØœC ›IÒ%Ø˜7‘m�Ø�|Ñ$¨¨*©Ò5Øð
 ˆMð	 �z‘? Q |¡_Ò4Øœc # j¡/°1°Z±=ÓAÑA�FØœc # lÑ"3°Q°|±_ÓEÑE�FØ˜1‘�ð œC ›IÓ%ð ˆMr!   c                 ó¶   •— d| vsJ d«       ‚| d   | d   z
   ‰| «      z
  }|dk  ry ‰r‰d   d   nd}| j                  |||z   ¬«       ‰j                  | «       y )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�   sr   ø€ Ø 1Ñ$ÐCÐ&CÓCÐ$Ø�z‘] Q |¡_Ñ4±ÀqÓ7IÑIˆFà˜Š{ØÙ4@�L Ñ$ ZÒ0ÀaˆEØ�H‰H °¸±ˆHÔ?Ø×Ñ Õ"r!   r)   r*   rd   TÚ_was_cutrh   )r)   rh   r   r   r}   zNormal chapters overlap)r)   )Ú	enumerateÚheapqÚheapifyÚheappoprx   ÚheappushÚdictrU   Ú
setdefaultrB   rC   Ú_remove_tiny_rename_sponsors)r   r$   r{   r‡   Úir4   Ú_Úcur_iÚcur_chapterÚafter_cÚcur_catsÚcat_start_endÚ	after_curr;   r‚   r†   s                @@@r    rE   z0ModifyChaptersPP._remove_marked_arrange_sponsors}   só  ú€ àˆô	!ô	ð" ˆõ	#ô 9BÀ(Ó8K×L±°°1�Q�|‘_ a¨Ò+ÐLˆÑLÜ�‰�hÔä %§¡¨hÓ 7Ñˆˆ5�+ÚÜ—m‘m HÓ-‰GˆAˆq�!ð ˜:Ñ&¨!¨L©/Ò9ØN 8°;Ñ#>‘ÀJÐP[Ô\Ø%&¨�{�Øð ˜;Ñ&à˜q‘=Ü.1°+¸jÑ2IÈ1ÈZÉ=Ó.Y�K 
Ó+ð
 ! Ñ,¨q°©}Ó<Ø&1°*Ñ&=�A�l‘OØ$(�A�j‘MÜ—N‘N 8¨a°©o¸qÀ!Ð-DÖEà˜Q‘Ø*.�˜JÑ'ð ˜zÑ*¨a°
©mÒ;Ø./°©o�K 
Ñ+Ù" ;Ô/Ø)*¨A˜;�EØð ! KÑ/Ü" ;¸1¸Z¹=ÐVXÔY�GØ!�HØ)4°]Ñ)Cò I˜Ø(¨Ñ+¨a°©oÒ=Ø$ŸO™O¨MÔ:Ø(¨Ñ+¨a°
©mÓ;Ø# MÑ2×9Ñ9¸-ÕHð	Ið
 2:�K Ñ.Ø" =Ñ1°W¸]Ñ5KÒKäŸ™ x°'¸,Ñ2GÈÐPWÐ1XÔYØ23°L±/˜ JÑ/Ù& {Ô3Ø-.°˜{˜Ù ð ×&Ñ& y±*¸Q³-Ö@ð  +Ñ-°-ÀqÑ2HØ˜zÑ*¨Q¨z©]Ó:Ø&1°*Ñ&=�A�l‘OØ$(�A�j‘MÜ—N‘N 8¨a°©o¸qÀ!Ð-DÕEð %¨Ñ)ÐDÐ+DÓDÐ)Ø*.�˜JÑ'Ø $��*‘à˜zÑ*¨Q¨z©]Ò:ä"¤4§=¡=°Ó#=È!ÈJÉ-ÔX�GÜ—N‘N 8¨g°lÑ.CÀUÈGÐ-TÕUà�z‘] [°Ñ%<Ò<Ü $¤T§]¡]°1Ó%5À+ÈjÑBYÔ Z�IÜ—N‘N 8¨i¸Ñ.EÀuÈiÐ-XÔYØ$/°
Ñ$;�A�j‘Mà  KÑ/Ø'2°=Ñ'AÀAÀmÑDTÑ'T�A�mÑ$à Ñ+Ø#.¨yÑ#9�A�i‘LØ*+¨L©/�˜JÑ'Ù˜{Ô+Ø%&¨�{�óo ðp 
G˜8¨;Ñ6‰¸JÈÔTØ×0Ñ0°Ó>ÀÐDÐDùó{ Ms   ¦L"c           
      óò  — g }t        |«      D �]e  \  }}d|v sd|v r||d   |d   z
  t        k  rj|s |t        |«      dz
  k  rW|d   ||dz      d<   ŒC|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<   Œ‹|j                  dd «       |j                  dd «      }	|	r¤t	        |	d„ ¬	«      \  }
}}}|j                  |
t        d
„ |	D «       «      |t        d„ |	D «       «      dœ«       | j                  j                  | j                  |j                  «       «      |d<   |r"d|d   v r|d   d   |d   k(  r|d   |d   d<   �ŒU|j                  |«       �Œh |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   € ÈÈ!ÉÈqÐQRÉtÉ€ r!   )Úkeyc              3   ó&   K  — | ]	  }|d    –— Œ y­w)r   Nr=   ©r3   Úxs     r    r5   z@ModifyChaptersPP._remove_tiny_rename_sponsors.<locals>.<genexpr>,  s   è ø€ Ò,@°a¨Q¨q­TÑ,@ùó   ‚c              3   ó&   K  — | ]	  }|d    –— Œ y­w)é   Nr=   rŸ   s     r    r5   z@ModifyChaptersPP._remove_tiny_rename_sponsors.<locals>.<genexpr>.  s   è ø€ Ò0D¸!°°1µÑ0Dùr¡   )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
  sÕ  € ØˆÜ˜hÓ'ó *	#‰DˆAˆqð ˜q‘ M°QÑ$6Ø˜*™¨¨,©Ñ7Ô:PÒPÙ#àœ3˜x›=¨1Ñ,Ò,Ø89¸,¹˜  Q¡™¨Ñ5Ø à(¨Ñ,�EØœ3˜x›=¨1Ñ,Ò,Ø!)¨!¨a©%¡˜à*6¸%Ð*?˜Ø*7¸6Ð*A˜à*°!Ñ3¹ÑP_Ø$1°QÑ$6¹ÑSbØ34°\±?˜F <Ñ0Ø$Ø()¨*©�E˜*Ñ%Øà�E‰E�*˜dÔ#Ø—5‘5˜¨Ó-ˆDÙÜ03°DÑ>SÔ0TÑ-�˜!˜Q Ø—‘Ø (Ü",Ñ,@¸4Ô,@Ó"@Ø)Ü&0Ñ0D¸tÔ0DÓ&Dñ	ô ð "×-Ñ-×>Ñ>¸t×?_Ñ?_Ðab×agÑagÓaiÓj��'‘
á  \°\À"Ñ5EÑ%EØ(¨Ñ,¨WÑ5¸¸7¹ÒCØ34°Z±=�L Ñ$ ZÑ0ÙØ×Ñ Ö"ðU*	#ðV Ðr!   c                 óð   — |}t        |d«      }|r| j                  |d„ |D «       «      }| j                  d|› �«       | j                  |gt	        |«      z  ||«       ||k7  r| j                  |d ¬«       |S )NÚtempc              3   ó>   K  — | ]  }|d    |d   fD ]  }|–— Œ Œ y­w)r)   r*   Nr=   )r3   r4   Úts      r    r5   z3ModifyChaptersPP.remove_chapters.<locals>.<genexpr>=  s0   è ø€ Ò4x¸1ÐXYÐZfÑXgÐijÐkuÑivÐWwÒ4xÐRS´QÐ4x°QÑ4xùs   ‚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€   € ØˆÜ$ W¨fÓ5ˆÙØ×*Ñ*¨7Ñ4xÀÔ4xÓyˆGØ�‰Ð0°°
Ð;Ô<Ø×Ñ˜7˜)¤c¨+Ó&6Ñ6¸À+ÔNØ�hÒØ×)Ñ)¨'°tÐ)Ô<Øˆr!   c                 ó¢   — i g}| D ]F  }|d   dk(  r|d   d›|d   d<   Œ|d   d›|d   d<   |d   |k  sŒ/|j                  d|d   d›i«       ŒH |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à�‰ !Ò#Ø)*¨:©°sÐ(;��R‘˜Ñ#ØØ&'¨¡o°cÐ%:ˆD�‰H�ZÑ à�‰}˜xÓ'Ø—‘˜Y¨1¨Z©=¸Ð*=Ð?Õ@ð	Að ˆr!   )NNN)F)Ú__name__Ú
__module__Ú__qualname__Ú"DEFAULT_SPONSORBLOCK_CHAPTER_TITLEr   r   Ú_restrict_tor_   rA   rO   rE   r�   r7   ÚstaticmethodrK   r=   r!   r    r   r      sf   „ ð0Ø/QÐchô0ð  €]×Ñ uÔ-ñ2%ó .ð2%òh!*òFòKEòZ-ó^	ð ñó ñr!   r   )rB   rŠ   rP   Úcommonr   Úffmpegr   r   Úsponsorblockr   Úutilsr	   r
   r   r¦   r¿   r   r=   r!   r    ú<module>rÆ      s8   ðÛ Û Û 	å !ß CÝ (ß FÑ FàÐ Ø%IÐ "ôBÐ*õ Br!   