feat: 资源部署

This commit is contained in:
R524809
2026-02-02 13:19:46 +08:00
parent 27f7404816
commit b13ab6f9fb
7 changed files with 359 additions and 16 deletions
@@ -206,32 +206,41 @@ async function main() {
const charString = JSON.parse(fs.readFileSync(charStringPath, 'utf-8'));
// 获取所有汉字
const chars = charString['3500'].split('');
console.log(`共有 ${chars.length} 个汉字需要处理`);
const allChars = charString['3500'].split('');
console.log(`共有 ${allChars.length} 个汉字需要处理`);
// 检查是否有已存在的进度文件
const outputPath = path.join(__dirname, '../data/char/char_introduce.json');
let results = [];
let startIndex = 0;
let existingResults = [];
const generatedSet = new Set();
if (fs.existsSync(outputPath)) {
try {
results = JSON.parse(fs.readFileSync(outputPath, 'utf-8'));
startIndex = results.length;
console.log(`发现已有进度,从第 ${startIndex + 1} 个汉字继续`);
existingResults = JSON.parse(fs.readFileSync(outputPath, 'utf-8'));
existingResults.forEach((item) => generatedSet.add(item.char));
console.log(`发现已有 ${existingResults.length} 个汉字介绍`);
} catch (e) {
console.log('已有文件解析失败,从头开始');
}
}
// 过滤出未生成的汉字
const charsToGenerate = allChars.filter((char) => !generatedSet.has(char));
console.log(`其中 ${generatedSet.size} 个已生成,${charsToGenerate.length} 个待生成`);
if (charsToGenerate.length === 0) {
console.log('所有汉字介绍已生成完毕,无需处理');
return;
}
// 批量处理配置
const BATCH_SIZE = 20; // 每次 API 调用处理 20 个汉字
const DELAY_BETWEEN_BATCHES = 1000; // 批次间延迟1秒
for (let i = startIndex; i < chars.length; i += BATCH_SIZE) {
const batch = chars.slice(i, Math.min(i + BATCH_SIZE, chars.length));
for (let i = 0; i < charsToGenerate.length; i += BATCH_SIZE) {
const batch = charsToGenerate.slice(i, Math.min(i + BATCH_SIZE, charsToGenerate.length));
console.log(
`\n处理第 ${i + 1} - ${Math.min(i + BATCH_SIZE, chars.length)} 个汉字(共 ${batch.length} 个)...`
`\n处理第 ${i + 1} - ${Math.min(i + BATCH_SIZE, charsToGenerate.length)} 个汉字(共 ${batch.length} 个)...`
);
console.log(`汉字列表: ${batch.join('')}`);
@@ -243,19 +252,21 @@ async function main() {
console.log(` ${item.char}: ${item.introduce}`);
}
results.push(...batchResults);
// 合并到已有结果
existingResults.push(...batchResults);
batchResults.forEach((item) => generatedSet.add(item.char));
// 每批处理完后保存进度
fs.writeFileSync(outputPath, JSON.stringify(results, null, 2), 'utf-8');
console.log(`已保存进度:${results.length}/${chars.length}`);
fs.writeFileSync(outputPath, JSON.stringify(existingResults, null, 2), 'utf-8');
console.log(`已保存进度:${existingResults.length}/${allChars.length}`);
// 批次间延迟,避免API限流
if (i + BATCH_SIZE < chars.length) {
if (i + BATCH_SIZE < charsToGenerate.length) {
await delay(DELAY_BETWEEN_BATCHES);
}
}
console.log(`\n完成!共生成 ${results.length} 个汉字介绍`);
console.log(`\n完成!共生成 ${existingResults.length} 个汉字介绍`);
console.log(`结果已保存到: ${outputPath}`);
}