a
    xd                     @   sD  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e j	dkr`d dl
mZ nd dlZd dlmZ d dlmZ d dlmZ d dlmZ zd dlmZ W n   Y n0 efZeZeejjZdev Zdd
dZ dddZ!d ddZ"dd Z#dd Z$dd Z%dd Z&d!ddZ'd"ddZ(d dl)m*Z* d dl+m,Z, dS )#    N)   
   )URLError)
quote_plus)request)logger)resource_filenamecontextTc              
   C   s&  d}t | }|d7 }ztrr|s*t }nd }tt j|tj	|d}|
 W  d    W S 1 sf0    Y  n@tt j|tj	d}|
 W  d    W S 1 s0    Y  W q ttfy } zLtjd| |d |tjk rtdntdtj ttj W Y d }~qd }~0 0 qd S )	Nr      )timeoutr	   )r   z!Error occurred during fetching %sexc_infoz!Maximum amount of retries reachedzSleeping for %s seconds)r   Requesturlopen_has_ssl_contextssl_create_unverified_context
contextlibclosingurlopensettingsZHTTP_TIMEOUTreadr   OSErrorr   debugZHTTP_RETRIESFakeUserAgentErrorZ
HTTP_DELAYtimesleep)url
verify_sslattemptZ
requestObjr	   responseexc r!   L/var/www/html/Ranjet/env/lib/python3.9/site-packages/fake_useragent/utils.pyget#   sL    

*,
r#   c              	   C   s   t tjjt| d|d}z|d}W n ttfy>   Y n0 |dd }|dd }d}t	
||t	j}g }|D ]:} d	| d v rqx|| d t|tjkrx qqx|std
j| d|S )z:
    Retrieve browser user agent strings from website
    )browserr   utf-8z<div id='liste'>r
   z</div>r   z<a href=\'/.*?>(.+?)</a>Zmorez:No browser user-agent strings found for browser: {browser})r#   r   ZBROWSER_BASE_PAGEformatr   decodeUnicodeDecodeErrorAttributeErrorsplitrefinditerUNICODEgrouplowerappendlenZBROWSERS_COUNT_LIMITr   )r$   r   htmlpatternZbrowsers_iterbrowsersr!   r!   r"   get_browser_user_agents_onlineS   s4    r6   c                 C   s  i }d}|r z>t dd }| D ]}|t| q,d}|}W n ty } zi }t	j
d|d z`ttdd6}	|	 }| D ]}|t| qW d    n1 s0    Y  d}|}W n8 ty }
 zi }t	j
d	|
d W Y d }
~
n
d }
~
0 0 W Y d }~n
d }~0 0 |rtz,| D ]"}|  }t||d
||< q,W n tyn   tdY n0 |}|std|t|tstd||S )NTzfake_useragent.datazbrowsers.jsonFzuUnable to find local data/json file or could not parse the contents using importlib-resources. Try pkg-resource next.r   fake_useragentzdata/browsers.jsonzvCould not find local data/json file or could not parse the contents using pkg-resource. Fallback to external resource.r%   z)Could not load data from external websitezData dictionary is emptyzData is not dictionary )ilrfilesjoinpath	read_text
splitlinesupdatejsonloads	Exceptionr   warningopenr   r   r0   stripr6   r   
isinstancedict)r5   use_local_filer   dataZfetch_onlineZ
json_lineslineretr    fileZexc2Zbrowser_namer!   r!   r"   loadz   s`    02

rK   c                 C   sZ   t | ddd8}t|}t|ts.|d}|| W d    n1 sL0    Y  d S )Nr&   w)encodingmode)rB   r>   dumpsrD   textr(   write)pathrG   fpZdumpedr!   r!   r"   rQ      s
    


rQ   c                 C   s>   t | dd}t| W  d    S 1 s00    Y  d S )Nr&   )rM   )rB   r>   r?   r   )rR   rS   r!   r!   r"   r      s    r   c                 C   s   t j| S N)osrR   isfilerR   r!   r!   r"   exist   s    rX   c                 C   s   t | rt|  d S rT   )rX   rU   removerW   r!   r!   r"   rm   s    rZ   c                 C   s    t |  t| t|d|d d S )NF)rF   r   )rZ   rQ   rK   
cache_pathr5   r   r!   r!   r"   r=      s    r=   c                 C   s   t | st| ||d t| S )Nr%   )rX   r=   r   r[   r!   r!   r"   load_cached   s    r]   )r   )r   )T)T)TT)T)T)-sysr   inspectior>   rU   r,   r   r   version_infoimportlib.resources	resourcesr8   Zimportlib_resourcesurllib.errorr   urllib.parser   urllibr   Zfake_useragent.logr   pkg_resourcesr   strZ	str_typesrP   getfullargspecr   
kwonlyargsZurlopen_argsr   r#   r6   rK   rQ   r   rX   rZ   r=   r]   r7   r   Zfake_useragent.errorsr   r!   r!   r!   r"   <module>   sD   

0
'
<


