
    dh                        S SK Jr  S SKrS SKJrJrJrJrJrJ	r	J
r
Jr  S SKJr  S SKJr  \(       a  S SKrS	S jr " S S\5      rg)
    )annotationsN)TYPE_CHECKINGAnyDictIterableIteratorListOptionalSequenceDocument)
BaseLoaderc                 B     SS K n U $ ! [         a    [        S5      ef = f)Nr   zOMastodon.py package not found, please install it with `pip install Mastodon.py`)mastodonImportError)r   s    e/var/www/html/shao/venv/lib/python3.13/site-packages/langchain_community/document_loaders/mastodon.py_dependable_mastodon_importr      s4    
 O  
?
 	

s    c                  `    \ rS rSrSr    S         S	S jjrS
S jr      SS jrSrg)MastodonTootsLoader"   zLoad the `Mastodon` 'toots'.Nc                    [        5       nU=(       d    [        R                  R                  S5      nUR                  " XES9U l        Xl        X l        X0l        g)a0  Instantiate Mastodon toots loader.

Args:
    mastodon_accounts: The list of Mastodon accounts to query.
    number_toots: How many toots to pull for each account. Defaults to 100.
    exclude_replies: Whether to exclude reply toots from the load.
        Defaults to False.
    access_token: An access token if toots are loaded as a Mastodon app. Can
        also be specified via the environment variables "MASTODON_ACCESS_TOKEN".
    api_base_url: A Mastodon API base URL to talk to, if not using the default.
        Defaults to "https://mastodon.social".
MASTODON_ACCESS_TOKEN)access_tokenapi_base_urlN)	r   osenvirongetMastodonapimastodon_accountsnumber_tootsexclude_replies)selfr    r!   r"   r   r   r   s          r   __init__MastodonTootsLoader.__init__%   sM    ( /0#Nrzz~~6M'N$$%
 "3(.    c           
   #    #    U R                    Hs  nU R                  R                  U5      nU R                  R                  UR                  SSU R
                  SU R                  S9nU R                  X25       Sh  vN   Mu     g N	7f)zLoad toots into documents.FT)
only_mediapinnedr"   exclude_reblogslimitN)r    r   account_lookupaccount_statusesidr"   r!   _format_toots)r#   accountusertootss       r   	lazy_loadMastodonTootsLoader.lazy_loadB   s     --G88**73DHH--  $ 4 4 $'' . E ))%666 . 7s   A;B	=B>
B	c              #  X   #    U H   nUS   UUS   SLS.n[        US   US9v   M"     g7f)z\Format toots into documents.

Adding user info, and selected toot fields into the metadata.

created_atin_reply_to_idN)r6   	user_infois_replycontent)page_contentmetadatar   )r#   r2   r8   tootr<   s        r   r/   !MastodonTootsLoader._format_tootsP   sJ      D"<0& !12$>H
 !)_!  s   (*)r   r"   r    r!   )d   FNzhttps://mastodon.social)
r    zSequence[str]r!   zOptional[int]r"   boolr   zOptional[str]r   str)returnzIterator[Document])r2   zList[Dict[str, Any]]r8   dictrB   zIterable[Document])	__name__
__module____qualname____firstlineno____doc__r$   r3   r/   __static_attributes__ r&   r   r   r   "   sj    &
 '* %&*5/(/ $/ 	/
 $/ /:7)6:	r&   r   )rB   r   )
__future__r   r   typingr   r   r   r   r   r	   r
   r   langchain_core.documentsr   )langchain_community.document_loaders.baser   r   r   r   rJ   r&   r   <module>rO      s9    " 		 	 	 . @>* >r&   