o
    i	                     @  s   d Z ddlmZ ddlZddlZddlZddlZddlZddl	m
Z
mZ ddlmZ g dZdZG dd	 d	ejZed
fdddZdd ZdS )z
PUBLIC API    )annotationsN)PoTokenContextPoTokenRequest)traverse_obj)WEBPO_CLIENTSContentBindingTypeget_webpo_content_binding)WEBMWEBTVHTML5WEB_EMBEDDED_PLAYERWEB_CREATOR	WEB_REMIXTVHTML5_SIMPLYTVHTML5_SIMPLY_EMBEDDED_PLAYERc                   @  s   e Zd ZdZdZdZdZdS )r   visitor_datadatasync_idvideo_id
visitor_idN)__name__
__module____qualname__VISITOR_DATADATASYNC_IDVIDEO_ID
VISITOR_ID r   r   V/home/ubuntu/.local/lib/python3.10/site-packages/yt_dlp/extractor/youtube/pot/utils.pyr      s
    r   Frequestr   return,tuple[str | None, ContentBindingType | None]c                 C  s   t | jd}|r||vrdS | jtjkr| jr| jtjfS | jtjks'|dv rD| j	r0| j
tjfS |r>t| j}|r>|tjfS | jtjfS | jtjtjfv rS| jtjfS dS )N)client
clientName)NN)r   )r   innertube_contextcontextr   GVS_gvs_bind_to_video_idr   r   r   is_authenticateddata_sync_idr   _extract_visitor_idr   r   r   PLAYERSUBS)r   webpo_clientsbind_to_visitor_idclient_namer   r   r   r   r   #   s    

r   c                 C  st   | sd S t t' ttj| dd  }t	
d|r(|W  d    S W d    d S 1 s3w   Y  d S )N      z[A-Za-z0-9_-]{11})
contextlibsuppress	Exceptionbase64urlsafe_b64decodeurllibparseunquote_plusdecodere	fullmatch)r   r   r   r   r   r)   @   s$   

r)   )r   r   r   r    )__doc__
__future__r   r4   r1   enumr:   urllib.parser6   %yt_dlp.extractor.youtube.pot.providerr   r   yt_dlp.utilsr   __all__r   Enumr   r   r)   r   r   r   r   <module>   s     	