瀏覽代碼

调整实现的细节

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

+ 4 - 3
cmd/chinesesubfinder/main.go

@@ -1,6 +1,7 @@
 package main
 
 import (
+	"github.com/allanpk716/ChineseSubFinder/internal/pkg/global_value"
 	"github.com/allanpk716/ChineseSubFinder/internal/pkg/log_helper"
 	"github.com/allanpk716/ChineseSubFinder/internal/pkg/my_util"
 	"github.com/allanpk716/ChineseSubFinder/internal/pkg/settings"
@@ -11,6 +12,8 @@ func init() {
 
 	log_helper.GetLogger().Infoln("ChineseSubFinder Version:", AppVersion)
 
+	global_value.AppVersion = AppVersion
+
 	if my_util.OSCheck() == false {
 		panic(`You should search runtime.GOOS in the project, Implement unimplemented function`)
 	}
@@ -43,8 +46,6 @@ func main() {
 }
 
 /*
-	没有很好的想法,因为喜欢使用 tag 进行版本的输出标记,但是 tag 的时候编译 docker 前确实可以修改源码替换关键词做到版本与 tag 同步变更
-	但是, goreleaser 却不支持这样,会提示源码被改了,无法进行编译发布
-	除非不发布、编译 Linux 和 Windows 程序,这样就能做到 tag 与 程序内部输出版本一致。
+	使用 git tag 来做版本描述,然后在编译的时候传入版本号信息到这个变量上
 */
 var AppVersion = "unknow"

+ 1 - 0
internal/backend/controllers/v1/job_things.go

@@ -16,4 +16,5 @@ func (cb ControllerBase) JobStopHandler(c *gin.Context) {
 		// 统一的异常处理
 		cb.ErrorProcess(c, "JobStopHandler", err)
 	}()
+
 }

+ 8 - 4
internal/logic/pre_download_process/pre_download_proces.go

@@ -8,6 +8,7 @@ import (
 	"github.com/allanpk716/ChineseSubFinder/internal/logic/sub_supplier/subhd"
 	"github.com/allanpk716/ChineseSubFinder/internal/logic/sub_supplier/xunlei"
 	"github.com/allanpk716/ChineseSubFinder/internal/logic/sub_supplier/zimuku"
+	"github.com/allanpk716/ChineseSubFinder/internal/pkg/global_value"
 	"github.com/allanpk716/ChineseSubFinder/internal/pkg/hot_fix"
 	"github.com/allanpk716/ChineseSubFinder/internal/pkg/log_helper"
 	"github.com/allanpk716/ChineseSubFinder/internal/pkg/my_util"
@@ -25,7 +26,7 @@ type PreDownloadProcess struct {
 	stageName string
 	gError    error
 
-	subSupplierHub *subSupplier.SubSupplierHub
+	SubSupplierHub *subSupplier.SubSupplierHub
 }
 
 func NewPreDownloadProcess() *PreDownloadProcess {
@@ -39,6 +40,9 @@ func (p *PreDownloadProcess) Init() *PreDownloadProcess {
 	}
 	p.stageName = stageNameInit
 	// ------------------------------------------------------------------------
+	// 初始化全局变量
+	global_value.Init(settings.GetSettings().AdvancedSettings.CustomVideoExts)
+	// ------------------------------------------------------------------------
 	// 初始化通知缓存模块
 	notify_center.Notify = notify_center.NewNotifyCenter(settings.GetSettings().DeveloperSettings.BarkServerAddress)
 	// 清理通知中心
@@ -73,7 +77,7 @@ func (p *PreDownloadProcess) Init() *PreDownloadProcess {
 	}
 	// ------------------------------------------------------------------------
 	// 构建每个字幕站点下载者的实例
-	p.subSupplierHub = subSupplier.NewSubSupplierHub(
+	p.SubSupplierHub = subSupplier.NewSubSupplierHub(
 		*settings.GetSettings(),
 		zimuku.NewSupplier(*settings.GetSettings()),
 		xunlei.NewSupplier(*settings.GetSettings()),
@@ -81,7 +85,7 @@ func (p *PreDownloadProcess) Init() *PreDownloadProcess {
 	)
 	if commonValue.SubhdCode != "" {
 		// 如果找到 code 了,那么就可以继续用这个实例
-		p.subSupplierHub.AddSubSupplier(subhd.NewSupplier(*settings.GetSettings()))
+		p.SubSupplierHub.AddSubSupplier(subhd.NewSupplier(*settings.GetSettings()))
 	}
 
 	return p
@@ -120,7 +124,7 @@ func (p *PreDownloadProcess) Check() *PreDownloadProcess {
 	}
 	// ------------------------------------------------------------------------
 	// 测试提供字幕的网站是有效的
-	p.subSupplierHub.CheckSubSiteStatus()
+	p.SubSupplierHub.CheckSubSiteStatus()
 	// ------------------------------------------------------------------------
 	// 判断文件夹是否存在
 	if len(settings.GetSettings().CommonSettings.MoviePaths) < 1 {

+ 11 - 1
internal/pkg/global_value/global_value.go

@@ -1,11 +1,21 @@
 package global_value
 
+func Init(customExts []string) {
+	DefDebugFolder = ""
+	DefTmpFolder = ""
+	DefSubFixCacheFolder = ""
+	WantedExtMap = make(map[string]string) // 人工确认的需要监控的视频后缀名
+	DefExtMap = make(map[string]string)    // 内置支持的视频后缀名列表
+	CustomVideoExts = customExts           // 用户额外自定义的视频后缀名列表
+}
+
 // util.go
 var (
+	AppVersion           = "" // 程序的版本号
 	DefDebugFolder       = ""
 	DefTmpFolder         = ""
 	DefSubFixCacheFolder = ""
 	WantedExtMap         = make(map[string]string) // 人工确认的需要监控的视频后缀名
 	DefExtMap            = make(map[string]string) // 内置支持的视频后缀名列表
 	CustomVideoExts      = make([]string, 0)       // 用户额外自定义的视频后缀名列表
-)
+)

+ 22 - 12
internal/pkg/settings/settings.go

@@ -19,33 +19,43 @@ type Settings struct {
 }
 
 // GetSettings 获取 Settings 的实例
-func GetSettings() *Settings {
-	if settings == nil {
+func GetSettings(reloadSettings ...bool) *Settings {
+	if _settings == nil {
 
-		settingsOnce.Do(func() {
-			settings = NewSettings()
-			if isFile(settings.configFPath) == false {
+		_settingsOnce.Do(func() {
+			_settings = NewSettings()
+			if isFile(_settings.configFPath) == false {
 				// 配置文件不存在,新建一个空白的
-				err := settings.Save()
+				err := _settings.Save()
 				if err != nil {
 					panic("Can't Save Config File:" + configName + " Error: " + err.Error())
 				}
 			} else {
 				// 读取存在的文件
-				err := settings.Read()
+				err := _settings.Read()
 				if err != nil {
 					panic("Can't Read Config File:" + configName + " Error: " + err.Error())
 				}
 			}
 		})
+		// 是否需要重新读取配置信息,这个可能在每次保存配置文件后需要操作
+		if len(reloadSettings) >= 1 {
+			if reloadSettings[0] == true {
+				err := _settings.Read()
+				if err != nil {
+					panic("Can't Read Config File:" + configName + " Error: " + err.Error())
+				}
+			}
+		}
+
 	}
-	return settings
+	return _settings
 }
 
 // SetFullNewSettings 从 Web 端传入新的 Settings 完整设置
 func SetFullNewSettings(inSettings *Settings) error {
-	settings = inSettings
-	return settings.Save()
+	_settings = inSettings
+	return _settings.Save()
 }
 
 func NewSettings() *Settings {
@@ -116,8 +126,8 @@ func isFile(filePath string) bool {
 }
 
 var (
-	settings     *Settings
-	settingsOnce sync.Once
+	_settings     *Settings
+	_settingsOnce sync.Once
 )
 
 const (