const fs = require('fs'); const path = require('path'); // 读取历史配置 const historicalFile = path.join(__dirname, '../electron/config/default-subtitle-templates-v2.json'); const historical = JSON.parse(fs.readFileSync(historicalFile, 'utf-8')); // 读取当前配置 const currentFile = path.join(__dirname, '../electron/resources/extra/common/config/system-templates.json'); const current = JSON.parse(fs.readFileSync(currentFile, 'utf-8')); console.log('=== 历史配置 vs 当前配置对比 ===\n'); const historicalTemplates = historical.subtitleTemplates || []; const currentTemplates = current.subtitleTemplates || []; // 按ID匹配模板 const historicalMap = {}; historicalTemplates.forEach(t => { historicalMap[t.id] = t; }); const currentMap = {}; currentTemplates.forEach(t => { currentMap[t.id] = t; }); // 对比每个模板 ['template_system_11', 'template_system_22', 'template_system_33', 'template_system_44', 'template_system_55', 'template_system_66', 'template_system_77', 'template_system_88'].forEach(templateId => { const hist = historicalMap[templateId]; const curr = currentMap[templateId]; if (!hist || !curr) { console.log(`模板 ${templateId}: 缺失配置`); return; } console.log(`\n=== 模板 ${hist.name} (${templateId}) ===`); // 对比关键词组样式 console.log('\n关键词组样式差异:'); const histKeywords = hist.config.keywordGroupsStyles || []; const currKeywords = curr.config.keywordGroupsStyles || []; histKeywords.forEach((histKw, idx) => { const currKw = currKeywords[idx]; if (!currKw) return; if (histKw.groupName === currKw.groupName) { const histFont = histKw.styleOverride?.fontName || 'N/A'; const currFont = currKw.styleOverride?.fontName || 'N/A'; const histEffect = histKw.effectId || 'N/A'; const currEffect = currKw.effectId || 'N/A'; const histColor = histKw.color || 'N/A'; const currColor = currKw.color || 'N/A'; if (histFont !== currFont || histEffect !== currEffect || histColor !== currColor) { console.log(` ${histKw.groupName}:`); if (histFont !== currFont) { console.log(` 字体: ${histFont} -> ${currFont}`); } if (histEffect !== currEffect) { console.log(` 特效: ${histEffect} -> ${currEffect}`); } if (histColor !== currColor) { console.log(` 颜色: ${histColor} -> ${currColor}`); } } } }); // 对比标题字幕配置 console.log('\n标题字幕配置:'); const histTitle = hist.config.titleSubtitleConfig; const currTitle = curr.config.titleSubtitleConfig; if (histTitle && currTitle) { console.log(` 每行字符数: ${histTitle.maxCharsPerLine} (历史) vs ${currTitle.maxCharsPerLine} (当前)`); console.log(` 行数: ${histTitle.lines.length} (历史) vs ${currTitle.lines.length} (当前)`); if (histTitle.lines.length === currTitle.lines.length) { histTitle.lines.forEach((histLine, idx) => { const currLine = currTitle.lines[idx]; if (currLine) { if (histLine.fontName !== currLine.fontName || histLine.fontColor !== currLine.fontColor) { console.log(` 第${idx + 1}行:`); if (histLine.fontName !== currLine.fontName) { console.log(` 字体: ${histLine.fontName} -> ${currLine.fontName}`); } if (histLine.fontColor !== currLine.fontColor) { console.log(` 颜色: ${histLine.fontColor} -> ${currLine.fontColor}`); } } } }); } } }); console.log('\n\n=== 总结 ==='); console.log('历史配置文件中,标题字幕配置:'); console.log('- 模板 11, 33, 55, 77: 8字符/行,2行'); console.log('- 模板 22, 44, 66, 88: 15字符/行,1行'); console.log('\n历史配置文件中,关键词组样式使用 "Noto Serif CJK" 字体'); console.log('当前配置文件中,关键词组样式已更新为不同字体');