
    =Ґi                       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mZm	Z	 ddl
mZmZmZmZ ddlmZ g dZ G d d	ej$                        Z ej(                  d
       G d d             Z ej(                  d
       G d d             Z ej(                  d
       G d d             Z ej(                  d
       G d d             Z ej(                  d
       G d d             Zej(                   G d d             Zej(                   G d d             Z G d de      Z G d de      Z G d deej<                  d !      Zd%d"Z d&d#Z!ejD                  r(ejF                  ee$e   ge%f   Z&ejO                  d$       yy)'z
PUBLIC API    )annotationsN)_jsc_preferences_jsc_providers)IEContentProviderIEContentProviderErrorregister_preference_genericregister_provider_generic)ExtractorError)JsChallengeProviderJsChallengeProviderError"JsChallengeProviderRejectedRequestJsChallengeProviderResponseJsChallengeRequestJsChallengeResponseJsChallengeTypeNChallengeInputNChallengeOutputSigChallengeInputSigChallengeOutputregister_preferenceregister_providerc                      e Zd ZdZdZy)r   nsigN)__name__
__module____qualname__NSIG     ^/var/www/descvideos/venv/lib/python3.12/site-packages/yt_dlp/extractor/youtube/jsc/provider.pyr   r   $   s    A
Cr!   r   T)frozenc                  0    e Zd ZU ded<   ded<   dZded<   y)r   r   typez#NChallengeInput | SigChallengeInputinputNz
str | Nonevideo_id)r   r   r   __annotations__r'   r    r!   r"   r   r   )   s    
..Hjr!   r   c                  H    e Zd ZU ded<    ej
                  e      Zded<   y)r   str
player_urldefault_factory	list[str]
challengesNr   r   r   r(   dataclassesfieldlistr/   r    r!   r"   r   r   0       O-K--dCJ	Cr!   r   c                  H    e Zd ZU ded<    ej
                  e      Zded<   y)r   r*   r+   r,   r.   r/   Nr0   r    r!   r"   r   r   6   r4   r!   r   c                  >    e Zd ZU  ej                  e      Zded<   y)r   r,   dict[str, str]resultsNr   r   r   r1   r2   dictr8   r(   r    r!   r"   r   r   <       /k//EG^Er!   r   c                  >    e Zd ZU  ej                  e      Zded<   y)r   r,   r7   r8   Nr9   r    r!   r"   r   r   A   r;   r!   r   c                  4    e Zd ZU ded<   dZded<   dZded<   y)r   r   requestNzJsChallengeResponse | NoneresponsezException | Noneerror)r   r   r   r(   r?   r@   r    r!   r"   r   r   F   s    +/H(/"E"r!   r   c                  "    e Zd ZU ded<   ded<   y)r   r   r%   z%NChallengeOutput | SigChallengeOutputoutputN)r   r   r   r(   r    r!   r"   r   r   M   s    
11r!   r   c                  ,     e Zd ZdZdddd fdZ xZS )r   z9Reject the JsChallengeRequest (cannot handle the request)N)_skipped_componentsc               4    t         |   ||       || _        y )N)super__init__rD   )selfmsgexpectedrD   	__class__s       r"   rG   z+JsChallengeProviderRejectedRequest.__init__V   s    h'#6 r!   )NF)rJ   bool)r   r   r   __doc__rG   __classcell__)rK   s   @r"   r   r   S   s    C7PT 7 7r!   r   c                      e Zd ZdZy)r   z-An error occurred while solving the challengeN)r   r   r   rM   r    r!   r"   r   r   [   s    7r!   r   c                  X    e Zd ZU dZded<   d	dZd
dZej                  d
d       Z	d Z
y)r   r    ztuple[JsChallengeType] | None_SUPPORTED_TYPESc                    | j                         st        | j                   d      | j                  >|j                  | j                  vr%t        d|j                   d| j                         y y )Nz is not availablezJS Challenge type "z" is not supported by )is_availabler   PROVIDER_NAMErQ   r%   )rH   r>   s     r"   __validate_requestz&JsChallengeProvider.__validate_requestd   s}      "48J8J7KK\5]^^ !!-D$9$994%gll^3I$J\J\I]^` ` : .r!   c              #     K   g }|D ]%  }	 | j                  |       |j                  |       ' | j	                  |      E d{    y# t        $ r}t        ||       Y d}~_d}~ww xY w7 *w)z3Solve multiple JS challenges and return the results)r>   r@   N)&_JsChallengeProvider__validate_requestappendr   r   _real_bulk_solve)rH   requestsvalidated_requestsr>   es        r"   
bulk_solvezJsChallengeProvider.bulk_solvep   sz      	G''0"))'2	 (();<<< 6 1'KK 	=s9   A0"A	A0A.A0		A+A&!A0&A++A0c                2    t        | j                   d      )z:Subclasses can override this method to handle bulk solvingz  does not implement bulk solving)NotImplementedErrorrT   )rH   rZ   s     r"   rY   z$JsChallengeProvider._real_bulk_solve|   s     "T%7%7$88X"YZZr!   c                    	 | j                   j                  ||d      S # t        $ r}t        d|       |d }~ww xY w)NT)r'   r+   fatalz(Failed to load player for JS challenge: )ie_load_playerr
   r   )rH   r'   r+   r\   s       r"   _get_playerzJsChallengeProvider._get_player   s]    	G77''!% (  
  	G*:1#>@EFG	Gs     	=8=N)r>   r   )rZ   zlist[JsChallengeRequest]returnz9typing.Generator[JsChallengeProviderResponse, None, None])r   r   r   rQ   r(   rW   r]   abcabstractmethodrY   rd   r    r!   r"   r   r   _   s=     7938
`
= 	[ [	Gr!   r   JCP)suffixc                B    t        | t        t        j                        S )z$Register a JsChallengeProvider class)provider
base_classregistry)r	   r   r   value)rk   s    r"   r   r      s    $&%% r!   c                 @    t        t        t        j                  g|  S )z6Register a preference for a JsChallengeProvider class.)r   r   r   rn   )	providerss    r"   r   r      s%    & 
 r!   
Preference)rk   type[JsChallengeProvider])rp   rr   re   z)typing.Callable[[Preference], Preference])(rM   
__future__r   rf   r1   enumtyping&yt_dlp.extractor.youtube.jsc._registryr   r   &yt_dlp.extractor.youtube.pot._providerr   r   r   r	   yt_dlp.utilsr
   __all__Enumr   	dataclassr   r   r   r   r   r   r   r   r   ABCr   r   r   TYPE_CHECKINGCallabler3   intrq   rX   r    r!   r"   <module>r      s    " 
    S  ("dii 
 d#    $  d#D D $D
 d#D D $D
 d#F F $F d#F F $F # # # 2 2 2
7)? 785 8+G+SWWU +G\ 
"5t<N7O!PRU!UVJNN<  r!   