同步上游 zip:合并任务后台化 + 合并整剧可直接播放;保留 ultrafast+4线程 转码优化与 .gitignore 本地规则

This commit is contained in:
yvan
2026-09-18 10:16:15 +08:00
parent 80485e9dba
commit b96363d787
21 changed files with 1173 additions and 172 deletions
+30
View File
@@ -0,0 +1,30 @@
package app
import (
"encoding/json"
"errors"
"fmt"
"strings"
)
const mergedPlaybackPrefix = "merged:"
func (app *UIApp) mergedPlaybackTaskLocked(id string) (Task, string, error) {
dramaID, ok := strings.CutPrefix(id, mergedPlaybackPrefix)
if !ok || dramaID == "" {
return Task{}, "", errors.New("合并播放记录无效")
}
state := app.merges[dramaID]
if state == nil || state.Status != "success" {
return Task{}, "", errors.New("本剧尚无合并成功的文件")
}
path := completedPlaybackPath(&UITask{Status: uiStatusSuccess, Path: state.OutputPath})
if path == "" {
return Task{}, "", errors.New("本地合并文件不存在或已移动,请重新合并")
}
label := fmt.Sprintf("全集(第%d–%d集)", state.StartEpisode, state.EndEpisode)
episode, _ := json.Marshal(label)
task := Task{DramaID: dramaID, DramaTitle: state.DramaTitle, Index: 1, Total: 1, OutPath: path,
Chapter: Chapter{ID: fmt.Sprintf("%s:%d-%d", id, state.StartEpisode, state.EndEpisode), Source: sourceFromDramaID(dramaID), Title: label, CurrentEpisode: episode}}
return task, path, nil
}