2024-01-03 16:16:00 +08:00

82 lines
2.2 KiB
JavaScript

import { ipcMain, dialog, clipboard } from 'electron';
import log from 'electron-log';
import { throttle } from 'lodash';
import { startServer } from './proxyServer';
import { installCert, checkCertInstalled } from './cert';
import { downloadFile, decodeFile } from './utils';
let win;
export default function initIPC() {
ipcMain.handle('invoke_初始化信息', async (event, arg) => {
return checkCertInstalled();
});
ipcMain.handle('invoke_开始初始化', (event, arg) => {
return installCert(false);
});
ipcMain.handle('invoke_启动服务', async (event, arg) => {
return startServer({
win: win,
setProxyErrorCallback: err => {
console.log('开启代理失败', err);
},
});
});
ipcMain.handle('invoke_选择下载位置', async (event, arg) => {
const result = dialog.showOpenDialogSync({ title: '保存', properties: ['openDirectory'] });
if (!result?.[0]) {
throw '取消';
}
return result?.[0];
});
ipcMain.handle('invoke_下载视频', async (event, { url, decodeKey, savePath, description }) => {
let fileName = description?.replaceAll?.(/\\|\/|:|\*|\?|"|<|>|\|/g, '') || Date.now();
//console.log('description:', description);
//console.log('fileName:', fileName);
//console.log('url:', url);
//console.log('decodeKey:', decodeKey);
return downloadFile(
url,
decodeKey,
`${savePath}/${fileName}.mp4`,
throttle(value => win?.webContents?.send?.('e_进度变化', value), 1000),
).catch(err => {
console;
});
});
ipcMain.handle('invoke_复制', async (event, { url, decodeKey, description }) => {
//const strInfo = `复制\nurl:${url}\ndecodeKey:${decodeKey}\ndescription${description}\n`;
//console.log(strInfo);
clipboard.writeText(url);
});
ipcMain.handle('invoke_选择文件位置', async (event, arg) => {
const result = dialog.showOpenDialogSync();
if (!result?.[0]) {
throw '取消';
}
return result?.[0];
});
ipcMain.handle('invoke_解密视频', async (event, { url, decodeKey, jieMiFilePath, description }) => {
return decodeFile(decodeKey, jieMiFilePath).catch(err => {
console;
});
});
}
export function setWin(w) {
win = w;
}