Browse Source

正在实现基础的手动上传字幕逻辑

Signed-off-by: allan716 <[email protected]>
allan716 3 years ago
parent
commit
7796410648
2 changed files with 78 additions and 14 deletions
  1. 17 5
      internal/backend/controllers/v1/subtitles.go
  2. 61 9
      pkg/folder.go

+ 17 - 5
internal/backend/controllers/v1/subtitles.go

@@ -5,6 +5,8 @@ import (
 	"net/http"
 	"path/filepath"
 
+	"github.com/allanpk716/ChineseSubFinder/pkg"
+
 	backend2 "github.com/allanpk716/ChineseSubFinder/pkg/types/backend"
 	"github.com/gin-gonic/gin"
 )
@@ -37,19 +39,29 @@ func (cb *ControllerBase) ManualUploadSubtitle(c *gin.Context) {
 	videoFPath, ok := c.GetPostForm("video_f_path")
 	if ok == false {
 		err = fmt.Errorf("GetPostForm video_f_path failed")
+		cb.log.Errorln(err)
 		return
 	}
 	file, err := c.FormFile("file")
 	if err != nil {
-		cb.log.Errorln("ManualUploadSubtitle.FormFile", err)
+		err = fmt.Errorf("FormFile failed, err: %v", err)
+		cb.log.Errorln(err)
 		return
 	}
-	basePath := "./upload/"
-	filename := basePath + filepath.Base(file.Filename)
-	if err := c.SaveUploadedFile(file, filename); err != nil {
-		c.String(http.StatusBadRequest, fmt.Sprintf("upload file err: %s", err.Error()))
+	basePath, err := pkg.GetManualSubUploadCacheFolder()
+	if err != nil {
+		err = fmt.Errorf("GetManualSubUploadCacheFolder failed, err: %v", err)
+		cb.log.Errorln(err)
 		return
 	}
+	filename := filepath.Join(basePath, filepath.Base(file.Filename))
+	if err = c.SaveUploadedFile(file, filename); err != nil {
+		err = fmt.Errorf("SaveUploadedFile failed, err: %v", err)
+		cb.log.Errorln(err)
+		return
+	}
+
+	println("videoFPath", videoFPath)
 
 	c.JSON(http.StatusOK, backend2.ReplyCommon{Message: "ok"})
 	return

+ 61 - 9
pkg/folder.go

@@ -266,7 +266,7 @@ func GetRootCacheCenterFolder() (string, error) {
 	if err != nil {
 		return "", err
 	}
-	nowProcessRoot = filepath.Join(nowProcessRoot, cacheRootFolderName, CacheCenterFloder)
+	nowProcessRoot = filepath.Join(nowProcessRoot, cacheRootFolderName, CacheCenterFolder)
 	err = os.MkdirAll(nowProcessRoot, os.ModePerm)
 	if err != nil {
 		return "", err
@@ -343,6 +343,57 @@ func ClearShareSubFolderByYearAndName(year int, name string) error {
 	return ClearFolder(filepath.Join(nowTmpFolder, name))
 }
 
+// --------------------------------------------------------------
+// Manual Subtitle Upload
+// --------------------------------------------------------------
+
+// GetManualSubUploadCacheFolder 手动上传字幕的缓存文件夹
+func GetManualSubUploadCacheFolder() (string, error) {
+
+	nowProcessRoot, err := os.Getwd()
+	if err != nil {
+		return "", err
+	}
+	nowProcessRoot = filepath.Join(nowProcessRoot, cacheRootFolderName, ManualSubUploadCacheFolder)
+	err = os.MkdirAll(nowProcessRoot, os.ModePerm)
+	if err != nil {
+		return "", err
+	}
+	return nowProcessRoot, err
+}
+
+// ClearManualSubUploadCacheFolder 清理手动上传字幕的缓存文件夹
+func ClearManualSubUploadCacheFolder() error {
+
+	nowTmpFolder, err := GetManualSubUploadCacheFolder()
+	if err != nil {
+		return err
+	}
+
+	pathSep := string(os.PathSeparator)
+	files, err := os.ReadDir(nowTmpFolder)
+	if err != nil {
+		return err
+	}
+	for _, curFile := range files {
+		fullPath := nowTmpFolder + pathSep + curFile.Name()
+		if curFile.IsDir() {
+			err = os.RemoveAll(fullPath)
+			if err != nil {
+				return err
+			}
+		} else {
+			// 这里就是文件了
+			err = os.Remove(fullPath)
+			if err != nil {
+				return err
+			}
+		}
+	}
+
+	return nil
+}
+
 // --------------------------------------------------------------
 // Common
 // --------------------------------------------------------------
@@ -485,14 +536,15 @@ func ClearIdleSubFixCacheFolder(l *logrus.Logger, rootSubFixCacheFolder string,
 
 // 缓存文件的位置信息,都是在程序的根目录下的 cache 中
 const (
-	cacheRootFolderName = "cache"             // 缓存文件夹总名称
-	TmpFolder           = "tmp"               // 临时缓存的文件夹
-	RodCacheFolder      = "rod"               // rod 的缓存目录
-	PluginFolder        = "Plugin"            // 插件的目录
-	DebugFolder         = "CSF-DebugThings"   // 调试相关的文件夹
-	SubFixCacheFolder   = "CSF-SubFixCache"   // 字幕时间校正的缓存文件夹,一般可以不清理
-	ShareSubFileCache   = "CSF-ShareSubCache" // 字幕共享的缓存目录,不建议删除
-	CacheCenterFloder   = "CSF-CacheCenter"   // 下载缓存、队列缓存、下载次数缓存的文件夹
+	cacheRootFolderName        = "cache"                    // 缓存文件夹总名称
+	TmpFolder                  = "tmp"                      // 临时缓存的文件夹
+	RodCacheFolder             = "rod"                      // rod 的缓存目录
+	PluginFolder               = "Plugin"                   // 插件的目录
+	DebugFolder                = "CSF-DebugThings"          // 调试相关的文件夹
+	SubFixCacheFolder          = "CSF-SubFixCache"          // 字幕时间校正的缓存文件夹,一般可以不清理
+	ShareSubFileCache          = "CSF-ShareSubCache"        // 字幕共享的缓存目录,不建议删除
+	CacheCenterFolder          = "CSF-CacheCenter"          // 下载缓存、队列缓存、下载次数缓存的文件夹
+	ManualSubUploadCacheFolder = "CSF-ManualSubUploadCache" // 手动上传字幕的缓存文件夹
 )
 
 const (