
    Ig                     Z    d dl Z d dlmZ d dlZd dlmZ d dlmZ d dlm	Z	  G d de      Z
y)    N)List)Document)	BaseModel)URLc                   ^    e Zd ZU dZdZeed<   	 dedefdZdedee	   fdZ
dedee   fdZy	)
JinaSearchAPIWrapperz&Wrapper around the Jina search engine.zhttps://s.jina.ai/base_urlqueryreturnc           	          | j                  |      }|D cg c]E  }|j                  d      |j                  d      |j                  d      |j                  d      dG }}t        j                  |      S c c}w )zQuery the Jina search engine and return the results as a JSON string.

        Args:
            query: The query to search for.

        Returns: The results as a JSON string.

        )r
   titleurldescriptioncontent)r   linksnippetr   )_search_requestgetjsondumps)selfr
   web_search_resultsitemfinal_resultss        f/var/www/html/answerous/venv/lib/python3.12/site-packages/langchain_community/utilities/jina_search.pyrunzJinaSearchAPIWrapper.run   s     "111> +
  '*88M288I.	
 
 zz-((
s   A
A8c                     | j                  |      }|D cg c]O  }t        |j                  d      |j                  d      |j                  d      |j                  d      d      Q c}S c c}w )zQuery the Jina search engine and return the results as a list of Documents.

        Args:
            query: The query to search for.

        Returns: The results as a list of Documents.

        r   r   r   r   )r   r   r   )page_contentmetadata)r   r   r   )r   r
   resultsr   s       r   download_documentsz'JinaSearchAPIWrapper.download_documents%   sq     &&u-  

  !XXi0!XXg. HHUO#'88M#:

 
	
 

s   AA-c                    ddi}t        t        | j                  |z               }t        j                  ||      }|j
                  st        d|j                         |j                         j	                  dg       S )NAcceptzapplication/json)headerszHTTP error data)	strr   r	   requestsr   ok	Exceptionstatus_coder   )r   r
   r$   r   responses        r   r   z$JinaSearchAPIWrapper._search_request;   sr    (
 #dmme+,-<<W5{{k(*>*>)?@AA}}""62..    N)__name__
__module____qualname____doc__r	   r&   __annotations__r   r   r   r!   dictr    r,   r   r   r   
   sS    0(Hc(2) ) )*
 
X 
,	/S 	/T$Z 	/r,   r   )r   typingr   r'   langchain_core.documentsr   pydanticr   yarlr   r   r3   r,   r   <module>r8      s#       -  :/9 :/r,   