Files
WYF-koubo/scripts/analyze-template-differences.cjs
2026-06-19 18:45:55 +08:00

90 lines
2.2 KiB
JavaScript

const fs = require('fs');
const path = require('path');
// 读取 TypeScript 配置文件
const tsFile = path.join(__dirname, '../src/config/systemSubtitleTemplates.ts');
const content = fs.readFileSync(tsFile, 'utf-8');
// 提取每个模板的关键信息
const templates = [];
const templateRegex = /id: "template_system_(\d+)",[\s\S]*?name: "(\d+)",[\s\S]*?titleSubtitleConfig: \{[\s\S]*?maxCharsPerLine: (\d+),[\s\S]*?sourceTitle: "([^"]+)",[\s\S]*?lines: \[([\s\S]*?)\],[\s\S]*?\},[\s\S]*?\},[\s\S]*?isSystem: true/g;
let match;
while ((match = templateRegex.exec(content)) !== null) {
const id = match[1];
const name = match[2];
const maxCharsPerLine = parseInt(match[3]);
const sourceTitle = match[4];
const linesContent = match[5];
// 提取行信息
const lines = [];
const fontNames = [];
const lineRegex = /\{[^}]*text: "([^"]+)"[^}]*fontName: "([^"]+)"[^}]*fontColor: "([^"]+)"[^}]*\}/g;
let lineMatch;
while ((lineMatch = lineRegex.exec(linesContent)) !== null) {
lines.push({
text: lineMatch[1],
fontName: lineMatch[2],
fontColor: lineMatch[3]
});
if (!fontNames.includes(lineMatch[2])) {
fontNames.push(lineMatch[2]);
}
}
templates.push({
id,
name,
maxCharsPerLine,
sourceTitle,
lines,
fontNames
});
}
console.log('=== 模板标题字幕配置对比 ===\n');
templates.forEach(t => {
console.log(`模板 ${t.name}:`);
console.log(` - 每行字符数: ${t.maxCharsPerLine}`);
console.log(` - 行数: ${t.lines.length}`);
console.log(` - 字体: ${t.fontNames.join(', ')}`);
t.lines.forEach((line, idx) => {
console.log(` - 第${idx + 1}行: "${line.text}" (${line.fontName}, ${line.fontColor})`);
});
console.log('');
});
// 找出相同的模板
console.log('\n=== 相同配置的模板组 ===\n');
const groups = {};
templates.forEach(t => {
const key = `${t.maxCharsPerLine}-${t.lines.length}-${t.fontNames.join(',')}-${t.lines.map(l => `${l.text}:${l.fontName}:${l.fontColor}`).join('|')}`;
if (!groups[key]) {
groups[key] = [];
}
groups[key].push(t.name);
});
Object.keys(groups).forEach(key => {
if (groups[key].length > 1) {
console.log(`模板 ${groups[key].join(', ')} 配置相同`);
}
});