
    7|h                     b    d dl Z d dlZd dlmZ d dlmZ d dlmZ dede	de	fdZ
 G d	 d
e      Zy)    N)List)Document)
BaseLoadermessagetitlereturnc                     | sy| d   r| d   d   nd}| d   d   d   }t         j                   j                  | d         j                  d	      }| d
| d| d| dS )z
    Combine message information in a readable format ready to be used.
    Args:
        message: Message to be concatenated
        title: Title of the conversation

    Returns:
        Concatenated message
     authorroleunknowncontentpartsr   create_timez%Y-%m-%d %H:%M:%Sz - z on z: z

)datetimefromtimestampstrftime)r   r   sendertextdates        k/var/www/html/test/engine/venv/lib/python3.12/site-packages/langchain_community/document_loaders/chatgpt.pyconcatenate_rowsr   
   s     *1(*;WXv&F9g&q)D**7=+ABKKD WCxtD6D666    c                   4    e Zd ZdZddedefdZdee   fdZ	y)	ChatGPTLoaderz0Load conversations from exported `ChatGPT` data.log_filenum_logsc                      || _         || _        y)zInitialize a class object.

        Args:
            log_file: Path to the log file
            num_logs: Number of logs to load. If 0, load all logs.
        N)r   r   )selfr   r   s      r   __init__zChatGPTLoader.__init__"   s     ! r   r   c                 "   t        | j                  d      5 }| j                  r"t        j                  |      d | j                   nt        j                  |      }d d d        g }D ]  }|d   }|d   }dj                  t        |      D cg c]-  \  }}|dk(  r||   d   d   d	   d
k(  st        ||   d   |      / c}}      }	dt        | j                        i}
|j                  t        |	|
              |S # 1 sw Y   xY wc c}}w )Nutf8)encodingr   mappingr
   r   r   r   r   systemsource)page_contentmetadata)openr   r   jsonloadjoin	enumerater   strappendr   )r   fdata	documentsdr   messagesidxkeyr   r(   s              r   r+   zChatGPTLoader.load,   s   $--&1 	TQ48MM499Q<$--0tyyQR|D	T 	 	MAgJE|H77 %.h$7 Sq$SM)4X>vF(R	 %Xc]9%=uE	D !#dmm"45HX4(KL	M  )	T 	Ts   AC?2D?DN))
__name__
__module____qualname____doc__r.   intr    r   r   r+    r   r   r   r      s(    :! ! !d8n r   r   )r   r*   typingr   langchain_core.documentsr   )langchain_community.document_loaders.baser   dictr.   r   r   r=   r   r   <module>rB      s:       - @7d 73 73 7*"J "r   