V 3.4.3(2025.08.16)
1. 导出剪映草稿,字幕自动换行 2. 修复一键导出草稿保存数据 3. 修复 一拆四 无效 4. 适配 按主题下的导出草稿界面
This commit is contained in:
parent
683087d15e
commit
cb7d0dd23e
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "laitool",
|
"name": "laitool",
|
||||||
"version": "3.4.2",
|
"version": "3.4.3",
|
||||||
"description": "An AI tool for image processing, video processing, and other functions.",
|
"description": "An AI tool for image processing, video processing, and other functions.",
|
||||||
"main": "./out/main/index.js",
|
"main": "./out/main/index.js",
|
||||||
"author": "laitool.cn",
|
"author": "laitool.cn",
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -1,24 +1,10 @@
|
|||||||
export const SoftwareData = {
|
export const SoftwareData = {
|
||||||
"version": "V3.4.2",
|
"version": "V3.4.3",
|
||||||
"date": "2025-08-08",
|
"date": "2025-08-16",
|
||||||
"notes": [
|
"notes": [
|
||||||
"1. 新增图/文转视频菜单界面,专注实现图/文转视频(目前只集成了 MJ VIDEO)",
|
"1. 导出剪映草稿,字幕自动换行",
|
||||||
" • 全新的界面排列,小说列表和批次任务更加分明",
|
"2. 修复一键导出草稿保存数据",
|
||||||
" • 添加转视频进度,在主界面即可看到转视频的比例",
|
"3. 修复 一拆四 无效",
|
||||||
" • 单独的界面去处理图转视频,避免表格数据过多繁琐",
|
"4. 适配 按主题下的导出草稿界面"
|
||||||
" • 新增分页显示,界面加载更快,也可切换不分页",
|
|
||||||
" • 单独操作面板,参数修改处理更加清晰,支持多种模式显示",
|
|
||||||
" • 批量设置转视频配置,可以批量修改分类",
|
|
||||||
" • 友好的选择视频界面",
|
|
||||||
"2. 重写软件导出剪映,修复若干草稿导出问题",
|
|
||||||
" • 修复导出剪映文案和图片对齐问题,解决时长越长越明显的对不上问题",
|
|
||||||
" • 修复导出草稿关键帧部分问题",
|
|
||||||
" • 导出的文案通过分镜自动导入,不再需要手动选择SRT",
|
|
||||||
"3. 美化生成草稿界面弹窗,优化部分逻辑",
|
|
||||||
" • 删除选择SRT文件,SRT根据聚合推文中导入的SRT自动生成草稿",
|
|
||||||
" • 只需选择配音文件即可,配音文件和导入的SRT请自行对应",
|
|
||||||
" • 背景音乐不在内部设置,自行选择文件夹或者是MP3、WAV文件",
|
|
||||||
" • 背景音乐选择文件夹则读取文件夹,随机获取一个",
|
|
||||||
" • 背景音乐选择指定的音乐文件则使用选择的"
|
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
@ -15,10 +15,10 @@ import { define } from "../../../define/define";
|
|||||||
import { ValidateJson } from "../../../define/Tools/validate";
|
import { ValidateJson } from "../../../define/Tools/validate";
|
||||||
import BookSetting from "@/main/setting/bookSetting";
|
import BookSetting from "@/main/setting/bookSetting";
|
||||||
import util from 'util';
|
import util from 'util';
|
||||||
import { spawn, exec } from 'child_process';
|
|
||||||
import { SendMessageToRenderer } from "../globalService";
|
import { SendMessageToRenderer } from "../globalService";
|
||||||
import { TaskModal } from "@/model/task";
|
import { TaskModal } from "@/model/task";
|
||||||
import compressing from "compressing";
|
import compressing from "compressing";
|
||||||
|
import { spawn, exec } from 'child_process';
|
||||||
const execAsync = util.promisify(exec);
|
const execAsync = util.promisify(exec);
|
||||||
|
|
||||||
export class BookVideo {
|
export class BookVideo {
|
||||||
|
|||||||
@ -311,7 +311,6 @@ async function UseBookVideoDataToBookTask() {
|
|||||||
* 保存数据
|
* 保存数据
|
||||||
*/
|
*/
|
||||||
async function SaveVideoData() {
|
async function SaveVideoData() {
|
||||||
console.log('SaveVideoData', bookTask.value)
|
|
||||||
if (props.type == 'book') {
|
if (props.type == 'book') {
|
||||||
let res = await window.db.UpdateBookData(bookTask.value.id, {
|
let res = await window.db.UpdateBookData(bookTask.value.id, {
|
||||||
srtPath: bookTask.value.srtPath,
|
srtPath: bookTask.value.srtPath,
|
||||||
@ -326,6 +325,23 @@ async function SaveVideoData() {
|
|||||||
} else {
|
} else {
|
||||||
message.success('保存小说数据成功')
|
message.success('保存小说数据成功')
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for (let i = 0; i < props.selectBookTask.length; i++) {
|
||||||
|
const element = props.selectBookTask[i]
|
||||||
|
let res = await window.db.UpdateBookTaskData(element, {
|
||||||
|
srtPath: bookTask.value.srtPath,
|
||||||
|
audioPath: bookTask.value.audioPath,
|
||||||
|
backgroundMusic: bookTask.value.backgroundMusic,
|
||||||
|
friendlyReminder: bookTask.value.friendlyReminder,
|
||||||
|
draftSrtStyle: bookTask.value.draftSrtStyle,
|
||||||
|
draftDepend: bookTask.value.draftDepend
|
||||||
|
})
|
||||||
|
if (res.code == 0) {
|
||||||
|
message.error(res.message)
|
||||||
|
} else {
|
||||||
|
message.success('保存小说批次数据成功')
|
||||||
|
}
|
||||||
|
}
|
||||||
} else if (props.type == 'bookTask') {
|
} else if (props.type == 'bookTask') {
|
||||||
let res = await window.db.UpdateBookTaskData(bookTask.value.id, {
|
let res = await window.db.UpdateBookTaskData(bookTask.value.id, {
|
||||||
srtPath: bookTask.value.srtPath,
|
srtPath: bookTask.value.srtPath,
|
||||||
@ -437,7 +453,6 @@ const rules = ref({
|
|||||||
border-radius: 16px;
|
border-radius: 16px;
|
||||||
border: none;
|
border: none;
|
||||||
backdrop-filter: blur(10px);
|
backdrop-filter: blur(10px);
|
||||||
background: rgba(255, 255, 255, 0.95);
|
|
||||||
animation: fadeInUp 0.6s ease-out;
|
animation: fadeInUp 0.6s ease-out;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user