V 3.4.3(2025.08.16)

1. 导出剪映草稿,字幕自动换行
2. 修复一键导出草稿保存数据
3. 修复 一拆四 无效
4. 适配 按主题下的导出草稿界面
This commit is contained in:
lq1405 2025-08-16 14:50:55 +08:00
parent 683087d15e
commit cb7d0dd23e
7 changed files with 26 additions and 25 deletions

View File

@ -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.

View File

@ -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文件",
" • 背景音乐选择文件夹则读取文件夹,随机获取一个",
" • 背景音乐选择指定的音乐文件则使用选择的"
] ]
} }

View File

@ -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 {

View File

@ -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,
@ -389,7 +405,7 @@ async function AddGenerateVideoTask() {
async function AddJianyingDraft() { async function AddJianyingDraft() {
softwareStore.spin.spinning = true softwareStore.spin.spinning = true
softwareStore.spin.tip = '正在生成剪映草稿。。。' softwareStore.spin.tip = '正在生成剪映草稿。。。'
try { try {
let res = undefined let res = undefined
if (props.type == 'book') { if (props.type == 'book') {
@ -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;
} }