import { ipcMain } from 'electron' import { DEFINE_STRING } from '../../define/define_string' import { ReverseBook } from '../Service/Book/ReverseBook' import { BasicReverse } from '../Service/Book/basicReverse' import { Subtitle } from '../Service/Subtitle/subtitle' import { BookBasic } from '../Service/Book/BooKBasic' import { MJOpt } from '../Service/MJ/mj' import { BookImage } from '../Service/Book/bookImage' import { ImageStyle } from '../Service/Book/imageStyle' import { BookTask } from '../Service/Book/bookTask' import { BookVideo } from '../Service/Book/bookVideo' import { Watermark } from '../Service/watermark' import { SubtitleService } from '../Service/Subtitle/subtitleService' import { BookFrame } from '../Service/Book/bookFrame' import { BookPrompt } from '../Service/Book/bookPrompt' import { BookGeneral } from '../Service/Book/bookGeneral' import { OperateBookType } from '../../define/enum/bookEnum' let reverseBook = new ReverseBook() let basicReverse = new BasicReverse() let subtitle = new Subtitle() let mjOpt = new MJOpt() let bookBasic = new BookBasic() let bookImage = new BookImage() let imageStyle = new ImageStyle() let bookTask = new BookTask() let bookVideo = new BookVideo() let watermark = new Watermark() let subtitleService = new SubtitleService() let bookFrame = new BookFrame() let bookPrompt = new BookPrompt(); let bookGeneral = new BookGeneral() export function BookIpc() { // 获取样式图片的子列表 ipcMain.handle(DEFINE_STRING.BOOK.GET_BOOK_TYPE, async (event) => bookBasic.GetBookType()) // 新增或者是修改小说数据 ipcMain.handle(DEFINE_STRING.BOOK.ADD_OR_MODIFY_BOOK, async (event, book) => bookBasic.AddOrModifyBook(book) ) // 获取小说数据(通过传递的参数进行筛选) ipcMain.handle(DEFINE_STRING.BOOK.GET_BOOK_DATA, async (event, bookQuery) => reverseBook.GetBookData(bookQuery) ) // 获取小说的所有的数据 ipcMain.handle(DEFINE_STRING.BOOK.GET_BOOK_TASK_DETAIL, async (event, bookTaskId) => reverseBook.GetBookTaskDetail(bookTaskId) ) // 保存小说任务的风格 ipcMain.handle(DEFINE_STRING.BOOK.SAVE_IMAGE_STYLE, async (event, styleList, bookTaskId) => imageStyle.SaveImageStyle(styleList, bookTaskId) ) //#region 一键反推 ipcMain.handle(DEFINE_STRING.BOOK.GET_BOOK_TASK_DATA, async (event, bookTaskCondition) => reverseBook.GetBookTaskData(bookTaskCondition) ) // 获取抽帧数据 ipcMain.handle(DEFINE_STRING.BOOK.GET_FRAME_DATA, async (event, bookId) => basicReverse.GetFrameData(bookId) ) // 全自动开始 ipcMain.handle(DEFINE_STRING.BOOK.AUTO_ACTION, async (event, bookId) => reverseBook.AutoAction(bookId) ) // 保存一键反推文案位置 ipcMain.handle(DEFINE_STRING.BOOK.SAVE_BOOK_SUBTITLE_POSITION, async (event, value) => subtitle.SaveBookSubtitlePosition(value) ) // 打开对应的字幕提取的图片文件夹 ipcMain.handle(DEFINE_STRING.BOOK.OPEN_BOOK_SUBTITLE_POSITION_SCREENSHOT, async (event, value) => subtitle.OpenBookSubtitlePositionScreenshot(value) ) // 获取当前帧的字幕文字 ipcMain.handle(DEFINE_STRING.BOOK.GET_CURRENT_FRAME_TEXT, async (event, value) => subtitle.GetCurrentFrameText(value) ) // 获取当前视频中的所有的字幕 ipcMain.handle(DEFINE_STRING.BOOK.GET_VIDEO_FRAME_TEXT, async (event, value) => { subtitle.GetVideoFrameText(value) }) //#endregion //#region 小说通用操作 ipcMain.handle(DEFINE_STRING.BOOK.REPLACE_BOOK_DATA, async (event, bookTaskId, replaceData) => await bookGeneral.ReplaceBookData(bookTaskId, replaceData)) //#endregion //#region 分镜相关 // 开始计算分镜 ipcMain.handle( DEFINE_STRING.BOOK.COMPUTE_STORYBOARD, async (event, bookId) => await reverseBook.ComputeStoryboard(bookId) ) // 开始执行分镜,切分视频 ipcMain.handle( DEFINE_STRING.BOOK.FRAMING, async (event, bookId) => await bookFrame.Framing(bookId) ) // 替换分镜视频的当前帧 ipcMain.handle(DEFINE_STRING.BOOK.REPLACE_VIDEO_CURRENT_FRAME, async (event, bookTaskDetailId, currentTime) => await bookFrame.ReplaceVideoCurrentFrame(bookTaskDetailId, currentTime) ) //#endregion //#region 提示词相关 // 合并提示词 ipcMain.handle(DEFINE_STRING.BOOK.MERGE_PROMPT, async (event, id, type, operateBookType) => await reverseBook.MergePrompt(id, type, operateBookType)) // 将反推出来的提示词写入到GPT提示词里面 ipcMain.handle( DEFINE_STRING.BOOK.REVERSE_PROMPT_TO_GPT_PROMPT, async (event, bookId, bookTaskId, index) => await bookPrompt.ReversePromptToGptPrompt(bookId, bookTaskId, index) ) // 删除所有的反推出来的提示词 ipcMain.handle( DEFINE_STRING.BOOK.RESET_GPT_REVERSE_DATA, async (event, id, operateBookType, type) => await bookPrompt.ResetGptReverseData(id, operateBookType, type) ) // 删除所有的合并提示词 ipcMain.handle( DEFINE_STRING.BOOK.REMOVE_MERGE_PROMPT_DATA, async (event, id, operateBookType) => await bookPrompt.RemoveMergePromptData(id, operateBookType) ) // 原创推理提示词 ipcMain.handle( DEFINE_STRING.BOOK.ORIGINAL_GPT_PROMPT, async (event, id: string, operateBookType: OperateBookType, coverData: boolean) => await bookPrompt.OriginalGetPrompt(id, operateBookType, coverData) ) //#endregion //#region 文案相关 // 开始执行反推获取小说文案的方法 ipcMain.handle( DEFINE_STRING.BOOK.GET_COPYWRITING, async (event, bookId, bookTaskId, operateBookType, coverData) => await subtitleService.GetCopywriting(bookId, bookTaskId, operateBookType, coverData) ) // 导入文案和字幕对齐数据的方法,保存到数据库中 ipcMain.handle( DEFINE_STRING.BOOK.SAVE_COPYWRITING, async (event, bookTaskId, copywritingData, operateBookType) => await subtitleService.SaveCopywriting(bookTaskId, copywritingData, operateBookType) ) // 获取小说的文案数据,然后保存到对应的文件中 ipcMain.handle( DEFINE_STRING.BOOK.EXPORT_COPYWRITING, async (event, bookTaskId) => await subtitleService.ExportCopywriting(bookTaskId) ) // 将文案文件导入到小说中 ipcMain.handle( DEFINE_STRING.BOOK.IMPORT_COPYWRITING, async (event, bookId, bookTaskId, txtPath) => await subtitleService.ImportCopywriting(bookId, bookTaskId, txtPath) ) // 清除导入对齐的文案 ipcMain.handle(DEFINE_STRING.BOOK.CLEAR_IMPORT_WORD, async (event, bookTaskId) => await subtitleService.ClearImportWord(bookTaskId)) //#endregion //#region 一键反推的单个任务 // 执行去除水印 ipcMain.handle( DEFINE_STRING.BOOK.REMOVE_WATERMARK, async (event, id, operateBookType) => await watermark.RemoveWatermark(id, operateBookType) ) // 添加反推任务到任务列表 ipcMain.handle( DEFINE_STRING.BOOK.ADD_REVERSE_PROMPT, async (event, bookTaskDetailIds, operateBookType, type) => await reverseBook.AddReversePrompt(bookTaskDetailIds, operateBookType, type) ) // 重选单个反推提示词到输出种 ipcMain.handle( DEFINE_STRING.BOOK.SINGLE_REVERSE_TO_GPT_PROMPT, async (event, bookTaskDetailId, index) => await mjOpt.SingleReverseToGptPrompt(bookTaskDetailId, index) ) //#endregion //#region 图片相关 // 对指定的小说任务的图片进行锁定和解锁 ipcMain.handle( DEFINE_STRING.BOOK.IMAGE_LOCK_OPERATION, async (event, id, lockType, operateBookType) => await bookImage.ImageLockOperation(id, lockType, operateBookType) ) // 下载或者使用指定的图片并裁剪 ipcMain.handle( DEFINE_STRING.BOOK.DOWNLOAD_IMAGE_AND_SPLIT, async (event, bookTaskDetailId, imageUrl) => await bookImage.DownloadImageUrlAndSplit(bookTaskDetailId, imageUrl) ) // 一键生成当前批次的所有图片 ipcMain.handle( DEFINE_STRING.BOOK.GENERATE_IMAGE_ALL, async (event, bookTaskId, imageCategory) => await bookImage.GenerateImageAll(bookTaskId, imageCategory) ) // 高清图片前检查,主要是检查图片大小 ipcMain.handle( DEFINE_STRING.BOOK.CHECK_IMAGE_FILE_SIZE, async (event, id, fileSize, operateBookType) => await bookImage.CheckImageFileSize(id, fileSize, operateBookType) ) // 开始执行高清图片 ipcMain.handle( DEFINE_STRING.BOOK.HD_IMAGE, async (event, id, scale, operateBookType) => await bookImage.HDImage(id, scale, operateBookType) ) // 删除所有的生成图片 ipcMain.handle( DEFINE_STRING.BOOK.REMOVE_GENERATE_IMAGE, async (event, id, operateBookType) => await bookImage.ResetGenerateImage(id, operateBookType) ) //#endregion // 一拆四,将一个任务拆分成四个任务,并且复制对应的图片 ipcMain.handle( DEFINE_STRING.BOOK.ONE_TO_FOUR_BOOK_TASK, async (event, bookTaskDetailId) => await bookTask.OneToFourBookTask(bookTaskDetailId) ) //#region 小说相关 // 重置小说数据 ipcMain.handle(DEFINE_STRING.BOOK.RESET_BOOK_DATA, async (event, bookId) => await bookBasic.ResetBookData(bookId)) // 删除小说数据 ipcMain.handle(DEFINE_STRING.BOOK.DELETE_BOOK_DATA, async (event, bookId) => await bookBasic.DeleteBookData(bookId)) //#endregion //#region 小说批次任务相关 // 新建小说批次任务 ipcMain.handle(DEFINE_STRING.BOOK.ADD_NEW_BOOK_TASK, async (event, addBookTaskData) => await bookTask.AddNewBookTask(addBookTaskData)) // 重置小说批次数据 ipcMain.handle( DEFINE_STRING.BOOK.RESET_BOOK_TASK, async (event, bookTaskId) => await bookTask.ReSetBookTask(bookTaskId) ) // 删除小说批次数据 ipcMain.handle( DEFINE_STRING.BOOK.DELETE_BOOK_TASK, async (event, bookTaskId) => await bookTask.DeleteBookTask(bookTaskId) ) // 将小说视频相关的设置添加到小说任务批次 ipcMain.handle( DEFINE_STRING.BOOK.USE_BOOK_VIDEO_DATA_TO_BOOK_TASK, async (event, id, operateBookType) => await bookVideo.UseBookVideoDataToBookTask(id, operateBookType) ) // 将小说任务添加到剪映草稿 ipcMain.handle( DEFINE_STRING.BOOK.ADD_JIANYING_DRAFT, async (event, id, operateBookType) => await bookVideo.AddJianyingDraft(id, operateBookType) ) //#endregion }