
    /h                         S SK Jr  S SKJr  S SKrSSKJrJrJr  SSK	J	r	   " S S\5      r
 " S	 S
5      r " S S\5      rg)    )PrettyPrinter)UserDictN   )APIKeyNotProvided	HTTPErrorHTTPConnectionError)__version__c                   l   ^  \ rS rSrSrU 4S jrS r\S 5       rS r	SS jr
\SS	S
.S j5       rSrU =r$ )SerpResults
   zKA dictionary-like object that represents the results of a SERP API request.c                L   > [         TU ]  U5        X l        S U l        S U l        g N)super__init__clientrequestresponse)selfdatar   	__class__s      aC:\Users\julio\OneDrive\Documentos\Trabajo\Ideas Frescas\venv\Lib\site-packages\serpapi/client.pyr   SerpResults.__init__   s#        c                 P    [        SSSS9nUR                  U R                  5       $ )N   TO   )indentcompactwidth)r   pprintr   )r   pps     r   __repr__SerpResults.__repr__   s&    !T<))DII&'(r   c                 j    U R                   R                  S5      nU(       a  UR                  S5      $ g)z,The URL of the next page of results, if any.serpapi_pagination	next_linkN)r   get)r   r%   s     r   next_page_urlSerpResults.next_page_url   s1     "YY]]+?@%))+66 r   c                     U R                   (       aZ  SU R                  R                  0nU R                  R                  SU R                   US9n[        R                  X R                  S9$ g)z(Return the next page of results, if any.api_keyGET)pathparamsr   N)r(   r   r+   r   r   from_http_response)r   r.   rs      r   	next_pageSerpResults.next_page    sa       !4!45F##E0B0B6#RA11!KK1HH r   c              #      #    SnU nUR                   (       a9  X!:  a3  UR                  5       nUS-  nUv   UR                   (       a  X!:  a  M1  gggg7f)z'Yield the next page of results, if any.r   r   N)r(   r2   )r   	max_pagescurrent_page_countcurrent_pages       r   yield_pagesSerpResults.yield_pages+   sZ      ((-?-K'113L!# ((-?-K(-K(s   A
AATN)
assert_200r   c                    U(       a   UR                  5         U " UR	                  5       US9n UR
                  U l        Xl        U $ ! [        R                  R                   a  n[        U5      eSnAff = f)zConstruct a SerpResults object from an HTTP response.

Optionally (but default behavior), will raise an exception if the status code is not 200.
This functionality can be disabled by setting `assert_200=False`.
Nr/   )raise_for_statusrequests
exceptionsr   jsonr   r   )clsr1   r:   r   es        r   r0   SerpResults.from_http_response6   si     #""$ !&&(6*ii
 &&00 #l"#s   A A5%A00A5)r   r   r   )i  )__name__
__module____qualname____firstlineno____doc__r   r"   propertyr(   r2   r8   classmethodr0   __static_attributes____classcell__)r   s   @r   r   r   
   sH    U) 7 7	I	 15d  r   r   c                   X    \ rS rSrSrSrSrS\ 3rSS.S jr	\
S	 5       rS
SS.S jrSrg)SerpAPIHTTPL   z7A class that handles the HTTP requests to the SERP API.zhttps://serpapi.comzhttps://serpapi.com/dashboardzSerpApi Python Client, vN)r+   c                D    Xl         [        R                  " 5       U l        g r   )r+   r=   Sessionsession)r   r+   s     r   r   SerpAPIHTTP.__init__S   s     '')r   c                 @    US   c  [        SU R                   35      eg )Nr+   z'Please provide an API key, found here: )r   DASHBOARD_URL)r   r.   s     r   assert_api_keySerpAPIHTTP.assert_api_keyY   s0    )$#94;M;M9OP  %r   TF)rU   r:   c                   SU;  a  U R                   US'   U(       a  U R                  X5        UR                  S5      (       d  U R                  U-   nOUn SU R                  0nU R
                  R                  " SXX8S.UD6n	U(       a   U	R                  5         U	$ U	$ ! [        R                  R                   a  n
[        U
5      eS n
A
ff = f! [        R                  R                   a  n
[        U
5      eS n
A
ff = f)Nr+   httpz
User-Agent)methodurlr.   headers )r+   rU   
startswithBASE_DOMAIN
USER_AGENTrQ   r   r=   r>   ConnectionErrorr   r<   r   )r   rY   r-   r.   rU   r:   kwargsrZ   r[   r1   rA   s              r   r   SerpAPIHTTP.request`   s     F" $F9 - v&&""T)CC	)#T__5G$$ vJPA #""$ q ""22 	)%a((	) &&00 #l"#s0   -B  C  C>C		CC?/C::C?)r+   rQ   )rC   rD   rE   rF   rG   r^   rT   r	   r_   r   staticmethodrU   r   rJ   r\   r   r   rM   rM   L   sH    A'K3M+K=9J"& *   7;u# #r   rM   c                   0    \ rS rSrSrS rS rS rS rSr	g)	SerpAPI   z2A class that handles the HTTP requests to SerpAPI.c                 P    U R                   " SSU0UD6n[        R                  X0S9$ )Nr.   r/   )r'   z/searchr   r   r0   r   r.   extrasr1   s       r   searchSerpAPI.search   s,    LLC&CFC--a-==r   c                     U R                   " U40 UD6nUR                  S0 5      R                  S5      nU R                  " SU4S0 0UD6nUR                  $ )Nsearch_metadataraw_html_filer,   r.   )rk   r'   r   text)r   r.   rj   rk   html_urlr1   s         r   search_htmlSerpAPI.search_html   sT    V.v.::/488ILL>>v>vvr   c                 P    U R                   " SSU0UD6n[        R                  X0S9$ )Nr.   r/   )r,   z	/searchesrh   ri   s       r   search_archiveSerpAPI.search_archive   s,    LLEFEfE--a-==r   c                 P    U R                   " SSU0UD6n[        R                  X0S9$ )Nr.   r/   )r,   z/locations.jsonrh   ri   s       r   locationSerpAPI.location   s,    LLK&KFK--a-==r   r\   N)
rC   rD   rE   rF   rG   rk   rr   ru   rx   rJ   r\   r   r   re   re      s    <>>>r   re   )r    r   collectionsr   r=   r>   r   r   r   r	   r   rM   re   r\   r   r   <module>r{      s;         I I $?( ?D7 7t>k >r   