Initial clean project import
This commit is contained in:
@@ -0,0 +1,248 @@
|
||||
import SubtitleCoverGenerator from "./main";
|
||||
import {ipcMain} from "electron";
|
||||
import {Log} from "../log/main";
|
||||
|
||||
let subtitleCoverGenerator: SubtitleCoverGenerator | null = null;
|
||||
|
||||
// 注册字幕封面生成器IPC处理程序
|
||||
export const register = () => {
|
||||
// 延迟实例化,确保 AppEnv 已经初始化
|
||||
if (!subtitleCoverGenerator) {
|
||||
subtitleCoverGenerator = new SubtitleCoverGenerator();
|
||||
}
|
||||
|
||||
// 生成字幕和封面
|
||||
ipcMain.handle("subtitleCover:generate", async (event, request) => {
|
||||
try {
|
||||
Log.info("SubtitleCover", `Generate request received: ${JSON.stringify(request)}`);
|
||||
const result = await subtitleCoverGenerator!.generateSubtitleAndCover(request);
|
||||
return result;
|
||||
} catch (error) {
|
||||
Log.error("SubtitleCover", `Generate failed: ${error}`);
|
||||
return {
|
||||
success: false,
|
||||
error: error.message || String(error),
|
||||
message: `Generation failed: ${error.message || String(error)}`
|
||||
};
|
||||
}
|
||||
});
|
||||
|
||||
// 获取字幕样式列表
|
||||
ipcMain.handle("subtitleCover:getSubtitleStyles", async () => {
|
||||
try {
|
||||
return subtitleCoverGenerator!.getSubtitleStyles();
|
||||
} catch (error) {
|
||||
Log.error("SubtitleCover", `Get subtitle styles failed: ${error}`);
|
||||
return [];
|
||||
}
|
||||
});
|
||||
|
||||
// 获取封面样式列表
|
||||
ipcMain.handle("subtitleCover:getCoverStyles", async () => {
|
||||
try {
|
||||
return subtitleCoverGenerator!.getCoverStyles();
|
||||
} catch (error) {
|
||||
Log.error("SubtitleCover", `Get cover styles failed: ${error}`);
|
||||
return [];
|
||||
}
|
||||
});
|
||||
|
||||
// 检查Python环境
|
||||
ipcMain.handle("subtitleCover:checkEnvironment", async () => {
|
||||
try {
|
||||
Log.info("SubtitleCover", "Environment check requested");
|
||||
const result = await subtitleCoverGenerator!.checkPythonEnvironment();
|
||||
return result;
|
||||
} catch (error) {
|
||||
Log.error("SubtitleCover", `Environment check failed: ${error}`);
|
||||
return {
|
||||
pythonAvailable: false,
|
||||
scriptExists: false,
|
||||
dependenciesInstalled: false,
|
||||
message: `Environment check failed: ${error.message || String(error)}`
|
||||
};
|
||||
}
|
||||
});
|
||||
|
||||
// 重新生成封面
|
||||
ipcMain.handle("subtitleCover:regenerateCover", async (event, request) => {
|
||||
try {
|
||||
Log.info("SubtitleCover", `Regenerate cover request: ${JSON.stringify(request)}`);
|
||||
const result = await subtitleCoverGenerator!.regenerateCover(request);
|
||||
return result;
|
||||
} catch (error) {
|
||||
Log.error("SubtitleCover", `Regenerate cover failed: ${error}`);
|
||||
return {
|
||||
success: false,
|
||||
error: error.message || String(error),
|
||||
message: `Regeneration failed: ${error.message || String(error)}`
|
||||
};
|
||||
}
|
||||
});
|
||||
|
||||
// 生成实时封面预览
|
||||
ipcMain.handle("subtitleCover:generatePreviews", async (event, request) => {
|
||||
try {
|
||||
Log.info("SubtitleCover", `Generate previews request: ${JSON.stringify(request)}`);
|
||||
const result = await subtitleCoverGenerator!.generateCoverPreviews(request);
|
||||
return result;
|
||||
} catch (error) {
|
||||
Log.error("SubtitleCover", `Generate previews failed: ${error}`);
|
||||
return {
|
||||
success: false,
|
||||
error: error.message || String(error),
|
||||
message: `Preview generation failed: ${error.message || String(error)}`
|
||||
};
|
||||
}
|
||||
});
|
||||
|
||||
// 使用自定义模板生成封面
|
||||
ipcMain.handle("subtitleCover:generateWithCustomTemplate", async (event, request) => {
|
||||
try {
|
||||
Log.info("SubtitleCover", `Generate with custom template request: ${JSON.stringify(request)}`);
|
||||
const result = await subtitleCoverGenerator!.generateWithCustomTemplate(request);
|
||||
return result;
|
||||
} catch (error) {
|
||||
Log.error("SubtitleCover", `Generate with custom template failed: ${error}`);
|
||||
return {
|
||||
success: false,
|
||||
error: error.message || String(error),
|
||||
message: `Custom template generation failed: ${error.message || String(error)}`
|
||||
};
|
||||
}
|
||||
});
|
||||
|
||||
// ======================== 系统模板编辑 API (开发模式) ========================
|
||||
|
||||
// 获取系统模板列表
|
||||
ipcMain.handle("systemTemplates:getList", async (event) => {
|
||||
try {
|
||||
Log.info("SystemTemplates", "Get system templates list requested");
|
||||
const result = await subtitleCoverGenerator!.getSystemTemplatesList();
|
||||
return result;
|
||||
} catch (error) {
|
||||
Log.error("SystemTemplates", `Get system templates list failed: ${error}`);
|
||||
return {
|
||||
success: false,
|
||||
error: error.message || String(error),
|
||||
message: `Failed to get system templates list: ${error.message || String(error)}`
|
||||
};
|
||||
}
|
||||
});
|
||||
|
||||
// 保存/编辑系统模板(仅在开发模式)
|
||||
ipcMain.handle("systemTemplates:save", async (event, template, isDev) => {
|
||||
try {
|
||||
if (!isDev) {
|
||||
throw new Error("System templates can only be edited in development mode");
|
||||
}
|
||||
Log.info("SystemTemplates", `Save system template: ${template.id}`);
|
||||
const result = await subtitleCoverGenerator!.saveSystemTemplate(template);
|
||||
return result;
|
||||
} catch (error) {
|
||||
Log.error("SystemTemplates", `Save system template failed: ${error}`);
|
||||
return {
|
||||
success: false,
|
||||
error: error.message || String(error),
|
||||
message: `Failed to save system template: ${error.message || String(error)}`
|
||||
};
|
||||
}
|
||||
});
|
||||
|
||||
// 删除系统模板(仅在开发模式,且不能删除系统模板)
|
||||
ipcMain.handle("systemTemplates:delete", async (event, templateId, isDev) => {
|
||||
try {
|
||||
if (!isDev) {
|
||||
throw new Error("System templates cannot be deleted in production mode");
|
||||
}
|
||||
Log.info("SystemTemplates", `Delete system template: ${templateId}`);
|
||||
const result = await subtitleCoverGenerator!.deleteSystemTemplate(templateId);
|
||||
return result;
|
||||
} catch (error) {
|
||||
Log.error("SystemTemplates", `Delete system template failed: ${error}`);
|
||||
return {
|
||||
success: false,
|
||||
error: error.message || String(error),
|
||||
message: `Failed to delete system template: ${error.message || String(error)}`
|
||||
};
|
||||
}
|
||||
});
|
||||
|
||||
// 重置系统模板为默认值(仅在开发模式)
|
||||
ipcMain.handle("systemTemplates:reset", async (event, isDev) => {
|
||||
try {
|
||||
if (!isDev) {
|
||||
throw new Error("System templates can only be reset in development mode");
|
||||
}
|
||||
Log.info("SystemTemplates", "Reset system templates to defaults");
|
||||
const result = await subtitleCoverGenerator!.resetSystemTemplates();
|
||||
return result;
|
||||
} catch (error) {
|
||||
Log.error("SystemTemplates", `Reset system templates failed: ${error}`);
|
||||
return {
|
||||
success: false,
|
||||
error: error.message || String(error),
|
||||
message: `Failed to reset system templates: ${error.message || String(error)}`
|
||||
};
|
||||
}
|
||||
});
|
||||
|
||||
// 导出系统模板配置到 JSON 文件(仅在开发模式)
|
||||
ipcMain.handle("systemTemplates:export", async (event, isDev) => {
|
||||
try {
|
||||
if (!isDev) {
|
||||
throw new Error("System templates can only be exported in development mode");
|
||||
}
|
||||
Log.info("SystemTemplates", "Export system templates configuration");
|
||||
const result = await subtitleCoverGenerator!.exportSystemTemplatesToFile();
|
||||
return result;
|
||||
} catch (error) {
|
||||
Log.error("SystemTemplates", `Export system templates failed: ${error}`);
|
||||
return {
|
||||
success: false,
|
||||
error: error.message || String(error),
|
||||
message: `Failed to export system templates: ${error.message || String(error)}`
|
||||
};
|
||||
}
|
||||
});
|
||||
|
||||
// ✨ 新增:保存字幕模板并自动导出(开发模式)
|
||||
ipcMain.handle("systemTemplates:saveSubtitleAndExport", async (event, template, isDev) => {
|
||||
try {
|
||||
if (!isDev) {
|
||||
throw new Error("Can only save and export in development mode");
|
||||
}
|
||||
Log.info("SystemTemplates", `Save subtitle template and export: ${template.id}`);
|
||||
const result = await subtitleCoverGenerator!.saveSubtitleTemplateAndExport(template, isDev);
|
||||
return result;
|
||||
} catch (error) {
|
||||
Log.error("SystemTemplates", `Save and export subtitle template failed: ${error}`);
|
||||
return {
|
||||
success: false,
|
||||
error: error.message || String(error),
|
||||
message: `Failed to save and export: ${error.message || String(error)}`
|
||||
};
|
||||
}
|
||||
});
|
||||
|
||||
// ✨ 新增:保存封面模板并自动导出(开发模式)
|
||||
ipcMain.handle("systemTemplates:saveCoverAndExport", async (event, template, isDev) => {
|
||||
try {
|
||||
if (!isDev) {
|
||||
throw new Error("Can only save and export in development mode");
|
||||
}
|
||||
Log.info("SystemTemplates", `Save cover template and export: ${template.id}`);
|
||||
const result = await subtitleCoverGenerator!.saveCoverTemplateAndExport(template, isDev);
|
||||
return result;
|
||||
} catch (error) {
|
||||
Log.error("SystemTemplates", `Save and export cover template failed: ${error}`);
|
||||
return {
|
||||
success: false,
|
||||
error: error.message || String(error),
|
||||
message: `Failed to save and export: ${error.message || String(error)}`
|
||||
};
|
||||
}
|
||||
});
|
||||
|
||||
Log.info("SubtitleCover", "SubtitleCover module initialized");
|
||||
};
|
||||
Reference in New Issue
Block a user