
    V|h                     F    S SK r S SKrS SKrS SKrSSKJr   " S S\5      rg)    N   )FFmpegPostProcessorc            	       j    \ rS rSrSS0rSS0r0 \ESS0ErSS	S
SSSSSS.\ErSS jrS r	S r
S rSrg)SponsorBlockPP	   YoutubeYouTubepoi_highlight	HighlightchapterChapterSponsorzIntermission/Intro AnimationzEndcards/CreditszUnpaid/Self PromotionzPreview/RecapzFiller TangentzInteraction ReminderzNon-Music Section)sponsorintrooutro	selfpromopreviewfillerinteractionmusic_offtopicNc                     [         R                  " X5        [        U=(       d    U R                  R	                  5       5      U l        [        R                  " SU5      (       a  X0l        g SU-   U l        g )Nz	https?://zhttps://)	r   __init__tuple
CATEGORIESkeys_categoriesrematch_API_URL)self
downloader
categoriesapis       [/home/james-whalen/.local/lib/python3.13/site-packages/yt_dlp/postprocessor/sponsorblock.pyr   SponsorBlockPP.__init__!   sO    $$T6 !Et/C/C/EF!xxS99zC?O    c                     US   nX R                   ;  a  U R                  SU 35        / U4$ U R                  S5        U R                  XR                  S5      5      US'   / U4$ )Nextractor_keyz"SponsorBlock is not supported for zFetching SponsorBlock segmentsdurationsponsorblock_chapters)
EXTRACTORS	to_screen_get_sponsor_chaptersget)r    info	extractors      r$   runSponsorBlockPP.run&   si    )	OO+NN?	{KLt8O78(,(B(B4R\I](^$%4xr&   c                   ^ ^ T R                  US   T R                  US      5      nUU 4S jnU Vs/ s H  oT" U5      (       d  M  UPM     nn[        U5      [        U5      :w  a  T R                  S5        U 4S jnU Vs/ s H
  oW" U5      PM     nnU(       d  T R	                  S5        U$ T R	                  S[        U5       S35        U$ s  snf s  snf )	Nidr(   c                 2  > U S   nUS:X  a  gUS   S::  a  SUS'   U S   TR                   ;   a  US==   S-  ss'   T(       a  TUS   -
  S::  a  TUS'   U S   (       a  [        TU S   -
  5      OSnUS:  =(       d    US:  =(       a    X!S   US   -
  -  S	:  $ )
Nsegment)r   r   Fr   r   categoryvideoDuration   g?)POI_CATEGORIESabs)s	start_enddiffr)   r    s      r$   duration_filter=SponsorBlockPP._get_sponsor_chapters.<locals>.duration_filter3   s    )IF"|q  	!} 3 33!! Hy|3q8'	!9:?9K3x!O"445QRD!8Yq XTq\IaL5P-QTX-XYr&   zjSome SponsorBlock segments are from a video of different duration, maybe from an old version of this videoc           	      p   > U S   U S   su  pnUS:X  a  U S   OTR                   U   nUUUUU S   X1X$4/S.$ )Nr6   r7   r   description
actionType)
start_timeend_timer7   titletyper   )r   )r<   startendcatrF   r    s        r$   
to_chapter8SponsorBlockPP._get_sponsor_chapters.<locals>.to_chapterJ   s]     !)a
mLU#(+y(8Am$dooc>RE#,!$S 89 r&   z<No matching segments were found in the SponsorBlock databasezFound z& segments in the SponsorBlock database)_get_sponsor_segmentsr+   lenreport_warningr,   )	r    r/   r)   segmentsr?   r<   duration_matchrK   sponsor_chapterss	   ` `      r$   r-   $SponsorBlockPP._get_sponsor_chapters0   s    --d4j$//$J_:`a	Z& &.DX1C!XD~#h-/  !M  N
	 4BB>aJqM>BNNYZ   NNVC(8$9#::`ab+ E  Cs   CCCc           	         [         R                  " UR                  S5      5      R                  5       nU R                   SUS S  S3[
        R                  R                  U[        R                  " U R                  5      [        R                  " / SQ5      S.5      -   nU R                  U5      =(       d    /  H  nUS   U:X  d  M  US   s  $    / $ )	Nasciiz/api/skipSegments/   ?)skippoir   )servicer"   actionTypesvideoIDrP   )hashlibsha256encode	hexdigestr   urllibparse	urlencodejsondumpsr   _download_json)r    video_idrZ   
video_hashurlds         r$   rM   $SponsorBlockPP._get_sponsor_segments]   s    ^^HOOG$<=GGI
1*Ra.1ACfllF\F\**T%5%56::&@A^
 G 
 $$S)/R/A|x'}$ 0 	r&   )r   r   )Nzhttps://sponsor.ajay.app)__name__
__module____qualname____firstlineno__r+   r:   NON_SKIPPABLE_CATEGORIESr   r   r1   r-   rM   __static_attributes__ r&   r$   r   r   	   sy     	9J 	N 
 9 
 /#,""--
 #
JP
+ Zr&   r   )r]   rd   r   urllib.parsera   ffmpegr   r   rr   r&   r$   <module>ru      s#      	  '_( _r&   