From b355a435bc174668cc5e3f75a539e2f384e570fd Mon Sep 17 00:00:00 2001 From: lifegpc Date: Wed, 21 May 2025 12:55:05 +0800 Subject: [PATCH] Add LLM trans support for m3t --- src/output_scripts/m3t.rs | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/src/output_scripts/m3t.rs b/src/output_scripts/m3t.rs index 748913e..c9542b5 100644 --- a/src/output_scripts/m3t.rs +++ b/src/output_scripts/m3t.rs @@ -34,6 +34,7 @@ impl<'a> M3tParser<'a> { pub fn parse(&mut self) -> Result> { let mut messages = Vec::new(); let mut name = None; + let mut llm = None; while let Some(line) = self.next_line() { if line.is_empty() { continue; @@ -43,9 +44,29 @@ impl<'a> M3tParser<'a> { if line.starts_with("NAME:") { name = Some(line[5..].trim().to_string()); } + } else if line.starts_with("△") { + let line = line[3..].trim(); + llm = Some(line); } else if line.starts_with("●") { let message = line[3..].trim(); - messages.push(Message::new(message.replace("\\n", "\n"), name.take())); + let message = if message + .trim_start_matches("「") + .trim_end_matches("」") + .is_empty() + { + llm.take() + .unwrap_or_else(|| { + if message.starts_with("「") { + "「」" + } else { + "" + } + }) + .replace("\\n", "\n") + } else { + message.replace("\\n", "\n") + }; + messages.push(Message::new(message, name.take())); } else { return Err(anyhow::anyhow!( "Invalid line format at line {}: {}",