
    Dg\!                     `    d dl Z d dlmZ d dlmZ d dlmZ d dlmZm	Z	  G d d          Z
e
ZdS )    N)settings)FakeUserAgentError)logger)load	str_typesc                   l    e Zd Zg dg dddg dd e            fdZddZd	 Zd
 Z fdZe	d             Z
e	d             Ze	d             Ze	d             Ze	d             Ze	d             Ze	d             Ze	d             Ze	d             Ze	d             Ze	d             Ze	d             Z xZS )FakeUserAgent)chromeedgefirefoxsafari)windowsmacoslinuxandroidiosg        )pcmobiletabletz}Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36 Edg/122.0.0.0c                    t          |t          t          f          s
J d            t          |t                    r|g}|| _        t          |t          t          f          s
J d            t          |t                    r|g}g | _        |D ]U}|t
          j        v r+| j                            t
          j        |                    ;| j                            |           Vt          |t          t          f          s
J d            t          |t                    rt          |          }|| _        t          |t          t          f          s
J d            t          |t                    rt          |          }|| _        t          |t          t          f          s
J d            t          |t                    r|g}|| _        t          |t                    s
J d            || _        t          |t          t          t           f          s
J d            |r%d |D             }	t#          |	          s
J d            t          |          | _        t'                      | _        d S )	Nzbrowsers must be list or stringzOS must be list or stringz-Minimum usage percentage must be float or intz$Minimum version must be float or intz platforms must be list or stringzfallback must be stringz7safe_attrs must be list\tuple\set of strings or unicodec                 8    g | ]}t          |t                    S  )
isinstancer   ).0attrs     H/var/www/sysmax/venv/lib/python3.11/site-packages/fake_useragent/fake.py
<listcomp>z*FakeUserAgent.__init__.<locals>.<listcomp>D   s"    #W#W#WDJtY$?$?#W#W#W    )r   liststrbrowsersosr   OS_REPLACEMENTSextendappendfloatintmin_percentagemin_version	platformsfallbacksettupleall
safe_attrsr   data_browsers)
selfr!   r"   r)   r(   r*   r+   r/   os_namestr_types_safe_attrss
             r   __init__zFakeUserAgent.__init__
   s    (T3K00SS2SSSSh$$ 	" zH "tSk**GG,GGGGb# 	B 	( 	(G(222x7@AAAAw''''UCL
 
 	; 	;:	; 	; 	; nc** 	3">22N,%
 
 	2 	21	2 	2 	2 k3'' 	-,,K&)dC[11UU3UUUUi%% 	$"I"(C((CC*CCCC sE*
 
 	G 	GF	G 	G 	G  	K#W#WJ#W#W#W $  K KJK K K j// "VVr   Nc                      t          t           fd j                            }r t          t          fd|                    }|S )Nc                     | d         j         v o?| d         j        v o0| d         j        v o!| d         j        k    o| d         j        k    S )Nbrowserr"   typeversionpercent)r!   r"   r*   r)   r(   )xr1   s    r   <lambda>z2FakeUserAgent._filter_useragents.<locals>.<lambda>T   sg    !I,$-7 8dGtw&8fI/8 iLD$448 iLD$77	 r   c                     | d         k    S )Nr7   r   )r;   requests    r   r<   z2FakeUserAgent._filter_useragents.<locals>.<lambda>_   s    9!8 r   )r   filterr0   )r1   r>   filtered_useragentss   `` r   _filter_useragentsz FakeUserAgent._filter_useragentsP   sw    "8 8 8 8
 " 	
 	
  	"&8888:MNN# # #"r   c                    	 t           j                                        D ]\  }}|                    ||          }|                                }t           j                            ||          }|dk    r|                                 }n|                     |          }t          j	        |          S # t          t          f$ rA | j        t          d|           t          j        d| d           | j        ddddd	cY S w xY w)
Nrandomr>   'Error occurred during getting browser: #, but was suppressed with fallback.zChrome 122.0 Win10r
   g     ^@win10)	useragentsystemr7   r9   r"   )r   REPLACEMENTSitemsreplacelower	SHORTCUTSgetrA   rC   choiceKeyError
IndexErrorr+   r   r   warning)r1   r>   valuereplacementfiltered_browserss        r   
getBrowserzFakeUserAgent.getBrowserf   sO   (	&.&;&A&A&C&C > >"{!//%==mmooG(,,Wg>>G(""
 %)$;$;$=$=!! %)$;$;G$;$L$L! =!2333*% 	 	 	}$(GgGG   8g 8 8 8   "&2'$!    	s   B2B5 5ADDc                 ,    |                      |          S N__getattr__)r1   r   s     r   __getitem__zFakeUserAgent.__getitem__   s    %%%r   c                    || j         v r(t          t          |                               |          S 	 t          j                                        D ]\  }}|                    ||          }|                                }t          j	        
                    ||          }|dk    r|                                 }n|                     |          }t          j        |          
                    d          S # t          t          f$ r; | j        t#          d|           t%          j        d| d           | j        cY S w xY w)NrC   rD   rH   rE   rF   )r/   super	UserAgent__getattribute__r   rJ   rK   rL   rM   rN   rO   rA   rC   rP   rQ   rR   r+   r   r   rS   )r1   r   rT   rU   rV   	__class__s        r   r[   zFakeUserAgent.__getattr__   sm   4?""D))::4@@@"	%&.&;&A&A&C&C 8 8"{||E;77::<<D%))$55Dx
 %)$;$;$=$=!! %)$;$;D$;$I$I! =!23377DDD*% 	% 	% 	%}$(DdDD   8d 8 8 8  
 }$$$	%s   CC: :A	EEc                 ,    |                      d          S Nr
   rZ   r1   s    r   r
   zFakeUserAgent.chrome       )))r   c                     | j         S rY   )r
   rd   s    r   googlechromezFakeUserAgent.googlechrome   s
    {r   c                 ,    |                      d          S Nr   rZ   rd   s    r   r   zFakeUserAgent.edge   s    '''r   c                 ,    |                      d          S Nr   rZ   rd   s    r   r   zFakeUserAgent.firefox   s    	***r   c                     | j         S rY   )r   rd   s    r   ffzFakeUserAgent.ff   s
    |r   c                 ,    |                      d          S Nr   rZ   rd   s    r   r   zFakeUserAgent.safari   re   r   c                 ,    |                      d          S NrC   rZ   rd   s    r   rC   zFakeUserAgent.random   re   r   c                 ,    |                      d          S rk   rW   rd   s    r   
getFirefoxzFakeUserAgent.getFirefox   s    y)))r   c                 ,    |                      d          S rc   rs   rd   s    r   	getChromezFakeUserAgent.getChrome       x(((r   c                 ,    |                      d          S ri   rs   rd   s    r   getEdgezFakeUserAgent.getEdge   s    v&&&r   c                 ,    |                      d          S ro   rs   rd   s    r   	getSafarizFakeUserAgent.getSafari   rw   r   c                 ,    |                      d          S rq   rs   rd   s    r   	getRandomzFakeUserAgent.getRandom   rw   r   rY   )__name__
__module____qualname__r-   r4   rA   rW   r\   r[   propertyr
   rg   r   r   rm   r   rC   rt   rv   ry   r{   r}   __classcell__)ra   s   @r   r	   r	   	   s        988:::,,,; 577B$ B$ B$ B$L# # # #,) ) )Z& & &
&% &% &% &% &%P * * X*   X ( ( X( + + X+   X * * X* * * X* * * X* ) ) X) ' ' X' ) ) X) ) ) X) ) ) ) )r   r	   )rC   fake_useragentr   fake_useragent.errorsr   fake_useragent.logr   fake_useragent.utilsr   r   r	   r_   r   r   r   <module>r      s     # # # # # # 4 4 4 4 4 4 % % % % % % 0 0 0 0 0 0 0 0f) f) f) f) f) f) f) f)T 			r   