
    Ng	                         d dl Z d dlZd dlmZ d dlmZmZ d dlmZ d dl	m
Z
 d dlmZ  ej        e          Z G d de          Z G d	 d
e          ZdS )    N)Path)IteratorUnion)BaseChatLoader)ChatSession)HumanMessagec                   T     e Zd ZdZdeeef         ddf fdZdee	         fdZ
 xZS )%SingleFileFacebookMessengerChatLoaderzLoad `Facebook Messenger` chat data from a single file.

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

    pathreturnNc                     t                                                       t          |t                    r|nt          |          | _        d S N)super__init__
isinstancer   	file_pathselfr   	__class__s     o/var/www/html/ai-engine/env/lib/python3.11/site-packages/langchain_community/chat_loaders/facebook_messenger.pyr   z.SingleFileFacebookMessengerChatLoader.__init__   s=    !+D$!7!7GT$ZZ    c           	   #     K   t          | j                  5 }t          j        |          }ddd           n# 1 swxY w Y   t	          |d         d           }g }t          |          D ]]\  }}d|vr"t                              d|dz    d           +|                    t          |d         d	|d
         i                     ^t          |          V  dS )zLazy loads the chat data from the file.

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

        Nmessagesc                     | d         S )Ntimestamp_ms )xs    r   <lambda>zASingleFileFacebookMessengerChatLoader.lazy_load.<locals>.<lambda>"   s    Q~=N r   )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_loadz/SingleFileFacebookMessengerChatLoader.lazy_load   sV      $.!! 	 Q9Q<<D	  	  	  	  	  	  	  	  	  	  	  	  	  	  	 T*-3N3NOOO!+.. 	 	HE1!!I1WI I I   OOiLXqGW<X     
 8,,,,,,,,s   8<<)__name__
__module____qualname____doc__r   r   strr   r   r   r2   __classcell__r   s   @r   r
   r
      s         HU49- H$ H H H H H H-8K0 - - - - - - - -r   r
   c                   T     e Zd ZdZdeeef         ddf fdZdee	         fdZ
 xZS )!FolderFacebookMessengerChatLoaderzLoad `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                                                       t          |t                    rt	          |          n|| _        d S r   )r   r   r   r7   r   directory_pathr   s     r   r   z*FolderFacebookMessengerChatLoader.__init__<   s@    ,6tS,A,AKd4jjjtr   c              #   2  K   | j         dz  }|                                D ]u}|                                r_|                                D ]J}|j                                        dk    r+t          |          }|                                D ]}|V  KvdS )zLazy loads the chat data from the folder.

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

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