[docs]classSingleFileFacebookMessengerChatLoader(BaseChatLoader):"""Load `Facebook Messenger` chat data from a single file. Args: path (Union[Path, str]): The path to the chat file. """
[docs]deflazy_load(self)->Iterator[ChatSession]:"""Lazy loads the chat data from the file. Yields: ChatSession: A chat session containing the loaded messages. """withopen(self.file_path)asf:data=json.load(f)sorted_data=sorted(data["messages"],key=lambdax:x["timestamp_ms"])messages=[]forindex,minenumerate(sorted_data):if"content"notinm:logger.info(f"""Skipping Message No.{index+1} as no content is present in the message""")continuemessages.append(HumanMessage(content=m["content"],additional_kwargs={"sender":m["sender_name"]}))yieldChatSession(messages=messages)
[docs]classFolderFacebookMessengerChatLoader(BaseChatLoader):"""Load `Facebook Messenger` chat data from a folder. Args: path (Union[str, Path]): The path to the directory containing the chat files. """
[docs]deflazy_load(self)->Iterator[ChatSession]:"""Lazy loads the chat data from the folder. Yields: ChatSession: A chat session containing the loaded messages. """inbox_path=self.directory_path/"inbox"for_dirininbox_path.iterdir():if_dir.is_dir():for_filein_dir.iterdir():if_file.suffix.lower()==".json":file_loader=SingleFileFacebookMessengerChatLoader(path=_file)forresultinfile_loader.lazy_load():yieldresult