a
    bg	                     @   s~   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eZG dd deZG d	d
 d
eZdS )    N)Path)IteratorUnion)BaseChatLoader)ChatSession)HumanMessagec                       sB   e Zd ZdZeeef dd fddZee	 dddZ
  ZS )	%SingleFileFacebookMessengerChatLoaderzLoad `Facebook Messenger` chat data from a single file.

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

    Npathreturnc                    s&   t    t|tr|nt|| _d S N)super__init__
isinstancer   	file_pathselfr
   	__class__ /var/www/html/cobodadashboardai.evdpl.com/venv/lib/python3.9/site-packages/langchain_community/chat_loaders/facebook_messenger.pyr      s    
z.SingleFileFacebookMessengerChatLoader.__init__r   c                 c   s   t | j}t|}W d   n1 s*0    Y  t|d dd d}g }t|D ]F\}}d|vr|td|d  d	 qT|t	|d d
|d id qTt
|dV  dS )zLazy loads the chat data from the file.

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

        Nmessagesc                 S   s   | d S )NZtimestamp_msr   )xr   r   r   <lambda>"       zASingleFileFacebookMessengerChatLoader.lazy_load.<locals>.<lambda>)keycontentz)Skipping Message No.
                       z( as no content is present in the messageZsenderZsender_name)r   Zadditional_kwargs)r   )openr   jsonloadsorted	enumerateloggerinfoappendr   r   )r   fdataZsorted_datar   indexmr   r   r   	lazy_load   s$    (z/SingleFileFacebookMessengerChatLoader.lazy_load)__name__
__module____qualname____doc__r   r   strr   r   r   r+   __classcell__r   r   r   r   r      s   r   c                       sB   e Zd ZdZeeef dd fddZee	 dddZ
  ZS )	!FolderFacebookMessengerChatLoaderzLoad `Facebook Messenger` chat data from a folder.

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

    Nr	   c                    s&   t    t|trt|n|| _d S r   )r   r   r   r0   r   directory_pathr   r   r   r   r   <   s    
z*FolderFacebookMessengerChatLoader.__init__r   c                 c   s^   | j d }| D ]F}| r| D ]0}|j dkr&t|d}| D ]
}|V  qJq&qdS )zLazy loads the chat data from the folder.

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

        Zinboxz.json)r
   N)r3   iterdiris_dirsuffixlowerr   r+   )r   Z
inbox_pathZ_dir_fileZfile_loaderresultr   r   r   r+   @   s    

z+FolderFacebookMessengerChatLoader.lazy_load)r,   r-   r.   r/   r   r0   r   r   r   r   r+   r1   r   r   r   r   r2   3   s   r2   )r    loggingpathlibr   typingr   r   Zlangchain_core.chat_loadersr   Zlangchain_core.chat_sessionsr   Zlangchain_core.messagesr   	getLogger__file__r$   r   r2   r   r   r   r   <module>   s   
&