Browse Source

调整参数传入逻辑

Signed-off-by: allan716 <[email protected]>
allan716 3 years ago
parent
commit
84f809fde0

+ 1 - 0
.gitignore

@@ -66,3 +66,4 @@ TestData/
 /internal/dao/Logs/*.log
 /internal/dao/*.db
 /internal/pkg/strcut_json/*.json
+/internal/backend/settings.db

+ 19 - 5
internal/logic/downloader_helper/downloader_helper.go

@@ -2,6 +2,11 @@ package downloader_helper
 
 import (
 	commonValue "github.com/allanpk716/ChineseSubFinder/internal/common"
+	subSupplier "github.com/allanpk716/ChineseSubFinder/internal/logic/sub_supplier"
+	"github.com/allanpk716/ChineseSubFinder/internal/logic/sub_supplier/shooter"
+	"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/downloader"
 	"github.com/allanpk716/ChineseSubFinder/internal/pkg/notify_center"
 	"github.com/allanpk716/ChineseSubFinder/internal/pkg/settings"
@@ -26,7 +31,7 @@ func (d DownloaderHelper) Start() error {
 	var err error
 	// 清理通知中心
 	notify_center.Notify.Clear()
-
+	// 获取验证码
 	updateTimeString, code, err := something_static.GetCodeFromWeb()
 	if err != nil {
 		notify_center.Notify.Add("GetSubhdCode", "GetCodeFromWeb,"+err.Error())
@@ -38,14 +43,23 @@ func (d DownloaderHelper) Start() error {
 		d.logger.Infoln("GetCode", updateTimeString, code)
 		commonValue.SubhdCode = code
 	}
-
+	// 构建每个字幕站点下载者的实例
+	var subSupplierHub = subSupplier.NewSubSupplierHub(
+		//subhd.NewSupplier(d.settings),
+		zimuku.NewSupplier(d.settings),
+		xunlei.NewSupplier(d.settings),
+		shooter.NewSupplier(d.settings),
+	)
+	if commonValue.SubhdCode != "" {
+		// 如果找到 code 了,那么就可以继续用这个实例
+		subSupplierHub.AddSubSupplier(subhd.NewSupplier(d.settings))
+	}
 	// 下载实例
-	d.downloader, err = downloader.NewDownloader(sub_formatter.GetSubFormatter(d.settings.AdvancedSettings.SubNameFormatter), d.settings)
-
+	d.downloader, err = downloader.NewDownloader(subSupplierHub, sub_formatter.GetSubFormatter(d.settings.AdvancedSettings.SubNameFormatter), d.settings)
 	if err != nil {
 		d.logger.Errorln("NewDownloader", err)
 	}
-
+	// 最后的清理和通知统计
 	defer func() {
 		d.logger.Infoln("Download One End...")
 		notify_center.Notify.Send()

+ 1 - 1
internal/logic/pre_download_process/pre_download_proces.go

@@ -39,7 +39,7 @@ func (p *PreDownloadProcess) Init() *PreDownloadProcess {
 		}
 	}
 	// ------------------------------------------------------------------------
-	// 测试代理
+	// 测试代理,同时
 	if settings.GetSettings().AdvancedSettings.ProxySettings.UseHttpProxy == false {
 		log_helper.GetLogger().Infoln("UseHttpProxy = false")
 	} else {

+ 13 - 37
internal/pkg/downloader/downloader.go

@@ -11,10 +11,6 @@ import (
 	"github.com/allanpk716/ChineseSubFinder/internal/logic/restore_fix_timeline_bk"
 	seriesHelper "github.com/allanpk716/ChineseSubFinder/internal/logic/series_helper"
 	subSupplier "github.com/allanpk716/ChineseSubFinder/internal/logic/sub_supplier"
-	"github.com/allanpk716/ChineseSubFinder/internal/logic/sub_supplier/shooter"
-	"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/logic/sub_timeline_fixer"
 	"github.com/allanpk716/ChineseSubFinder/internal/pkg/log_helper"
 	"github.com/allanpk716/ChineseSubFinder/internal/pkg/my_util"
@@ -33,8 +29,11 @@ import (
 
 // Downloader 实例化一次用一次,不要反复的使用,很多临时标志位需要清理。
 type Downloader struct {
-	settings                 settings.Settings
-	log                      *logrus.Logger
+	settings settings.Settings
+	log      *logrus.Logger
+
+	subSupplierHub *subSupplier.SubSupplierHub
+
 	mk                       *markSystem.MarkingSystem // MarkingSystem
 	embyHelper               *embyHelper.EmbyHelper
 	movieFileFullPathList    []string                      //  多个需要搜索字幕的电影文件全路径
@@ -51,7 +50,7 @@ type Downloader struct {
 	canceledLock sync.Mutex
 }
 
-func NewDownloader(inSubFormatter ifaces.ISubFormatter, _settings settings.Settings) (*Downloader, error) {
+func NewDownloader(_supplierHub *subSupplier.SubSupplierHub, inSubFormatter ifaces.ISubFormatter, _settings settings.Settings) (*Downloader, error) {
 
 	var downloader Downloader
 	var err error
@@ -62,12 +61,14 @@ func NewDownloader(inSubFormatter ifaces.ISubFormatter, _settings settings.Setti
 	// 检测是否某些参数超出范围
 	downloader.settings.Check()
 	// 初始化 Emby API 接口
-	if downloader.settings.EmbySettings.AddressUrl != "" && downloader.settings.EmbySettings.APIKey != "" {
+	if downloader.settings.EmbySettings.Enable == true && downloader.settings.EmbySettings.AddressUrl != "" && downloader.settings.EmbySettings.APIKey != "" {
 		downloader.embyHelper = embyHelper.NewEmbyHelper(*downloader.settings.EmbySettings)
 	}
 	// 这里就不单独弄一个 settings.SubNameFormatter 字段来传递值了,因为 inSubFormatter 就已经知道是什么 formatter 了
 	downloader.subNameFormatter = subCommon.FormatterName(downloader.subFormatter.GetFormatterFormatterName())
 
+	downloader.subSupplierHub = _supplierHub
+
 	var sitesSequence = make([]string, 0)
 	// TODO 这里写固定了抉择字幕的顺序
 	sitesSequence = append(sitesSequence, common.SubSiteZiMuKu)
@@ -404,20 +405,8 @@ func (d *Downloader) movieDlFunc(ctx context.Context, inData interface{}) error
 	taskData := inData.(*task_control.TaskData)
 	downloadInputData := taskData.DataEx.(DownloadInputData)
 	// -----------------------------------------------------
-	// 构建每个字幕站点下载者的实例
-	var subSupplierHub = subSupplier.NewSubSupplierHub(
-		//subhd.NewSupplier(d.settings),
-		zimuku.NewSupplier(d.settings),
-		xunlei.NewSupplier(d.settings),
-		shooter.NewSupplier(d.settings),
-	)
-	if common.SubhdCode != "" {
-		// 如果找到 code 了,那么就可以继续用这个实例
-		subSupplierHub.AddSubSupplier(subhd.NewSupplier(d.settings))
-	}
-
 	// 字幕都下载缓存好了,需要抉择存哪一个,优先选择中文双语的,然后到中文
-	organizeSubFiles, err := subSupplierHub.DownloadSub4Movie(downloadInputData.OneVideoFullPath, taskData.Index, d.needForcedScanAndDownSub)
+	organizeSubFiles, err := d.subSupplierHub.DownloadSub4Movie(downloadInputData.OneVideoFullPath, taskData.Index, d.needForcedScanAndDownSub)
 	if err != nil {
 		d.log.Errorln("subSupplierHub.DownloadSub4Movie", downloadInputData.OneVideoFullPath, err)
 		return err
@@ -442,26 +431,13 @@ func (d *Downloader) seriesDlFunc(ctx context.Context, inData interface{}) error
 	var err error
 	taskData := inData.(*task_control.TaskData)
 	downloadInputData := taskData.DataEx.(DownloadInputData)
-	// 构建每个字幕站点下载者的实例
-	var subSupplierHub *subSupplier.SubSupplierHub
-	subSupplierHub = subSupplier.NewSubSupplierHub(
-		zimuku.NewSupplier(d.settings),
-		//subhd.NewSupplier(d.settings),
-		xunlei.NewSupplier(d.settings),
-		shooter.NewSupplier(d.settings),
-	)
-	if common.SubhdCode != "" {
-		// 如果找到 code 了,那么就可以继续用这个实例
-		subSupplierHub.AddSubSupplier(subhd.NewSupplier(d.settings))
-	}
-
 	// 这里拿到了这一部连续剧的所有的剧集信息,以及所有下载到的字幕信息
 	var seriesInfo *series.SeriesInfo
 	var organizeSubFiles map[string][]string
 	// 优先判断特殊的操作
 	if d.needForcedScanAndDownSub == true {
 		// 全盘扫描
-		seriesInfo, organizeSubFiles, err = subSupplierHub.DownloadSub4Series(downloadInputData.OneSeriesPath, taskData.Index, d.needForcedScanAndDownSub)
+		seriesInfo, organizeSubFiles, err = d.subSupplierHub.DownloadSub4Series(downloadInputData.OneSeriesPath, taskData.Index, d.needForcedScanAndDownSub)
 		if err != nil {
 			d.log.Errorln("subSupplierHub.DownloadSub4Series", downloadInputData.OneSeriesPath, err)
 			return err
@@ -470,14 +446,14 @@ func (d *Downloader) seriesDlFunc(ctx context.Context, inData interface{}) error
 		// 是否是通过 emby_helper api 获取的列表
 		if d.embyHelper == nil {
 			// 不适用 emby api
-			seriesInfo, organizeSubFiles, err = subSupplierHub.DownloadSub4Series(downloadInputData.OneSeriesPath, taskData.Index, d.needForcedScanAndDownSub)
+			seriesInfo, organizeSubFiles, err = d.subSupplierHub.DownloadSub4Series(downloadInputData.OneSeriesPath, taskData.Index, d.needForcedScanAndDownSub)
 			if err != nil {
 				d.log.Errorln("subSupplierHub.DownloadSub4Series", downloadInputData.OneSeriesPath, err)
 				return err
 			}
 		} else {
 			// 先进性 emby_helper api 的操作,读取需要更新字幕的项目
-			seriesInfo, organizeSubFiles, err = subSupplierHub.DownloadSub4SeriesFromEmby(
+			seriesInfo, organizeSubFiles, err = d.subSupplierHub.DownloadSub4SeriesFromEmby(
 				filepath.Join(downloadInputData.RootDirPath, downloadInputData.OneSeriesPath),
 				d.seriesSubNeedDlMap[downloadInputData.OneSeriesPath], taskData.Index)
 			if err != nil {

+ 1 - 0
internal/pkg/settings/jellyfin_settings.go

@@ -0,0 +1 @@
+package settings

+ 1 - 0
internal/pkg/settings/plex_settings.go

@@ -0,0 +1 @@
+package settings