
    VGh%                       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Zej                  r ej                  d      ZddlmZmZmZ ddlmZ d Z G d d	e      Z e e       d
ddd      ZddZddZd Zd Zd Zd Zy)    )annotationsNT   )
NO_DEFAULTremove_startformat_field)traverse_objc                 :    d} d}| t        j                  |      z  S )NzhMozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/%s Safari/537.36)&z90.0.4430.212z90.0.4430.24z90.0.4430.70z90.0.4430.72z90.0.4430.85z90.0.4430.93z91.0.4472.101z91.0.4472.106z91.0.4472.114z91.0.4472.124z91.0.4472.164z91.0.4472.19z91.0.4472.77z92.0.4515.107z92.0.4515.115z92.0.4515.131z92.0.4515.159z92.0.4515.43z93.0.4556.0z93.0.4577.15z93.0.4577.63z93.0.4577.82z94.0.4606.41z94.0.4606.54z94.0.4606.61z94.0.4606.71z94.0.4606.81z94.0.4606.85z95.0.4638.17z95.0.4638.50z95.0.4638.54z95.0.4638.69z95.0.4638.74z96.0.4664.18z96.0.4664.45z96.0.4664.55z96.0.4664.93z97.0.4692.20)randomchoice)_USER_AGENT_TPL_CHROME_VERSIONSs     `/var/www/it7/html/youtubeDownloader/venv/lib/python3.12/site-packages/yt_dlp/utils/networking.pyrandom_user_agentr      s*     AO'P V]]+;<<<    c                      e Zd ZdZddZ fdZddZd fdZd fdZd fdZ	d Z
dd	Zdd
Zd fdZd fdZddZej"                  d d       Zej"                  d!d       Zef fd	Zej"                  d"d       Zej"                  d!d       Zef fd	Zd# fdZej"                  d"d       Zej"                  d"d       Zd$d fdZddZ xZS )%HTTPHeaderDictz
    Store and access keys case-insensitively.
    The constructor can take multiple dicts, in which keys in the latter are prioritised.

    Retains a case sensitive mapping of the headers, which can be accessed via `.sensitive()`.
    c                F    t        j                  | g|i |}i |_        |S N)dict__new___HTTPHeaderDict__sensitive_map)clsargskwargsobjs       r   r   zHTTPHeaderDict.__new__E   s'    ll3000 
r   c                   t         |           i | _        t        d |      D ]  }| j	                  |        |r| j	                  |       y y r   )super__init__r   filterupdate)selfr   r   dct	__class__s       r   r   zHTTPHeaderDict.__init__J   sL    !$% 	CKK	KK r   c               p    | j                         D ci c]  \  }}| j                  |   | c}}S c c}}w r   )itemsr   )r"   keyvalues      r   	sensitivezHTTPHeaderDict.sensitiveS   s>     #jjl
U   %u,
 	
 
s   2c               j    t         |   t        |t              r|j	                               S |      S r   )r   __contains__
isinstancestrtitler"   r'   r$   s     r   r+   zHTTPHeaderDict.__contains__Y   s*    w#:c33GCIIKQQSQQr   c               ^    |j                         }| j                  |= t        |   |       y r   )r.   r   r   __delitem__r/   s     r   r1   zHTTPHeaderDict.__delitem__\   s)    iik  %C r   c               >    t         |   |j                               S r   )r   __getitem__r.   r/   s     r   r3   zHTTPHeaderDict.__getitem__a   s    w"399;//r   c                   t        |t        |             r|j                         }t        |t              r| j	                  |       y t
        S r   )r,   typer)   r   r!   NotImplementedr"   others     r   __ior__zHTTPHeaderDict.__ior__d   s;    eT$Z(OO%EeT"KKr   c                   t        |t        |             r|j                         }t        |t              r  t        |       | j                         |      S t        S r   r,   r5   r)   r   r6   r7   s     r   __or__zHTTPHeaderDict.__or__l   sF    eT$Z(OO%EeT"4:dnn.66r   c                   t        |t        |             r|j                         }t        |t              r  t        |       || j                               S t        S r   r;   r7   s     r   __ror__zHTTPHeaderDict.__ror__s   sF    eT$Z(OO%EeT"4:eT^^%566r   c                   t        |t              r|j                  d      }|j                         }|| j                  |<   t
        |   |t        |      j                                y )Nzlatin-1)	r,   bytesdecoder.   r   r   __setitem__r-   strip)r"   r'   r(   	key_titler$   s       r   rB   zHTTPHeaderDict.__setitem__z   sR    eU#LL+EIIK	*-Y'Is5z'7'7'9:r   c               V    | j                   j                          t        |           y r   )r   clearr   r"   r$   s    r   rF   zHTTPHeaderDict.clear   s    ""$r   c               @     t        |       | j                               S r   )r5   r)   )r"   s    r   copyzHTTPHeaderDict.copy   s    tDz$..*++r   c                    y r    r"   r'   s     r   getzHTTPHeaderDict.get       .1r   c                    y r   rK   r"   r'   defaults      r   rM   zHTTPHeaderDict.get       7:r   c               r    |j                         }|t        u rt        |   |      S t        |   ||      S r   )r.   r   r   rM   r"   r'   rQ   r$   s      r   rM   zHTTPHeaderDict.get   s6    iikj 7;s##w{3((r   c                    y r   rK   rL   s     r   popzHTTPHeaderDict.pop   s    '*r   c                    y r   rK   rP   s      r   rV   zHTTPHeaderDict.pop   rR   r   c                   |j                         }|t        u r*| j                  j                  |       t        |   |      S | j                  j                  ||       t        |   ||      S r   )r.   r   r   rV   r   rT   s      r   rV   zHTTPHeaderDict.pop   s`    iikj   $$S)7;s##  g.w{3((r   c                T    | j                   j                          t        |          S r   )r   popitemr   rG   s    r   rZ   zHTTPHeaderDict.popitem   s"    $$&w  r   c                    y r   rK   rL   s     r   
setdefaultzHTTPHeaderDict.setdefault   rN   r   c                    y r   rK   rP   s      r   r\   zHTTPHeaderDict.setdefault   rR   r   c               z    |j                         }|| j                  v rt        |   |      S |xs d| |<   | |   S )N )r.   r   r   r3   rT   s      r   r\   zHTTPHeaderDict.setdefault   sC    iik$&&&7&s++MrS	Cyr   c               ~   t        |t        |             r|j                         }t        |t        j                  j
                        r|j                         D ]
  \  }}|| |<    n9t        |d      r|j                         D ]
  }||   | |<    n|D ]
  \  }}|| |<    |j                         D ]
  \  }}|| |<    y )Nkeys)	r,   r5   r)   collectionsabcMappingr&   hasattrra   )r"   r8   r   r'   r(   s        r   r!   zHTTPHeaderDict.update   s    eT$Z(OO%Ee[__445#kkm "
U!S	" UF#zz| '!#JS	' $ "
U!S	" !,,. 	JCDI	r   )r   
typing.Anyr   rf   returntyping.Self)rg   zdict[str, str])r'   r-   rg   bool)r'   r-   rg   None)rg   r-   )rg   rh   )rg   rj   )r'   r-   rg   z
str | None)rQ   r   r'   r-   rg   zstr | T)r'   r-   rg   r-   )rg   ztuple[str, str]r   )__name__
__module____qualname____doc__r   r   r)   r+   r1   r3   r9   r<   r>   rB   rF   rI   typingoverloadrM   r   rV   rZ   r\   r!   __classcell__)r$   s   @r   r   r   >   s    
 
R!
0;, __1 1__: :", ) __* *__: :", )! __1 1__: :r   r   z?text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8zen-us,en;q=0.5navigate)z
User-AgentAcceptzAccept-LanguagezSec-Fetch-Modec                   |j                  dd       }|r| j                          || d<   | j                         D ]  \  }}|dk(  rd | |<   |dk(  r|	 t        j                  j                  |      d   }|dt        |d      z   | |<   dd	d
}||v s[t        j                  j                  t        j                  j                  |      j                  ||               | |<    y # t        $ r Y w xY w)NzYtdl-Request-Proxyall__noproxy__nor   zhttp://z//socks5hsocks4)socks5socks)scheme)rV   rF   r&   urllibrequest_parse_proxy
ValueErrorr   parse
urlunparseurlparse_replace)proxiesheaders	req_proxy	proxy_key	proxy_urlproxy_schemereplace_schemes          r   clean_proxiesr      s   0$7I" ' d	9%!%GI %~~::9EaH #%.i1N%N	" $!N ~-%+\\%<%<LL)))4==^T`Ea=b&d	"/d   	s   "C**	C65C6c                @    d| v r| d= d| d<   | j                  dd        y )NzYoutubedl-No-CompressionidentityzAccept-EncodingzYtdl-socks-proxy)rV   )r   s    r   clean_headersr      s-    !W,./%/!"KK"D)r   c                $   g }| j                  d      }|D ]2  }|dk(  r	|dk(  r|s|j                          "|j                  |       4 |d   s|r|d   r|j                  dd       |d   dv r|j                  d       dj	                  |      S )N/...r   r_   )r   r   )splitrV   appendinsertjoin)pathoutputsegmentsss       r   remove_dot_segmentsr      s     Fzz#H 8$Y

MM! A;&)a|{"b88Fr   c                B    t         j                  j                  | d      S )z4Escape non-ASCII characters as suggested by RFC 3986s   %/;:@&=+$,!~*'()?#[])r}   r   quote)r   s    r   escape_rfc3986r     s    <<a!899r   c           	        t         j                  j                  |       }|j                  |j                  j                  d      j                  d      t        t        |j                              t        |j                        t        |j                        t        |j                              j                         S )z&Normalize URL as suggested by RFC 3986idnaascii)netlocr   paramsqueryfragment)r}   r   r   r   r   encoderA   r   r   r   r   r   r   geturl)url
url_parseds     r   normalize_urlr     s    &&s+J  ''/66w?/
@Aj//0Z--.
 3 34   fhr   c                R   t         j                  j                  |       }d|v rj|j                  t	        |j
                  dd      z   }t         j                  j                  |d|d   i      ryt         j                  j                  |      ryt        ||j                  xs dd      S )z'Unified proxy selector for all backendsrw   Nz:%shttpru   )r}   r   r   hostnamer   portr~   proxy_bypass_environmentproxy_bypassr	   r|   )r   r   url_componentshostports       r   select_proxyr     s    \\**3/Nw!**\.:M:MtUZ-[[>>228dGDM=RS^^((2!6!6!@&%HHr   )r   r   r   r   )r   r   )
__future__r   rb   collections.abcr   ro   urllib.parser}   urllib.requestTYPE_CHECKINGTypeVarr   _utilsr   r   r   	traversalr	   r   r   r   std_headersr   r   r   r   r   r   rK   r   r   <module>r      s    "      	sA : : #*=ZFT FR #%O' 	 d@**:
	
Ir   