
    VGh(                        d Z ddlZddlZddlZddl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mZ ddlmZ ddlmZmZ ddlmZ dd	lmZ dd
lmZ ddlmZ ddlmZmZ ddlmZ ddlm Z  ddlm!Z!m"Z" ddlm#Z$ ddlm%Z& ddlm'Z'm(Z( ddl)m*Z*m+Z+  e,e      Z- e,e      Z. G d d      Z/d Z0d+dZ1d Z2d Z3d Z4d Z5d Z6d Z7d Z8d Z9 G d  d!e      Z:e:Z; G d" d#ejx                  jz                        Z>d$ Z?d% Z@d,d&ZAd,d'ZBd( ZCd) ZDd* ZEy)-zGNo longer used and new code should not use. Exists only for API compat.    N   )Popendecode_base_npreferredencodingtraverse_obj   )certifi
websockets)make_ssl_context)HTTPHandler)escape_rfc3986)normalize_url)random_user_agentstd_headers)YoutubeDLCookieJar)
PUTRequest)SUPPORTED_ENCODINGSHEADRequest)ProxyHandler)RedirectHandler)make_socks_conn_classupdate_Request)	HTTPErrornetwork_exceptionsc                   T    e Zd ZdZdZd
dZd Zd Zd Zd Z	e
d        Ze
d	        Zy)WebSocketsWrapperz2Wraps websockets module to use in non-async scopesNc           
         t        j                         | _        t        j                  |f|d t        d      | j                  t        d      d|| _        |r| j                          t        j                  | j                  d d d        y )Ninf)extra_headersping_intervalclose_timeoutloopping_timeout)asyncionew_event_loopr#   r   connectfloatconn	__enter__atexitregister__exit__)selfurlheadersr'   	ws_kwargss        ]/var/www/it7/html/youtubeDownloader/venv/lib/python3.12/site-packages/yt_dlp/utils/_legacy.py__init__zWebSocketsWrapper.__init__)   st    **,	&&`&d,TYYU5\`U^`	 NNtT48    c                     | j                   s9| j                  | j                  j                         | j                        | _         | S N)poolrun_with_loopr)   
__aenter__r#   )r.   s    r2   r*   zWebSocketsWrapper.__enter__3   s3    yy**499+?+?+A499MDIr4   c                 j    | j                   | j                  j                  | | j                         y r6   )r8   r7   sendr#   r.   argss     r2   r;   zWebSocketsWrapper.send8   s%    >499>>40$))<r4   c                 h    | j                   | j                  j                  | | j                        S r6   )r8   r7   recvr#   r<   s     r2   r?   zWebSocketsWrapper.recv;   s(    !!.$))..$"7CCr4   c                 P   	 | j                  | j                  j                  |||      | j                        | j                  j	                          | j                  | j                         S # | j                  j	                          | j                  | j                         w xY wr6   )r8   r)   	__aexit__r#   close_cancel_all_tasks)r.   typevalue	tracebacks       r2   r-   zWebSocketsWrapper.__exit__>   su    	.%%dii&9&9$y&QSWS\S\]IIOO""499- IIOO""499-s   6A. .7B%c                    t        j                  |       st        d|       	 |j                  |       |j                  |j	                                t        |d      r |j                  |j                                S S # |j                  |j	                                t        |d      r |j                  |j                                w w xY w)Nza coroutine was expected, got shutdown_default_executor)r%   iscoroutine
ValueErrorrun_until_completeshutdown_asyncgenshasattrrH   )mainr#   s     r2   r8   zWebSocketsWrapper.run_with_loopG   s    ""4(=dXFGG	J**40##D$;$;$=>t89''(F(F(HI : ##D$;$;$=>t89''(F(F(HI :s   B ACc                 D   t        j                  |       }|sy |D ]  }|j                           | j                  t        j                  || dd       |D ]G  }|j                         r|j                         %| j                  d|j                         |d       I y )NT)r#   return_exceptionsz1unhandled exception during asyncio.run() shutdown)message	exceptiontask)r%   	all_taskscancelrK   gather	cancelledrR   call_exception_handler)r#   	to_cancelrS   s      r2   rC   z#WebSocketsWrapper._cancel_all_tasksS   s    %%d+	 	DKKM	 	NNIDDI	K  	D~~~~+++R!%!1 - 		r4   )NT)__name__
__module____qualname____doc__r7   r3   r*   r;   r?   r-   staticmethodr8   rC    r4   r2   r   r   %   sN    <D9
=D. 	J 	J  r4   r   c                 F    ddl m}  || |      }|j                  |       |S )Nr	   )load_plugins)pluginsra   update)namesuffix	namespacera   rets        r2   ra   ra   l   s$    &
tV
$CSJr4   c                 "    t        | ||dd      S )NT)	casesenseis_user_inputtraverse_stringr   )dictnkeysri   s      r2   traverse_dictrn   s   s    ty^bccr4   c                     t        | |      S )N)table)r   )rE   digitss     r2   decode_baserr   w   s    f--r4   c                  *    t        j                          S )z$ Returns the platform name as a str )platformr_   r4   r2   platform_nameru   {   s    r4   c                      t         j                  dk(  r%t        j                         d   dk\  rt               } nt        j                         } | d} | S )Nwin32r      zutf-8)sysrt   getwindowsversionr   getfilesystemencoding)encodings    r2   get_subprocess_encodingr}      sK    
||w3#8#8#:1#=#B %&,,.Or4   c                 B    | dd  }| d d dk7  s|dd dk7  rt        d      dddd	fd
}g }|rA ||d d       }|dd  }|d d }|dd  }|d | }||d  }|dd  }|j                  |||d       |rA|d   d   } ||d d       } ||dd       }	d}
|D ]  }|d   dk(  s|
|d   z  }
 |
st        d      t        t        j                  |
            }|dz   g  fd}t        |	      D ])  }|d z   z  }||   }g }j                  |       t               D ]  }|d|z   |z      }| z  |z   }d}d}|dkD  r ||dz
        }|dkD  r || z
        }|dk(  r	||z   dz  }n|dk(  r	||z   dz  }n|dk(  r|||z   dz	  z   dz  }n~|dk(  ry|}|}d}|dkD  r|dkD  r || z
  dz
        }||z   |z
  }t        ||z
        }t        ||z
        }t        ||z
        }||k  r||k  r	||z   dz  }n||k  r	||z   dz  }n||z   dz  }|j                  |        , ||	fS )N   s   PNG

   s   IHDRzNot a valid PNG file.z>Bz>Hz>I)r   r	   r   c                 N    t        j                  t        |          |       d   S )Nr   )structunpacklen)xint_maps    r2   <lambda>zdecode_png.<locals>.<lambda>   s    v}}WSV_a@C r4   )rD   lengthdatar   r   r4   rD   s   IDATzUnable to read PNG data.   c                 (    | z  }| z  }|   |   S r6   r_   )idxr   ypixelsstrides      r2   
_get_pixelzdecode_png.<locals>._get_pixel   s#    &L6May|r4   r   r	      )OSErrorappend	bytearrayzlib
decompressrangeabs)!png_dataheaderunpack_integerchunksr   
chunk_type
chunk_dataihdrwidthheightidatchunkdecompressed_datar   r   base_posfilter_typecurrent_rowr   colorbasexleftupabcppapbpcr   r   r   s!                                 @@@r2   
decode_pngr      s   ab\F|11VAa[G5K-..4D)GCNF
r
+BQZ
GV_

 	 $ !9VD48$ED1I&FD "=G#E&M!D" 011!$//$"78QYFF
 6] .&F
#'1k"v &	&A%a(lQ&67EJNEDB1u!%!),1u/a-!t+!4"9"23t;!q5QU"56>A#56AEAIQZQZQZ8b"QY$.E2X"QY$.E"QY$.Eu%M&	&.&` &&  r4   c                      dD ]H  } | t         j                  j                  vs t         j                  j                  j                  |        J y )N)sockssocks4socks4asocks5)urllibparseuses_netlocr   )schemes    r2   register_socks_protocolsr      s=     ; 4111LL$$++F34r4   c                     | }d|v r:|j                         D ci c]  \  }}|j                         dk7  s|| }}}|d= |S c c}}w )NzYoutubedl-no-compressionzaccept-encoding)itemslower)r0   filtered_headerskvs       r2   handle_youtubedl_headersr     sY    !%55-=-C-C-EhTQVgIgAqDhh78 is
   AAc                 n    t        | t        j                  j                        r| j	                         S | S r6   )
isinstancer   requestRequestget_full_url)reqs    r2   request_to_urlr     s*    #v~~--.!!
r4   c                     ddl m}m}  |t         ||                   \  } }|*t	        |      dk\  r|d   n|j                  di       }||d<   t        j                  j                  | g|i |S )Nr	   )extract_basic_authsanitize_urlr   r0   Authorization)	utilsr   r   
escape_urlr   
setdefaultr   r   r   )r/   r=   kwargsr   r   auth_headerr0   s          r2   sanitized_Requestr     so    8)*\#5F*GHC Y!^$q'1B1B9b1Q#. >>!!#7777r4   c                        e Zd Z fdZ xZS )YoutubeDLHandlerc                 2    || _         t        |   |i | y r6   )_paramssuperr3   )r.   paramsr=   r   	__class__s       r2   r3   zYoutubeDLHandler.__init__  s    $)&)r4   )rZ   r[   r\   r3   __classcell__)r   s   @r2   r   r     s    * *r4   r   c                   ^    e Zd ZddZd Zej                  j                  j                  Z	eZ
y)YoutubeDLCookieProcessorNc                 X    t         j                  j                  j                  | |       y r6   )r   r   HTTPCookieProcessorr3   )r.   	cookiejars     r2   r3   z!YoutubeDLCookieProcessor.__init__%  s    **33D)Dr4   c                 X    t         j                  j                  j                  | ||      S r6   )r   r   r   http_response)r.   r   responses      r2   r   z&YoutubeDLCookieProcessor.http_response(  s!    ~~11??gxXXr4   r6   )rZ   r[   r\   r3   r   r   r   r   http_requesthttps_requesthttps_responser_   r4   r2   r   r   $  s*    EY NN66CCM"Nr4   r   c                     t        | fdt        | j                  d       | j                  d      | j                  d      | j                  d      | j                  d      d| j                  dg       v	      i|S )
Ncontextnocheckcertificateclient_certificateclient_certificate_keyclient_certificate_passwordlegacyserverconnectz
no-certificompat_opts)verifyr   r   r   legacy_supportuse_certifi)YoutubeDLHTTPSHandlerr   get)r   r   s     r2   make_HTTPS_handlerr   /  s      1A::233!::&:;%zz*BC$*JJ/L$Mzz"78 

="(EE2  
 r4   c                 4    t        j                  | g|i |S r6   )r   communicate_or_kill)r   r=   r   s      r2   process_communicate_or_killr   :  s    $$Q8888r4   c                 *    t        | t              sJ | S r6   )r   str)sfor_subprocesss     r2   encodeFilenamer   >  s    aHr4   c                     | S r6   r_   )r   r   s     r2   decodeFilenamer   C      Hr4   c                     | S r6   r_   )r   s    r2   decodeArgumentr  G  r  r4   c                     | | S t        | t              r| j                  t                     } t        | t              sJ | S r6   )r   bytesdecoder   r   )optvals    r2   decodeOptionr  K  s=    ~&% 023fc"""Mr4   c                     t        |       S r6   )r   )errs    r2   error_to_compat_strr  U  s    s8Or4   )T)F)Fr]   r%   r+   rt   r   ry   urllib.errorr   urllib.parseurllib.requestr   _utilsr   r   r   	traversalr   dependenciesr
   r   networking._helperr   networking._urllibr   
networkingr   r   r   r   r   cookiesr   r   r   r   r   PerRequestProxyHandlerr   YoutubeDLRedirectHandlerr   r   networking.exceptionsr   r   boolhas_certifihas_websocketsr   ra   rn   rr   ru   r}   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r_   r4   r2   <module>r     s    M     
     ; ; # . 1 , ' 3 6 ( + A G L B7mj!D DNd.
	f!R48*{ * ) #v~~AA #9
r4   