blob: a318d7dd0413ca751a7f08a1ad9674232664cfe8 [file] [log] [blame]
const fs = require('fs');
const xlsx = require('xlsx');
const path = require('path');
const tracks_dictionary = require('./tracks_dictionary.json');
// 读取Excel文件
function readExcelFile(filePath) {
try {
const workbook = xlsx.readFile(filePath);
const sheetName = workbook.SheetNames[0];
return xlsx.utils.sheet_to_json(workbook.Sheets[sheetName]);
} catch (error) {
console.error('读取Excel文件失败:', error);
throw error;
}
}
// 清理会话文件的主函数
async function cleanupSessions() {
try {
// 读取 Excel 文件中的所有数据
const rawSessions = readExcelFile('./ApacheConSessions.xlsx');
// 获取所有 Accepted 状态的 Session Id
const acceptedIds = new Set();
rawSessions.forEach(session => {
const trackValue = tracks_dictionary[session['Track']] || 'unknown';
const sessionId = session['Session Id'];
const fileName = `${trackValue}-${sessionId}`;
acceptedIds.add(fileName);
});
// 读取 sessions 目录
const sessionsDir = path.join(process.cwd(), '../content', 'sessions');
const files = fs.readdirSync(sessionsDir);
// 使用 Set 跟踪已处理的文件
const processedFiles = new Set();
let deletedCount = 0;
// 处理每个文件
files.forEach(file => {
// 完全移除所有 .md 后缀
const baseName = file.replace(/\.zh\.md$/, '').replace(/\.md$/, '');
// 如果这个基础文件名已经处理过,跳过
if (processedFiles.has(baseName)) {
return;
}
processedFiles.add(baseName);
// 检查是否需要删除
if (!acceptedIds.has(baseName)) {
// 删除对应的两个文件
const mdFile = path.join(sessionsDir, `${baseName}.md`);
const zhMdFile = path.join(sessionsDir, `${baseName}.zh.md`);
if (fs.existsSync(mdFile)) {
console.log(`准备删除: ${baseName}.md`);
fs.unlinkSync(mdFile);
deletedCount++;
}
if (fs.existsSync(zhMdFile)) {
console.log(`准备删除: ${baseName}.zh.md`);
fs.unlinkSync(zhMdFile);
deletedCount++;
}
}
});
console.log(`\n清理完成,共删除 ${deletedCount} 个文件`);
return deletedCount;
} catch (error) {
console.error('清理过程中出错:', error);
throw error;
}
}
cleanupSessions()