
    dh	                         S SK r S SKrS SKJr  S SKJrJr  S SKJr  S SK	J
r
  S SKJr  \R                  " \5      r " S S\5      r " S	 S
\5      rg)    N)Path)IteratorUnion)BaseChatLoader)ChatSession)HumanMessagec                   V   ^  \ rS rSrSrS\\\4   SS4U 4S jjrS\	\
   4S jrSrU =r$ )	%SingleFileFacebookMessengerChatLoader   zxLoad `Facebook Messenger` chat data from a single file.

Args:
    path (Union[Path, str]): The path to the chat file.

pathreturnNc                 z   > [         TU ]  5         [        U[        5      (       a  Xl        g [        U5      U l        g N)super__init__
isinstancer   	file_pathselfr   	__class__s     k/var/www/html/shao/venv/lib/python3.13/site-packages/langchain_community/chat_loaders/facebook_messenger.pyr   .SingleFileFacebookMessengerChatLoader.__init__   s)    !+D$!7!7T$Z    c           	   #   ~  #    [        U R                  5       n[        R                  " U5      nSSS5        [	        WS   S S9n/ n[        U5       HJ  u  pVSU;  a  [        R                  SUS-    S35        M)  UR                  [        US   S	US
   0S95        ML     [        US9v   g! , (       d  f       N= f7f)zrLazy loads the chat data from the file.

Yields:
    ChatSession: A chat session containing the loaded messages.

Nmessagesc                     U S   $ )Ntimestamp_ms )xs    r   <lambda>ASingleFileFacebookMessengerChatLoader.lazy_load.<locals>.<lambda>"   s	    Q~=Nr   )keycontentz)Skipping Message No.
                       z( as no content is present in the messagesendersender_name)r#   additional_kwargs)r   )openr   jsonloadsorted	enumerateloggerinfoappendr   r   )r   fdatasorted_datar   indexms          r   	lazy_load/SingleFileFacebookMessengerChatLoader.lazy_load   s      $..!Q99Q<D "T*-3NO!+.HE!QYKGK OOiLXqGW<X / 8,,! "!s   B=B,A=B=,
B:6B=)r   )__name__
__module____qualname____firstlineno____doc__r   r   strr   r   r   r5   __static_attributes____classcell__r   s   @r   r
   r
      s=    HU49- H$ H-8K0 - -r   r
   c                   V   ^  \ rS rSrSrS\\\4   SS4U 4S jjrS\	\
   4S jrSrU =r$ )	!FolderFacebookMessengerChatLoader3   zLoad `Facebook Messenger` chat data from a folder.

Args:
    path (Union[str, Path]): The path to the directory
        containing the chat files.

r   r   Nc                 |   > [         TU ]  5         [        U[        5      (       a  [	        U5      U l        g UU l        g r   )r   r   r   r<   r   directory_pathr   s     r   r   *FolderFacebookMessengerChatLoader.__init__<   s-    ,6tS,A,Ad4jtr   c              #   <  #    U R                   S-  nUR                  5        Hu  nUR                  5       (       d  M  UR                  5        HG  nUR                  R	                  5       S:X  d  M#  [        US9nUR                  5        H  nUv   M	     MI     Mw     g7f)ztLazy loads the chat data from the folder.

Yields:
    ChatSession: A chat session containing the loaded messages.

inboxz.json)r   N)rD   iterdiris_dirsuffixlowerr
   r5   )r   
inbox_path_dir_filefile_loaderresults         r   r5   +FolderFacebookMessengerChatLoader.lazy_load@   s}      ((72
&&(D{{}}!\\^E||))+w6&KQV&W&1&;&;&=F"(L '> , )s   6B/B/-B)rD   )r7   r8   r9   r:   r;   r   r<   r   r   r   r   r5   r=   r>   r?   s   @r   rA   rA   3   s=    LU39- L$ L)8K0 ) )r   rA   )r)   loggingpathlibr   typingr   r   langchain_core.chat_loadersr   langchain_core.chat_sessionsr   langchain_core.messagesr   	getLogger__file__r-   r
   rA   r   r   r   <module>rZ      sC       " 6 4 0			8	$#-N #-L) )r   