
    @j(                        g 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
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        e          Z G d de          Z G d d          Zd Zdd	Zej         G d
 d                      Zej         G d de                      Z G d de          Zd Z  e             Z! G d de
j"        j#                  Z$ G d dej%        j&                  Z' G d de(          Z) G d de)          Z* G d d          Z+ej,        -                    e e          \  Z.Z/dS ))DeprecatedFeatureWarningItemIntWithGranularityScraperExceptionEntityUnavailableScraper    Nc                       e Zd ZdS )r   N__name__
__module____qualname__     T/home/ubuntu/.hermes/hermes-agent/venv/lib/python3.11/site-packages/snscrape/base.pyr   r              r   r   c                       e Zd Zd Zd ZdS )_DeprecatedPropertyc                 0    || _         || _        || _        d S N)namereplreplStr)selfr   r   r   s       r   __init__z_DeprecatedProperty.__init__   s    $)$)$,,,r   c                     || S t          j        | j         d| j         dt          d           |                     |          S )Nz is deprecated, use z instead   )
stacklevel)warningswarnr   r   r   r   )r   objobjTypes      r   __get__z_DeprecatedProperty.__get__#   sJ    [
;
-49HH$,HHHJbqrssss	3r   N)r   r   r   r   r"   r   r   r   r   r      s2          
    r   r   c                     t          | t          j        t          j        f          r|                                 S t          | t          j                  r| j        S t          dt          |            d          )zA JSON serialiser that converts datetime.datetime and datetime.date objects to ISO-8601 strings and enum.Enum objects to their values.zObject of type z is not JSON serializable)	
isinstancedatetimedate	isoformatenumEnumvalue	TypeErrortype)r    s    r   _json_serialise_datetime_enumr-   *   sj     sX&677 	sDI 	G499GGGHHHr   Fc                    t          | t                    st          j        |           r&i }t	          |           j         dt	          |           j         |d<   t          j        |           D ]V}|j        dk    sJ |j        	                    d          r*t          t          | |j                            ||j        <   Wt          |           D ]z}t          t          t	          |           |d           t          t          f          r@|dk    sJ |	                    d          rXt          t          | |                    ||<   {nt          | t          t           f          r$ t	          |           fd| D                       S t          | t"                    r!fd|                                 D             }n7t          | t&                    rfd| D             S t)          j        |           S t!          |                                          D ]\  }}t          |t,                    r5t/          |          ||<   | d|vsJ d	| d            |j        || d<   OrRt          |t.                    r=t3          |          d
k    r*| d|vsJ d| d            t5          |          || d<   |S )N._type_forBuggyIntParserc              3   :   K   | ]}t          |           V  dS )r2   N_json_dataclass_to_dict).0xr3   s     r   	<genexpr>z*_json_dataclass_to_dict.<locals>.<genexpr>E   s3      bbYZ*1BSTTTbbbbbbr   c                 X    i | ]&\  }}t          |           t          |           'S r2   r5   )r7   kvr3   s      r   
<dictcomp>z+_json_dataclass_to_dict.<locals>.<dictcomp>G   so      	g  	g  	g  SW  ST  VW	 8I	J	J	JLcde  |M  MN  MN  MN  	g  	g  	gr   c                 2    h | ]}t          |           S r;   r5   )r7   r=   r3   s     r   	<setcomp>z*_json_dataclass_to_dict.<locals>.<setcomp>I   s)    	Y	Y	YPQ
!!9J
K
K
K	Y	Y	Yr   z.granularityzGranularity collision on l          z.strzBuggy int collision on )r$   _JSONDataclassdataclassesis_dataclassr,   r   r   fieldsr   
startswithr6   getattrdirpropertyr   tuplelistdictitemssetcopydeepcopyr   intgranularityabsstr)r    r3   outfieldr<   keyr*   s    `     r   r6   r6   4   s2   sN## {'?'D'D 
#II(??499+=??#g,!#&& n ne
*



jC   ,WS%*-E-E[lmmm3uz??s88 ] ]acAt,,x9L.MNN ]<<<<||C $WS!__J[\\\CF] udm$$ 	cbbbb^abbb	b	bbd  	g  	g  	g  	g  [^  [d  [d  [f  [f  	g  	g  	g##c 	Y	Y	Y	YUX	Y	Y	YY	s				$$ " "ZS%)** "%jj3s8


c
)
)
)+Xs+X+X+X
)
)
)$03# "Zs33 "E

U8J8J,,,c
!
!
!#FS#F#F#F
!
!
!5zz3#|||r   c                       e Zd ZdZddZdS )rA   z3A base class for dataclasses for conversion to JSONFc                 *   t          j                    5  t          j        dt                     t	          | |          }ddd           n# 1 swxY w Y   d|vs
J d            t
          j        j        |d<   t          j	        |t                    S )a`  
		Convert the object to a JSON string

		If forBuggyIntParser is True, emit JSON for parsers that can't correctly decode integers exceeding the limits of double-precision IEEE 754 floating point numbers.
		Specifically, each field x containing an integer with a magnitude above 2**53 results in an additional field x.str with the value as a string.
		ignore)actioncategoryr2   N	_snscrapezMetadata collision on _snscrape)default)r   catch_warningsfilterwarningsr   r6   snscrapeversion__version__jsondumpsr-   )r   r3   rT   s      r   rc   z_JSONDataclass.json\   s        N NH9QRRRR	 ;L	M	M	M3N N N N N N N N N N N N N N N 
C			!B			%1#k	C#@	A	A	AAs   -AAANF)r   r   r   __doc__rc   r   r   r   rA   rA   X   s4        ::B B B B B Br   rA   c                   2    e Zd ZdZej        d             ZdS )r   zAn abstract base class for an item returned by the scraper.

	An item can really be anything. The string representation should be useful for the CLI output (e.g. a direct URL for the item).
	c                     d S r   r   r   s    r   __str__zItem.__str__s       $r   N)r   r   r   rf   abcabstractmethodrj   r   r   r   r   r   l   s=         
     r   r   c                   (     e Zd ZdZ fdZd Z xZS )r   zA number with an associated granularity

	For example, an IntWithGranularity(42000, 1000) represents a number on the order of 42000 with two significant digits, i.e. something counted with a granularity of 1000.
	c                 R     t                      j        | |g|R i |}||_        |S r   )super__new__rQ   )clsr*   rQ   argskwargsr    	__class__s         r   rq   zIntWithGranularity.__new__~   s6    U4T444V44##/	*r   c                 <    t           t          |           | j        ffS r   )r   rP   rQ   ri   s    r   
__reduce__zIntWithGranularity.__reduce__   s    
s4yy$*:;	<<r   )r   r   r   rf   rq   rw   __classcell__ru   s   @r   r   r   x   sQ         
    
= = = = = = =r   r   c            
         d } t           | t          j        ddd                                          t          j        ddd                                          dd	t          j                                                                                            }|t          j        d
d          z  }t          |d          }d| dS )Nc                 *    || z
  || z
  z  ||z
  z  |z   S r   r   )a1b1a2b2ns        r   lerpz _random_user_agent.<locals>.lerp   s#    
b&R"W	b	)B	..r   i        i  	      o         e   zXMozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/z.0.0.0 Safari/537.36)rP   r%   r&   	toordinaltodayrandomrandintmax)r   ra   s     r   _random_user_agentr      s    / / /ttHM$1--77998=qRT;U;U;_;_;a;acfhkmumz  nA  nA  nC  nC  nM  nM  nO  nO  P  P  Q  QFN2q!!!w 	Acj  	A  	A  	A  Ar   c                        e Zd Z fdZ xZS )_HTTPSAdapterc           	      @    t                      j        |i | 	 t          | j        j        d         _        d S # t          t          f$ rR}t          	                    dt          |          j         dt          |          j         d|           Y d }~d S d }~ww xY w)Nhttpsz%Could not install TLS cipher logger: r/    )rp   init_poolmanager_HTTPSConnectionpoolmanagerpool_classes_by_schemeConnectionClsAttributeErrorKeyError_loggerdebugr,   r   r   )r   rs   rt   eru   s       r   r   z_HTTPSAdapter.init_poolmanager   s    %''D+F+++hDT4*73AAA
(	# h h h
==fa9KffdSTggN^ffabffggggggggghs   : BABB)r   r   r   r   rx   ry   s   @r   r   r      sA        h h h h h h h h hr   r   c                        e Zd Z fdZ xZS )r   c                 R    t                      j        |i |}	 t                              d| j                                                    n# t          $ r Y nw xY w	 t                              d| j                                                    n# t          $ r Y nw xY w|S )NzConnected to: zConnection cipher: )rp   connectr   r   sockgetpeernamer   cipher)r   rs   rt   connru   s       r   r   z_HTTPSConnection.connect   s    	$	)&	)	)$
==;$)"7"7"9"9;;<<<<	   4
==;ty'7'7'9'9;;<<<<	   4 
+s#   4A 
AA"4B 
B$#B$)r   r   r   r   rx   ry   s   @r   r   r      s8                r   r   c                       e Zd ZdS )r   Nr
   r   r   r   r   r      r   r   r   c                       e Zd ZdZdS )r   zdThe target entity of the scrape is unavailable, possibly because it does not exist or was suspended.N)r   r   r   rf   r   r   r   r   r      s        kkkkr   r   c                       e Zd ZdZdZddddZej        d             Zd Z	e
j        d             ZddZd Zd Zed             Zed             Zed             ZdS )r   z%An abstract base class for a scraper.Nr   )retriesproxiesc                    || _         || _        t          j                    | _        | j                            dt                                 d S )Nzhttps://)_retries_proxiesrequestsSession_sessionmountr   )r   r   r   s      r   r   zScraper.__init__   sB    $-$-"$$$--j-//22222r   c                     dS )zIterator yielding Items.Nr   ri   s    r   	get_itemszScraper.get_items   s	     $r   c                     dS )zGet the entity behind the scraper, if any.

		This is the method implemented by subclasses for doing the actual retrieval/entity object creation. For accessing the scraper's entity, use the entity property.
		Nr   ri   s    r   _get_entityzScraper._get_entity   s	     
r   c                 *    |                                  S r   )r   ri   s    r   entityzScraper.entity   s    					r   
   Tc
                    |si }d|vr
t           |d<   |	p| j        pi }	g }
t          | j        dz             D ]e}| j                            t          j        |||||                    }| j                            |j	        |	d d d           }t                              d|j	                    t                              d|           |rt                              d|           |rt                              d|           	  | j        j        |f||d|}|j        rd	|j	         d
nd}t                              d|j	         | d|j                    t                              d|j                   |j        rt#          |j                  D ]u\  }}t                              d| d|j        j	         d|j         d|j                            d           d
	           t                              d|j                   v|$ ||          \  }}|
                    |           nd\  }}|rd| nd}|r(t                              |j	         d|            |c S || j        k     rd}t*          j        }nd}t*          j        }t                              |d|j	         | |            n# t          j        j        $ r|}|| j        k     rd}t*          j        }nd}t*          j        }t                              |d|j	         d||            |
                    t7          |                     Y d }~nd }~ww xY w|| j        k     r;dd|z  z  }t                              d|dd           t9          j        |           g| j        dz    d|j	         d}t                              |           t                              dd                    |
                      tA          |          ) Nz
User-Agentr   )paramsdataheaderszRetrieving z... with headers: z... with data: z... with environmentSettings: )allow_redirectstimeoutz (redirected to ) z
Retrieved z: z... with response headers: z... request z (Location: Locationz... ... with response headers: )TNz retrieved successfullyz
, retryingzError retrieving g      ?r   zWaiting z.0fz secondsz requests to z failed, giving up.zErrors: z, )"_DEFAULT_USER_AGENTr   ranger   r   prepare_requestr   Requestmerge_environment_settingsurlr   infor   sendhistorystatus_coder   	enumeraterequestgetappendloggingINFOERRORlog
exceptionsRequestExceptionreprtimesleepfataljoinr   RuntimeError)r   methodr   r   r   r   r   responseOkCallbackallowRedirectsr   errorsattemptreqenvironmentSettingsr
redirectediredirectsuccessmsgretryinglevelexc	sleepTimes                           r   _requestzScraper._request   s   	 7  .7<*t}*'&t}q()) 7 7g		&	&x'7f]amt'u'u'u	v	v3AA#'7TXZ^`dee
<<'cg''(((
==1g11222
 .MM,D,,--- LMMJ3FJJKKK$F3k.GkkWjkkA 12	A,AE,,,,rJLLDcgDzDDQ]DDEEEMM=	==>>>y L!!),, L LHmm  F1  F  F(8(<  F  F@T  F  Fbjbrbvbv  xB  cC  cC  F  F  F  G  G  GmmJh6FJJKKKK%&&q))\Wc]]3 \Wc
#*s***C 
F]]cg;;c;;<<<XXX$-hleehme[[DCGDSD(DDEEEEE 

.   X\UUX]UKKG37GGcGXGGHHH
MM$s))F aj ILL3I3333444JyMA	H	HCG	H	H	H3
==
==/DIIf--//000	#		s   KMA2MMc                 $     | j         dg|R i |S )NGETr   r   rs   rt   s      r   _getzScraper._get  s$    	u	.t	.	.	.v	.	..r   c                 $     | j         dg|R i |S )NPOSTr   r   s      r   _postzScraper._post  s$    	v	/	/	/	/	/	//r   c                     d S r   r   )rr   	subparsers     r   _cli_setup_parserzScraper._cli_setup_parser  rk   r   c                 ,    |                      |          S r   )_cli_construct)rr   rs   s     r   _cli_from_argszScraper._cli_from_args  s    			D	!	!!r   c                 $     | |i |d|j         iS )Nr   )r   )rr   argparseArgsrs   rt   s       r   r   zScraper._cli_construct   s%    	d	=f	=	=(<	=	=	==r   )NNNr   NTN)r   r   r   rf   r   r   rl   rm   r   r   	functoolscached_propertyr   r   r   r   classmethodr   r   r   r   r   r   r   r      s       ,,!"d 3 3 3 3 3   
     ?1 ?1 ?1 ?1B/ / /0 0 0   + " " +" > > +> > >r   r   )Entityre   )0__all__rl   rN   rB   r%   r(   r   rc   r   r   r   requests.adapterssnscrape.utilsr`   snscrape.versionurllib3.connectionurllib3r   r   	getLoggerr   r   FutureWarningr   r   r-   r6   	dataclassrA   r   rP   r   r   r   adaptersHTTPAdapterr   
connectionHTTPSConnectionr   	Exceptionr   r   r   utilsmodule_deprecation_helper__getattr____dir__r   r   r   <module>r     s$  
x
x
x 


                                  '
H
%
%    }   
 
 
 
 
 
 
 
I I I! ! ! !H B B B B B B B B&     >   = = = = = = = =A A A )(** h h h h hH%1 h h h    w)9   "    y   l l l l l( l l ln> n> n> n> n> n> n> n>b  ~??RV?WW WWWr   