
    Şi                    F   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j"        r.ej#        ee$e         ge%f         Z&e'                    d)           dS dS ),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dS )r   nsigN)__name__
__module____qualname__NSIG     jC:\Users\betacode\Desktop\descargarYoutube\venv\Lib\site-packages\yt_dlp/extractor/youtube/jsc/provider.pyr   r   $   s        A
CCCr!   r   T)frozenc                  2    e Zd ZU ded<   ded<   dZded<   dS )r   r   typez#NChallengeInput | SigChallengeInputinputNz
str | Nonevideo_id)r   r   r   __annotations__r'   r    r!   r"   r   r   )   s;         ....Hr!   r   c                  F    e Zd ZU ded<    ej        e          Zded<   dS )r   str
player_urldefault_factory	list[str]
challengesNr   r   r   r(   dataclassesfieldlistr/   r    r!   r"   r   r   0   <         OOO-K-dCCCJCCCCCCr!   r   c                  F    e Zd ZU ded<    ej        e          Zded<   dS )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<   dS )r   r,   dict[str, str]resultsNr   r   r   r1   r2   dictr8   r(   r    r!   r"   r   r   <   3         /k/EEEGEEEEEEr!   r   c                  <    e Zd ZU  ej        e          Zded<   dS )r   r,   r7   r8   Nr9   r    r!   r"   r   r   A   r;   r!   r   c                  6    e Zd ZU ded<   dZded<   dZded<   dS )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<   dS )r   r   r%   z%NChallengeOutput | SigChallengeOutputoutputN)r   r   r   r(   r    r!   r"   r   r   M   s*         1111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)NF)_skipped_componentsexpectedboolc               Z    t                                          ||           || _        d S )N)super__init__rD   )selfmsgrE   rD   	__class__s       r"   rI   z+JsChallengeProviderRejectedRequest.__init__V   s+    h'''#6   r!   )NF)rE   rF   )r   r   r   __doc__rI   __classcell__)rL   s   @r"   r   r   S   sU        CC7PT 7 7 7 7 7 7 7 7 7 7 7 7r!   r   c                      e Zd ZdZdS )r   z-An error occurred while solving the challengeN)r   r   r   rM   r    r!   r"   r   r   [   s        7777r!   r   c                  V    e Zd ZU dZded<   ddZddZej        dd            Z	d Z
dS )r   r    ztuple[JsChallengeType] | None_SUPPORTED_TYPESr>   r   c                    |                                  st          | j         d          | j        -|j        | j        vr!t          d|j         d| j                   d S d S )Nz is not availablezJS Challenge type "z" is not supported by )is_availabler   PROVIDER_NAMErQ   r%   )rJ   r>   s     r"   __validate_requestz&JsChallengeProvider.__validate_requestd   s      "" 	_48J5]5]5]^^^ !-D$9994^gl^^$J\^^` ` ` .-99r!   requestslist[JsChallengeRequest]return9typing.Generator[JsChallengeProviderResponse, None, None]c              #     K   g }|D ]W}	 |                      |           |                    |           .# t          $ r}t          ||          V  Y d}~Pd}~ww xY w|                     |          E d{V  dS )z3Solve multiple JS challenges and return the results)r>   r@   N)&_JsChallengeProvider__validate_requestappendr   r   _real_bulk_solve)rJ   rV   validated_requestsr>   es        r"   
bulk_solvezJsChallengeProvider.bulk_solvep   s       	 	G''000"))'22225   1'KKKKKK (();<<<<<<<<<<<s   *5
AAAc                0    t          | j         d          )z:Subclasses can override this method to handle bulk solvingz  does not implement bulk solving)NotImplementedErrorrT   )rJ   rV   s     r"   r]   z$JsChallengeProvider._real_bulk_solve|   s     "T%7"Y"Y"YZZZr!   c                    	 | 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   )rJ   r'   r+   r_   s       r"   _get_playerzJsChallengeProvider._get_player   sx    	G7''!% (   
  	G 	G 	G*>1>>@ @EFG	Gs    
A<AN)r>   r   )rV   rW   rX   rY   )r   r   r   rQ   r(   r[   r`   abcabstractmethodr]   rg   r    r!   r"   r   r   _   s          798888
` 
` 
` 
`
= 
= 
= 
= 	[ [ [ [	G 	G 	G 	G 	Gr!   r   JCP)suffixprovidertype[JsChallengeProvider]c                D    t          | t          t          j                  S )z$Register a JsChallengeProvider class)rl   
base_classregistry)r	   r   r   value)rl   s    r"   r   r      s%    $&%   r!   	providersrX   )typing.Callable[[Preference], Preference]c                 <    t          t          t          j        g| R  S )z6Register a preference for a JsChallengeProvider class.)r   r   r   rq   )rr   s    r"   r   r      s,    & 
   r!   
Preference)rl   rm   )rr   rm   rX   rs   )(rM   
__future__r   rh   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   intru   r\   r    r!   r"   <module>r      s     " " " " " " 



       S S S S S S S S            ( ' ' ' ' '  "    di   
 d###              $#  d###D D D D D D D $#D
 d###D D D D D D D $#D
 d###F F F F F F F $#F d###F F F F F F F $#F # # # # # # # # 2 2 2 2 2 2 2 2
7 7 7 7 7)? 7 7 78 8 8 8 85 8 8 8+G +G +G +G +G+SWU +G +G +G +G\       
 !"5t<N7O!PRU!UVJNN<     ! !r!   