
    dh                     R    S r SSKJrJrJrJr  SSKJr  SSKJ	r	J
r
   " S S\	5      rg)zWrapper for the Reddit API    )AnyDictListOptional)get_from_dict_or_env)	BaseModelmodel_validatorc                       \ rS rSr% Sr\\S'   \\   \S'   \\   \S'   \\   \S'   \	" SS9\
S	\S
\4S j5       5       rS\S\S\S\S\S
\4S jrS\S\S\S\S\S
\\   4S jrSrg)RedditSearchAPIWrapper	   a+  Wrapper for Reddit API

To use, set the environment variables ``REDDIT_CLIENT_ID``,
``REDDIT_CLIENT_SECRET``, ``REDDIT_USER_AGENT`` to set the client ID,
client secret, and user agent, respectively, as given by Reddit's API.
Alternatively, all three can be supplied as named parameters in the
constructor: ``reddit_client_id``, ``reddit_client_secret``, and
``reddit_user_agent``, respectively.

Example:
    .. code-block:: python

        from langchain_community.utilities import RedditSearchAPIWrapper
        reddit_search = RedditSearchAPIWrapper()
reddit_clientreddit_client_idreddit_client_secretreddit_user_agentbefore)modevaluesreturnc                     [        USS5      nX!S'   [        USS5      nX1S'   [        USS5      nXAS'    SSKnUR                  UUUS
9nXaS'   U$ ! [         a    [        S	5      ef = f)zmValidate that the API ID, secret and user agent exists in environment
and check that praw module is present.
r   REDDIT_CLIENT_IDr   REDDIT_CLIENT_SECRETr   REDDIT_USER_AGENTr   Nz?praw package not found, please install it with pip install praw)	client_idclient_secret
user_agentr   )r   prawImportErrorReddit)clsr   r   r   r   r   r   s          c/var/www/html/shao/venv/lib/python3.13/site-packages/langchain_community/utilities/reddit_search.pyvalidate_environment+RedditSearchAPIWrapper.validate_environment!   s     0&(:
 &6!"3*,B 
 *>%&0')<
 '8"#	 &.( $ 

 #0  	Q 	s   A A&querysorttime_filter	subredditlimitc                 <   U R                  UUUUUS9n[        U5      S:  au  SU S[        U5       S3/nU HK  nUS   c  SOUS   n	SUS	    S
US    SUS    SUS    SUS    SU	 SUS    S3n
UR                  U
5        MM     SR                  U5      $ SU S3$ )z2Search Reddit and return posts as a single string.)r#   r$   r%   r&   r'   r   zSearching r/z found z posts:post_categoryzN/AzPost Title: '
post_titlez'
                    User: post_authorz 
                    Subreddit: post_subredditz!:
                    Text body: 	post_textz
                    Post URL: post_urlz$
                    Post Category: z.
                    Score: 
post_score
z did not find any posts:)resultslenappendjoin)selfr#   r$   r%   r&   r'   r1   outputrcategoryps              r    runRedditSearchAPIWrapper.runF   s
    #ll# + 
 w<!#/	{'#g,w!W XF$%o$6$>5AoDV#AlO#4 5]+, -  !"2 34 5  !+/ 0 }o .$$,: .lO,B0 a   99V$$!),DEE    c                 p   U R                   R                  U5      nUR                  XX5S9nU Vs/ sH  oPM     nn/ n	U Hm  n
U	R                  U
R                  U
R
                  U
R                  U
R                  U
R                  U
R                  U
R                  U
R                  S.5        Mo     U	$ s  snf )zPUse praw to search Reddit and return a list of dictionaries,
one for each post.
)r#   r$   r%   r'   )r,   r)   r*   r-   r/   post_idr.   r+   )r   r&   searchr3   subreddit_name_prefixedr8   titleselftextscoreidurlauthor)r5   r#   r$   r%   r&   r'   subredditObjectsearch_resultsr7   results_object
submissions              r    r1   RedditSearchAPIWrapper.resultsa   s     ,,66yA(// 0 
 &44^!^4(J!!&0&H&H%/%8%8","2"2!+!4!4","2"2)}} *#-#4#4	 )  5s   
B3 N)__name__
__module____qualname____firstlineno____doc__r   __annotations__r   strr	   classmethodr   r!   intr:   r   r1   __static_attributes__rL   r<   r    r   r   	   s       sm#"3-'}$(#!$ !3 !  $!FFF #F25FBEFNQF	F6 #25BENQ	dr<   r   N)rQ   typingr   r   r   r   langchain_core.utilsr   pydanticr   r	   r   rL   r<   r    <module>rZ      s"      , , 5 /qY qr<   