瀏覽代碼

新增 hot_fix/hot_fix_002.go 解决之前发布过临时版本的代码的问题,可能会因为 sha1 和 sha256 导致后续逻辑问题

Signed-off-by: allan716 <[email protected]>
allan716 3 年之前
父節點
當前提交
e15ab3b5ac

+ 22 - 14
cmd/chinesesubfinder/main.go

@@ -4,6 +4,7 @@ import (
 	"fmt"
 	"github.com/allanpk716/ChineseSubFinder/internal/backend"
 	"github.com/allanpk716/ChineseSubFinder/internal/logic/cron_helper"
+	"github.com/allanpk716/ChineseSubFinder/internal/logic/pre_job"
 	"github.com/allanpk716/ChineseSubFinder/internal/pkg/global_value"
 	"github.com/allanpk716/ChineseSubFinder/internal/pkg/log_helper"
 	"github.com/allanpk716/ChineseSubFinder/internal/pkg/my_util"
@@ -27,21 +28,14 @@ func init() {
 
 func main() {
 
-	cronHelper := cron_helper.NewCronHelper(log_helper.GetLogger(), settings.GetSettings())
-	if settings.GetSettings().UserInfo.Username == "" || settings.GetSettings().UserInfo.Password == "" {
-		// 如果没有完成,那么就不开启
-		log_helper.GetLogger().Infoln("Need do Setup")
-	} else {
-		// 是否完成了 Setup,如果完成了,那么就开启第一次的扫描
-		go func() {
-			log_helper.GetLogger().Infoln("Setup is Done")
-			cronHelper.Start(settings.GetSettings().CommonSettings.RunScanAtStartUp)
-		}()
+	// ----------------------------------------------
+	// 前置的任务,热修复、字幕修改文件名格式、提前下载好浏览器
+	pj := pre_job.NewPreJob(settings.GetSettings(), log_helper.GetLogger())
+	err := pj.HotFix().ChangeSubNameFormat().ReloadBrowser().Wait()
+	if err != nil {
+		log_helper.GetLogger().Panicln("pre_job", err)
 	}
-
-	nowPort := readCustomPortFile()
-	log_helper.GetLogger().Infoln(fmt.Sprintf("WebUI will listen at 0.0.0.0:%d", nowPort))
-
+	// ----------------------------------------------
 	//scan, err := scan_played_video_subinfo.NewScanPlayedVideoSubInfo(*settings.GetSettings())
 	//if err != nil {
 	//	log_helper.GetLogger().Panicln(err)
@@ -59,7 +53,21 @@ func main() {
 	//		log_helper.GetLogger().Panicln(err)
 	//	}
 	//}
+	// ----------------------------------------------
+	cronHelper := cron_helper.NewCronHelper(log_helper.GetLogger(), settings.GetSettings())
+	if settings.GetSettings().UserInfo.Username == "" || settings.GetSettings().UserInfo.Password == "" {
+		// 如果没有完成,那么就不开启
+		log_helper.GetLogger().Infoln("Need do Setup")
+	} else {
+		// 是否完成了 Setup,如果完成了,那么就开启第一次的扫描
+		go func() {
+			log_helper.GetLogger().Infoln("Setup is Done")
+			cronHelper.Start(settings.GetSettings().CommonSettings.RunScanAtStartUp)
+		}()
+	}
 
+	nowPort := readCustomPortFile()
+	log_helper.GetLogger().Infoln(fmt.Sprintf("WebUI will listen at 0.0.0.0:%d", nowPort))
 	// 支持在外部配置特殊的端口号,以防止本地本占用了无法使用
 	backend.StartBackEnd(nowPort, cronHelper)
 }

+ 0 - 8
internal/logic/cron_helper/cron_helper.go

@@ -61,14 +61,6 @@ func (ch *CronHelper) Start(runImmediately bool) {
 		sub_formatter.GetSubFormatter(ch.sets.AdvancedSettings.SubNameFormatter),
 		ch.sets, ch.log, ch.downloadQueue)
 	// ----------------------------------------------
-	// 前置的任务,热修复、字幕修改文件名格式、提前下载好浏览器
-	//pj := pre_job.NewPreJob(ch.sets, ch.log)
-	//err := pj.HotFix().ChangeSubNameFormat().ReloadBrowser().Wait()
-	//if err != nil {
-	//	ch.log.Panicln("pre_job", err)
-	//	return
-	//}
-	// ----------------------------------------------
 	// 判断扫描任务的时间间隔是否符合要求,不符合则重写默认值
 	_, err := cron.ParseStandard(ch.sets.CommonSettings.ScanInterval)
 	if err != nil {

+ 60 - 0
internal/pkg/hot_fix/hot_fix_002.go

@@ -0,0 +1,60 @@
+package hot_fix
+
+import (
+	"github.com/allanpk716/ChineseSubFinder/internal/dao"
+	"github.com/allanpk716/ChineseSubFinder/internal/pkg/log_helper"
+	"github.com/allanpk716/ChineseSubModels/models"
+)
+
+/*
+	因为之前有失误把部分临时功能给发布了,所以之前定义 sha1 作为文件的唯一值,现在觉得要升级到 sha256
+	那么之前有的需要进行清理一次,然后才能够正确的执行后续新的 sha256 的逻辑
+*/
+type HotFix002 struct {
+}
+
+func NewHotFix002() *HotFix002 {
+	return &HotFix002{}
+}
+
+func (h HotFix002) GetKey() string {
+	return "002"
+}
+
+func (h HotFix002) Process() (interface{}, error) {
+
+	defer func() {
+		log_helper.GetLogger().Infoln("Hotfix", h.GetKey(), "End")
+	}()
+
+	log_helper.GetLogger().Infoln("Hotfix", h.GetKey(), "Start...")
+
+	return h.process()
+}
+
+func (h HotFix002) process() (bool, error) {
+
+	delSubInfo := func(imdbInfo *models.IMDBInfo, cacheInfo *models.VideoSubInfo) bool {
+		err := dao.GetDb().Model(imdbInfo).Association("VideoSubInfos").Delete(cacheInfo)
+		if err != nil {
+			log_helper.GetLogger().Warningln("ScanPlayedVideoSubInfo.Scan", ".Delete Association", cacheInfo.SubName, err)
+			return false
+		}
+		// 继续删除这个对象
+		dao.GetDb().Delete(cacheInfo)
+		log_helper.GetLogger().Infoln("HotFix 002, Sub Association", cacheInfo.SubName)
+
+		return true
+	}
+	var imdbInfos []models.IMDBInfo
+	// 把嵌套关联的 has many 的信息都查询出来
+	dao.GetDb().Preload("VideoSubInfos").Find(&imdbInfos)
+	for _, info := range imdbInfos {
+
+		for _, oneSubInfo := range info.VideoSubInfos {
+			delSubInfo(&info, &oneSubInfo)
+		}
+	}
+
+	return true, nil
+}

+ 4 - 0
internal/pkg/hot_fix/hot_fix_hub.go

@@ -17,6 +17,7 @@ func HotFixProcess(param types.HotFixParam) error {
 	// 一共有多少个 HotFix 要修复,需要固定下来
 	hotfixCases := []ifaces.IHotFix{
 		NewHotFix001(param.MovieRootDirs, param.SeriesRootDirs),
+		NewHotFix002(),
 	}
 	// -----------------------------------------------------------------------
 	// 找现在有多少个 hotfix 执行过了
@@ -56,6 +57,9 @@ func HotFixProcess(param types.HotFixParam) error {
 				}
 			}
 			break
+		case "002":
+			log_helper.GetLogger().Infoln("Hotfix 002, process == ", processResult.(bool))
+			break
 		default:
 			continue
 		}

+ 2 - 2
internal/types/hotfix.go

@@ -1,6 +1,6 @@
 package types
 
 type HotFixParam struct {
-	MovieRootDirs  []string
-	SeriesRootDirs []string
+	MovieRootDirs  []string // hot_fix_001
+	SeriesRootDirs []string // hot_fix_001
 }