Просмотр исходного кода

完成手动上传字幕到本地功能的后端编码

Signed-off-by: allan716 <[email protected]>
allan716 3 лет назад
Родитель
Сommit
237aa07123

+ 1 - 1
internal/backend/base_router.go

@@ -97,7 +97,7 @@ func InitRouter(
 		GroupV1.POST("/subtitles/refresh_media_server_sub_list", cbV1.RefreshMediaServerSubList)
 		GroupV1.POST("/subtitles/manual_upload_2_local", cbV1.ManualUploadSubtitle2Local)
 		GroupV1.GET("/subtitles/list_manual_upload_2_local_job", cbV1.ListManualUploadSubtitle2LocalJob)
-		GroupV1.GET("/subtitles/is_manual_upload_2_local_in_queue", cbV1.IsManualUploadSubtitle2LocalJobInQueue)
+		GroupV1.POST("/subtitles/is_manual_upload_2_local_in_queue", cbV1.IsManualUploadSubtitle2LocalJobInQueue)
 	}
 
 	GroupAPIV1 := router.Group("/api/v1")

+ 7 - 1
internal/backend/controllers/v1/subtitles.go

@@ -96,8 +96,14 @@ func (cb *ControllerBase) IsManualUploadSubtitle2LocalJobInQueue(c *gin.Context)
 		cb.ErrorProcess(c, "IsManualUploadSubtitle2LocalJobInQueue", err)
 	}()
 
+	job := manual_upload_sub_2_local.Job{}
+	err = c.ShouldBindJSON(&job)
+	if err != nil {
+		return
+	}
+
 	found := cb.cronHelper.Downloader.ManualUploadSub2Local.IsJobInQueue(&manual_upload_sub_2_local.Job{
-		VideoFPath: c.Query("video_f_path"),
+		VideoFPath: job.VideoFPath,
 	})
 
 	c.JSON(http.StatusOK, backend2.ReplyCommon{Message: strconv.FormatBool(found)})

+ 1 - 1
pkg/downloader/downloader.go

@@ -104,7 +104,7 @@ func NewDownloader(inSubFormatter ifaces.ISubFormatter, fileDownloader *file_dow
 		downloader.settings, downloader.subFormatter,
 		downloader.subTimelineFixerHelperEx)
 
-	downloader.ManualUploadSub2Local = manual_upload_sub_2_local.NewManualUploadSub2Local(downloader.log, downloader.SaveSubHelper)
+	downloader.ManualUploadSub2Local = manual_upload_sub_2_local.NewManualUploadSub2Local(downloader.log, downloader.SaveSubHelper, downloader.ScanLogic)
 
 	downloader.movieInfoMap = make(map[string]MovieInfo)
 	downloader.seasonInfoMap = make(map[string]SeasonInfo)

+ 25 - 3
pkg/manual_upload_sub_2_local/processor.go

@@ -1,8 +1,13 @@
 package manual_upload_sub_2_local
 
 import (
+	"path/filepath"
 	"sync"
 
+	"github.com/allanpk716/ChineseSubFinder/internal/models"
+	"github.com/allanpk716/ChineseSubFinder/pkg/scan_logic"
+	PTN "github.com/middelink/go-parse-torrent-name"
+
 	"github.com/pkg/errors"
 
 	"github.com/allanpk716/ChineseSubFinder/pkg/save_sub_helper"
@@ -24,6 +29,7 @@ import (
 type ManualUploadSub2Local struct {
 	log              *logrus.Logger
 	saveSubHelper    *save_sub_helper.SaveSubHelper // 保存字幕的逻辑
+	scanLogic        *scan_logic.ScanLogic          // 是否扫描逻辑
 	subNameFormatter subCommon.FormatterName        // 从 inSubFormatter 推断出来
 	processQueue     *llq.Queue
 	jobSet           *hashset.Set
@@ -33,11 +39,12 @@ type ManualUploadSub2Local struct {
 	workingJob       *Job // 正在操作的任务的路径
 }
 
-func NewManualUploadSub2Local(log *logrus.Logger, saveSubHelper *save_sub_helper.SaveSubHelper) *ManualUploadSub2Local {
+func NewManualUploadSub2Local(log *logrus.Logger, saveSubHelper *save_sub_helper.SaveSubHelper, scanLogic *scan_logic.ScanLogic) *ManualUploadSub2Local {
 
 	m := &ManualUploadSub2Local{
 		log:           log,
 		saveSubHelper: saveSubHelper,
+		scanLogic:     scanLogic,
 		processQueue:  llq.New(),
 		jobSet:        hashset.New(),
 		addOneSignal:  make(chan interface{}, 1),
@@ -176,26 +183,41 @@ func (m *ManualUploadSub2Local) processSub(job *Job) error {
 		err = errors.New("DetermineFileTypeFromFile," + job.SubFPath + ",not support SubType")
 		return err
 	}
+
+	var skipInfo *models.SkipScanInfo
 	if m.subNameFormatter == subCommon.Emby {
 		err = m.saveSubHelper.WriteSubFile2VideoPath(job.VideoFPath, *subFileInfo, "manual", true, false)
 		if err != nil {
 			err = errors.New("WriteSubFile2VideoPath," + job.VideoFPath + "," + err.Error())
 			return err
 		}
+		// 默认设置这个视频“跳过”(跳过扫描和下载字幕)属性
+		skipInfo = models.NewSkipScanInfoByMovie(job.VideoFPath, true)
 	} else {
 		err = m.saveSubHelper.WriteSubFile2VideoPath(job.VideoFPath, *subFileInfo, "manual", false, false)
 		if err != nil {
 			err = errors.New("WriteSubFile2VideoPath," + job.VideoFPath + "," + err.Error())
 			return err
 		}
+		// 默认设置这个视频“跳过”(跳过扫描和下载字幕)属性
+		var parse *PTN.TorrentInfo
+		parse, err = PTN.Parse(job.VideoFPath)
+		if err != nil {
+			err = errors.New("processSub.PTN.Parse:" + err.Error())
+			return err
+		}
+		dirFPath := filepath.Dir(filepath.Dir(job.VideoFPath))
+		skipInfo = models.NewSkipScanInfoBySeries(dirFPath, parse.Season, parse.Episode, true)
 	}
 
+	m.scanLogic.Set(skipInfo)
+
 	return nil
 }
 
 type Job struct {
-	VideoFPath string
-	SubFPath   string
+	VideoFPath string `json:"video_f_path"`
+	SubFPath   string `json:"sub_f_path"`
 }
 
 type Reply struct {