
    nzh                     l    S SK r S SKrS SKJrJr  S SKJr  S SK7  S SKJ	r	  S SK
JrJr   " S S\	5      rg)	    N)UnionList)	urlencode)*)RequestCore)getValue
getVideoIdc                   X   ^  \ rS rSrS\S\4U 4S jjrS rS rS rS r	S	 r
S
 rSrU =r$ )TranscriptCore   	videoLinkkeyc                 :   > [         TU ]  5         Xl        X l        g N)super__init__r   r   )selfr   r   	__class__s      ]/home/james-whalen/.local/lib/python3.13/site-packages/youtubesearchpython/core/transcript.pyr   TranscriptCore.__init__   s    "    c                     S[        [        SS.5      -   U l        [        R                  " [
        5      U l        [        U R                  5      U R                  S'   g )Nz)https://www.youtube.com/youtubei/v1/next?falser   prettyPrintvideoId)	r   	searchKeyurlcopydeepcopyrequestPayloaddatar	   r   r   s    r   prepare_params_request%TranscriptCore.prepare_params_request   sK    Ci"Q
 G  MM.1	)$..9		)r   c                     UR                  5       n[        US/5      nU(       d  [        S5      eSnU H)  nUS   n[        US/5      S:X  d  M  [        U/ SQ5      nM+     US:X  d  U(       d  / / S.U l        g	X@l        g
)NengagementPanelsz@Failed to create first request - No engagementPanels is present. "engagementPanelSectionListRenderertargetIdz&engagement-panel-searchable-transcript)contentcontinuationItemRenderercontinuationEndpointgetTranscriptEndpointparamssegments	languagesTF)jsonr   	Exceptionresultr   )r   rjpanelsr   panels         r   extract_continuation_key'TranscriptCore.extract_continuation_key   s    FFH!012^__E>?E
|,0XXu  'I  J  "9C');DKr   c                 r    S[        [        SS.5      -   U l        SSSS.SS	0S
.U R                  S.U l        g )Nz3https://www.youtube.com/youtubei/v1/get_transcript?r   r   WEBz2.20220318.00.00T)
clientNameclientVersionnewVisitorCookielockedSafetyModeF)clientuser)contextr/   )r   r   r   r   r"   r#   s    r   prepare_transcript_request)TranscriptCore.prepare_transcript_request*   sV    MPY"[
 Q  #(%7(, '	 hh
	r   c           	         U R                   R                  5       n[        U/ SQ5      n/ n/ nU HV  n[        US/5      n[        US/5      [        US/5      [        U/ SQ5      [        USS/5      S.nUR                  U5        MX     [        U/ S	Q5      nU(       aB  U H<  n[        U/ S
Q5      [        US/5      [        US/5      S.nUR                  U5        M>     UUS.U l        g )N)
actionsr   updateEngagementPanelActionr+   transcriptRendererr+   transcriptSearchPanelRendererbodytranscriptSegmentListRendererinitialSegmentstranscriptSegmentRendererstartMsendMs)snippetrunsr   textstartTimeText
simpleText)rP   rQ   rT   	startTime)rH   r   rI   r+   rJ   r+   rK   footertranscriptFooterRendererlanguageMenusortFilterSubMenuRenderersubMenuItems)continuationreloadContinuationDatar]   selectedtitle)r/   r_   r`   r0   )r"   r3   r   appendr5   )	r   responsetranscriptsr1   r2   segmentr7   langslanguages	            r   extract_transcript!TranscriptCore.extract_transcript>   s    99>>#x  *`  a	"Gw)D(EFG#Gi[9!'G95 *HI%g/NO	A OOA #   $A  B!&x1kl (J< @%h	:
   # " !"
r   c                 2  #    U R                   (       dA  U R                  5         U R                  5       I S h  vN nU R                  U5      nU(       a  g U R	                  5         U R                  5       I S h  vN U l        U R                  5         g  N[ N7fr   )r   r$   asyncPostRequestr:   rE   r"   rg   r   r6   ends      r   async_createTranscriptCore.async_createZ   st     xx'')++--A//2C'')//11	! .
 2s"   5BBA B8B9BBc                    U R                   (       d9  U R                  5         U R                  5       nU R                  U5      nU(       a  g U R	                  5         U R                  5       U l        U R                  5         g r   )r   r$   syncPostRequestr:   rE   r"   rg   rk   s      r   sync_createTranscriptCore.sync_createe   sa    xx'')$$&A//2C'')((*	!r   )r"   r   r5   r   r   )__name__
__module____qualname____firstlineno__strr   r$   r:   rE   rg   rm   rq   __static_attributes____classcell__)r   s   @r   r   r      s9    # C 
: 
(
8	"	" 	"r   r   )r   r3   typingr   r   urllib.parser   "youtubesearchpython.core.constants!youtubesearchpython.core.requestsr   )youtubesearchpython.core.componenthandlerr   r	   r    r   r   <module>r      s(       " 0 9 Jb"[ b"r   