
    VGh                     F    d dl Z d dlZd dlZd dlZddlmZ  G d de      Zy)    N   )FFmpegPostProcessorc            	       `    e Zd ZddiZddiZi eddiZddd	d
dddddeZddZd Zd Z	d Z
y)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                     t        j                  | |       t        |xs | j                  j	                               | _        t        j                  d|      r|| _        y d|z   | _        y )Nz	https?://zhttps://)	r   __init__tuple
CATEGORIESkeys_categoriesrematch_API_URL)self
downloader
categoriesapis       j/var/www/it7/html/youtubeDownloader/venv/lib/python3.12/site-packages/yt_dlp/postprocessor/sponsorblock.pyr   zSponsorBlockPP.__init__!   sP    $$T:6 !Et/C/C/EF!xxS9zC?O    c                     |d   }|| j                   vr| j                  d|        g |fS | j                  d       | j                  ||j                  d            |d<   g |fS )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#   runzSponsorBlockPP.run&   sm    )	DOO+NN?	{KLt8O78(,(B(B4R\I](^$%4xr$   c                      j                  |d    j                  |d            } fd}|D cg c]  } ||      s| }}t        |      t        |      k7  r j                  d        fd}|D cg c]
  } ||       }}|s j	                  d       |S  j	                  dt        |       d       |S c c}w c c}w )	Nidr&   c                    | d   }|dk(  ry|d   dk  rd|d<   | d   j                   v r|dxx   dz  cc<   r|d   z
  dk  r|d<   | d   rt        | d   z
        nd}|dk  xs |dk  xr ||d   |d   z
  z  d	k  S )
Nsegment)r   r   Fr   r   categoryvideoDuration   g?)POI_CATEGORIESabs)s	start_enddiffr'   r   s      r#   duration_filterz=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 XTYq\IaL5P-QTX-XYr$   zjSome SponsorBlock segments are from a video of different duration, maybe from an old version of this videoc           	      t    | d   | d   c\  }}}|dk(  r| d   nj                   |   }||||| d   ||||fgdS )Nr3   r4   r   description
actionType)
start_timeend_timer4   titletyper   )r   )r9   startendcatrB   r   s        r#   
to_chapterz8SponsorBlockPP._get_sponsor_chapters.<locals>.to_chapterJ   sc     !)a
mLUC#(+y(8Am$dooc>RE#,!$eS% 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<   r9   duration_matchrG   sponsor_chapterss	   ` `      r#   r+   z$SponsorBlockPP._get_sponsor_chapters0   s    --d4j$//$J_:`a	Z& &.D1C!DD~#h-/  !M  N
	 4BBaJqMBBNNYZ   NNVC(8$9#::`ab+ E  Cs   B= B=7Cc           	         t        j                  |j                  d            j                         }| j                   d|d d  dt
        j                  j                  |t        j                  | j                        t        j                  g d      d      z   }| j                  |      xs g D ]  }|d   |k(  s|d   c S  g S )	Nasciiz/api/skipSegments/   ?)skippoir   )servicer!   actionTypesvideoIDrK   )hashlibsha256encode	hexdigestr   urllibparse	urlencodejsondumpsr   _download_json)r   video_idrT   
video_hashurlds         r#   rH   z$SponsorBlockPP._get_sponsor_segments]   s    ^^HOOG$<=GGI
1*Ra.1ACfllF\F\**T%5%56::&@A^
 G 
 $$S)/R 	%A|x'}$	% 	r$   )Nzhttps://sponsor.ajay.app)__name__
__module____qualname__r)   r7   NON_SKIPPABLE_CATEGORIESr   r   r/   r+   rH    r$   r#   r   r   	   sy     	9J 	N 
 9 
 /#,""--
 #
JP
+ Zr$   r   )rW   r^   r   urllib.parser[   ffmpegr   r   ri   r$   r#   <module>rl      s#      	  '_( _r$   