Skip to content

Commit

Permalink
refactor: 代码优化
Browse files Browse the repository at this point in the history
  • Loading branch information
QiuYeDx committed Feb 20, 2025
1 parent f7a88d3 commit 45584f9
Showing 1 changed file with 44 additions and 10 deletions.
54 changes: 44 additions & 10 deletions electron/main/translation/class/srt-translator.ts
Original file line number Diff line number Diff line change
Expand Up @@ -26,19 +26,53 @@ export class SRTTranslator extends BaseTranslator {
const fragments: string[] = [];
let currentFragment = "";

content.split("\n").forEach((line) => {
const potentialFragment = currentFragment
? `${currentFragment}\n${line}`
: line;
if (this.countTokens(potentialFragment) > maxTokens) {
fragments.push(currentFragment);
currentFragment = line;
// 将内容按 SRT 字幕块分割(两个换行符 \n\n 分隔块)
const subtitleBlocks = content.trim().split(/\n\n+/);

for (const block of subtitleBlocks) {
if (!block.trim()) continue; // 跳过空块

// 确保块以序号开始(简单验证)
if (!/^\d+\n/.test(block)) {
console.warn(`Invalid SRT block detected: ${block}`);
continue; // 跳过不符合格式的块
}

// 计算当前块的 token 数
const blockTokens = this.countTokens(block);

if (blockTokens > maxTokens) {
// 如果单个块超过 maxTokens,直接作为单独的分片
if (currentFragment) {
fragments.push(currentFragment);
currentFragment = "";
}
fragments.push(block);
} else {
currentFragment = potentialFragment;
// 检查加入当前块后是否超过 maxTokens
const potentialFragment = currentFragment
? `${currentFragment}\n\n${block}`
: block;
const potentialTokens = this.countTokens(potentialFragment);

if (potentialTokens > maxTokens) {
// 如果超过限制,将当前积累的内容作为一个分片,新块放入下一个分片
if (currentFragment) {
fragments.push(currentFragment);
currentFragment = block;
}
} else {
// 未超过限制,继续积累
currentFragment = potentialFragment;
}
}
});
}

// 处理最后一个分片
if (currentFragment) {
fragments.push(currentFragment);
}

if (currentFragment) fragments.push(currentFragment);
return fragments;
}

Expand Down

0 comments on commit 45584f9

Please sign in to comment.