Browse Source

正在大范围重构,保存进度

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

+ 0 - 86
cmd/chinesesubfinder/main.go

@@ -3,14 +3,12 @@ package main
 import (
 	commonValue "github.com/allanpk716/ChineseSubFinder/internal/common"
 	config2 "github.com/allanpk716/ChineseSubFinder/internal/pkg/config"
-	"github.com/allanpk716/ChineseSubFinder/internal/pkg/downloader"
 	"github.com/allanpk716/ChineseSubFinder/internal/pkg/hot_fix"
 	"github.com/allanpk716/ChineseSubFinder/internal/pkg/log_helper"
 	"github.com/allanpk716/ChineseSubFinder/internal/pkg/my_util"
 	"github.com/allanpk716/ChineseSubFinder/internal/pkg/notify_center"
 	"github.com/allanpk716/ChineseSubFinder/internal/pkg/proxy_helper"
 	"github.com/allanpk716/ChineseSubFinder/internal/pkg/rod_helper"
-	"github.com/allanpk716/ChineseSubFinder/internal/pkg/something_static"
 	"github.com/allanpk716/ChineseSubFinder/internal/pkg/sub_formatter"
 	"github.com/allanpk716/ChineseSubFinder/internal/pkg/sub_formatter/common"
 	"github.com/allanpk716/ChineseSubFinder/internal/types"
@@ -157,90 +155,6 @@ func main() {
 
 func DownLoadStart(httpProxy string) {
 
-	notify_center.Notify.Clear()
-
-	updateTimeString, code, err := something_static.GetCodeFromWeb()
-	if err != nil {
-		notify_center.Notify.Add("GetSubhdCode", "GetCodeFromWeb,"+err.Error())
-		log.Errorln("something_static.GetCodeFromWeb", err)
-		log.Errorln("Skip Subhd download")
-		// 没有则需要清空
-		commonValue.SubhdCode = ""
-	} else {
-		log.Infoln("GetCode", updateTimeString, code)
-		commonValue.SubhdCode = code
-	}
-
-	// 下载实例
-	dl, err := downloader.NewDownloader(sub_formatter.GetSubFormatter(config.SubNameFormatter),
-		types.ReqParam{
-			HttpProxy:                     httpProxy,
-			DebugMode:                     config.DebugMode,
-			SaveMultiSub:                  config.SaveMultiSub,
-			Threads:                       config.Threads,
-			SubTypePriority:               config.SubTypePriority,
-			WhenSubSupplierInvalidWebHook: config.WhenSubSupplierInvalidWebHook,
-			EmbyConfig:                    config.EmbyConfig,
-			SaveOneSeasonSub:              config.SaveOneSeasonSub,
-
-			SubTimelineFixerConfig: config.SubTimelineFixerConfig,
-			FixTimeLine:            config.FixTimeLine,
-		})
-
-	if err != nil {
-		log.Errorln("NewDownloader", err)
-	}
-
-	defer func() {
-		log.Infoln("Download One End...")
-		notify_center.Notify.Send()
-		//my_util.CloseChrome()
-		//rod_helper.Clear()
-	}()
-
-	log.Infoln("Download One Started...")
-
-	// 优先级最高。读取特殊文件,启用一些特殊的功能,比如 forced_scan_and_down_sub
-	err = dl.ReadSpeFile()
-	if err != nil {
-		log.Errorln("ReadSpeFile", err)
-	}
-	// 从 csf-bk 文件还原时间轴修复前的字幕文件
-	if dl.NeedRestoreFixTimeLineBK == true {
-		err = dl.RestoreFixTimelineBK(config.MovieFolder, config.SeriesFolder)
-		if err != nil {
-			log.Errorln("RestoreFixTimelineBK", err)
-		}
-	}
-	// 刷新 Emby 的字幕,如果下载了字幕倒是没有刷新,则先刷新一次,便于后续的 Emby api 统计逻辑
-	err = dl.RefreshEmbySubList()
-	if err != nil {
-		log.Errorln("RefreshEmbySubList", err)
-		return
-	}
-	err = dl.GetUpdateVideoListFromEmby(config.MovieFolder, config.SeriesFolder)
-	if err != nil {
-		log.Errorln("GetUpdateVideoListFromEmby", err)
-		return
-	}
-	// 开始下载,电影
-	err = dl.DownloadSub4Movie(config.MovieFolder)
-	if err != nil {
-		log.Errorln("DownloadSub4Movie", err)
-		return
-	}
-	// 开始下载,连续剧
-	err = dl.DownloadSub4Series(config.SeriesFolder)
-	if err != nil {
-		log.Errorln("DownloadSub4Series", err)
-		return
-	}
-	// 刷新 Emby 的字幕,下载完毕字幕了,就统一刷新一下
-	err = dl.RefreshEmbySubList()
-	if err != nil {
-		log.Errorln("RefreshEmbySubList", err)
-		return
-	}
 }
 
 var (

+ 0 - 2
internal/backend/backend.go

@@ -11,8 +11,6 @@ import (
 // StartBackEnd 开启后端的服务器
 func StartBackEnd(httpPort int) {
 
-	log_helper.SetLoggerName(log_helper.LogNameBackEnd)
-
 	engine := gin.Default()
 	// 默认所有都通过
 	engine.Use(cors.Default())

+ 115 - 0
internal/logic/downloader_helper/downloader_helper.go

@@ -0,0 +1,115 @@
+package downloader_helper
+
+import (
+	commonValue "github.com/allanpk716/ChineseSubFinder/internal/common"
+	"github.com/allanpk716/ChineseSubFinder/internal/pkg/downloader"
+	"github.com/allanpk716/ChineseSubFinder/internal/pkg/notify_center"
+	"github.com/allanpk716/ChineseSubFinder/internal/pkg/something_static"
+	"github.com/allanpk716/ChineseSubFinder/internal/pkg/sub_formatter"
+	"github.com/allanpk716/ChineseSubFinder/internal/types"
+	"github.com/sirupsen/logrus"
+)
+
+type DownloaderHelper struct {
+	downloader *downloader.Downloader
+	logger     *logrus.Logger
+}
+
+func NewDownloaderHelper() *DownloaderHelper {
+	return &DownloaderHelper{}
+}
+
+func (d DownloaderHelper) Start(config types.Config) 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())
+		d.logger.Errorln("something_static.GetCodeFromWeb", err)
+		d.logger.Errorln("Skip Subhd download")
+		// 没有则需要清空
+		commonValue.SubhdCode = ""
+	} else {
+		d.logger.Infoln("GetCode", updateTimeString, code)
+		commonValue.SubhdCode = code
+	}
+
+	// 下载实例
+	d.downloader, err = downloader.NewDownloader(sub_formatter.GetSubFormatter(config.SubNameFormatter),
+		types.ReqParam{
+			HttpProxy:                     config.HttpProxy,
+			DebugMode:                     config.DebugMode,
+			SaveMultiSub:                  config.SaveMultiSub,
+			Threads:                       config.Threads,
+			SubTypePriority:               config.SubTypePriority,
+			WhenSubSupplierInvalidWebHook: config.WhenSubSupplierInvalidWebHook,
+			EmbyConfig:                    config.EmbyConfig,
+			SaveOneSeasonSub:              config.SaveOneSeasonSub,
+
+			SubTimelineFixerConfig: config.SubTimelineFixerConfig,
+			FixTimeLine:            config.FixTimeLine,
+		})
+
+	if err != nil {
+		d.logger.Errorln("NewDownloader", err)
+	}
+
+	defer func() {
+		d.logger.Infoln("Download One End...")
+		notify_center.Notify.Send()
+		//my_util.CloseChrome()
+		//rod_helper.Clear()
+	}()
+
+	d.logger.Infoln("Download One Started...")
+
+	// 优先级最高。读取特殊文件,启用一些特殊的功能,比如 forced_scan_and_down_sub
+	err = d.downloader.ReadSpeFile()
+	if err != nil {
+		d.logger.Errorln("ReadSpeFile", err)
+	}
+	// 从 csf-bk 文件还原时间轴修复前的字幕文件
+	if d.downloader.NeedRestoreFixTimeLineBK == true {
+		err = d.downloader.RestoreFixTimelineBK(config.MovieFolder, config.SeriesFolder)
+		if err != nil {
+			d.logger.Errorln("RestoreFixTimelineBK", err)
+		}
+	}
+	// 刷新 Emby 的字幕,如果下载了字幕倒是没有刷新,则先刷新一次,便于后续的 Emby api 统计逻辑
+	err = d.downloader.RefreshEmbySubList()
+	if err != nil {
+		d.logger.Errorln("RefreshEmbySubList", err)
+		return err
+	}
+	err = d.downloader.GetUpdateVideoListFromEmby(config.MovieFolder, config.SeriesFolder)
+	if err != nil {
+		d.logger.Errorln("GetUpdateVideoListFromEmby", err)
+		return err
+	}
+	// 开始下载,电影
+	err = d.downloader.DownloadSub4Movie(config.MovieFolder)
+	if err != nil {
+		d.logger.Errorln("DownloadSub4Movie", err)
+		return err
+	}
+	// 开始下载,连续剧
+	err = d.downloader.DownloadSub4Series(config.SeriesFolder)
+	if err != nil {
+		d.logger.Errorln("DownloadSub4Series", err)
+		return err
+	}
+	// 刷新 Emby 的字幕,下载完毕字幕了,就统一刷新一下
+	err = d.downloader.RefreshEmbySubList()
+	if err != nil {
+		d.logger.Errorln("RefreshEmbySubList", err)
+		return err
+	}
+
+	return nil
+}
+
+func (d DownloaderHelper) Stop() {
+	d.downloader.Cancel()
+}

+ 39 - 0
internal/logic/pre_download_process/pre_download_proces.go

@@ -0,0 +1,39 @@
+package pre_download_process
+
+import "errors"
+
+type PreDownloadProcess struct {
+	stageName string
+	gError    error
+}
+
+func NewPreDownloadProcess() *PreDownloadProcess {
+	return &PreDownloadProcess{}
+}
+
+func (p *PreDownloadProcess) Init() *PreDownloadProcess {
+
+	if p.gError != nil {
+		return p
+	}
+	p.stageName = "Init"
+	// do something
+
+	return p
+}
+
+func (p *PreDownloadProcess) Start() *PreDownloadProcess {
+
+	if p.gError != nil {
+		return p
+	}
+	p.stageName = "Start"
+	// do something
+
+	return p
+}
+
+func (p *PreDownloadProcess) Do() error {
+
+	return errors.New(p.stageName + " " + p.gError.Error())
+}

+ 14 - 0
internal/models/advanced_settings.go

@@ -0,0 +1,14 @@
+package models
+
+import "gorm.io/gorm"
+
+type AdvancedSettings struct {
+	gorm.Model
+	DebugMode                  bool     // 是否开启调试模式,这个是写入一个特殊的文件来开启日志的 Debug 输出
+	SaveFullSeasonTmpSubtitles bool     // 保存整季的缓存字幕
+	SubTypePriority            int      // 字幕下载的优先级,0 是自动,1 是 srt 优先,2 是 ass/ssa 优先
+	SubNameFormatter           int      // 字幕命名格式(默认不填写或者超出范围,则为 emby 格式),0,emby 支持的的格式(AAA.chinese(简英,subhd).ass or AAA.chinese(简英,xunlei).default.ass),1常规格式(兼容性更好,AAA.zh.ass or AAA.zh.default.ass)
+	SaveMultiSub               bool     // 保存多个网站的 Top 1 字幕
+	CustomVideoExts            []string // 自定义视频扩展名,是在原有基础上新增。
+	FixTimeLine                bool     // 开启校正字幕时间轴,默认 false
+}

+ 14 - 0
internal/models/common_settings.go

@@ -0,0 +1,14 @@
+package models
+
+import "gorm.io/gorm"
+
+type CommonSettings struct {
+	gorm.Model
+	UseHttpProxy     bool     // 是否使用 http 代理
+	HttpProxyAddress string   // Http 代理地址,内网
+	ScanInterval     string   // 一轮字幕扫描的间隔
+	Threads          int      // 同时扫描的并发数
+	RunScanAtStartUp bool     // 完成引导设置后,下次运行程序就开始扫描
+	MoviePaths       []string // 电影的目录
+	SeriesPaths      []string // 连续剧的目录
+}

+ 8 - 0
internal/models/developer_settings.go

@@ -0,0 +1,8 @@
+package models
+
+import "gorm.io/gorm"
+
+type DeveloperSettings struct {
+	gorm.Model
+	BarkServerUrl string // Bark 服务器的地址
+}

+ 14 - 0
internal/models/emby_settings.go

@@ -0,0 +1,14 @@
+package models
+
+import "gorm.io/gorm"
+
+type EmbySettings struct {
+	gorm.Model
+	Enable                 bool              // 是否启用
+	AddressUrl             string            // 内网服务器的 url
+	APIKey                 string            // API key
+	MaxRequestVideoNumber  int               // 最大请求获取视频的数量
+	SkipWatched            bool              // 是否跳过已经观看的
+	MovieDirectoryMapping  map[string]string // 电影目录的映射,一旦 common setting 的目录修改,需要提示用户确认映射
+	SeriesDirectoryMapping map[string]string // 连续剧目录的映射,一旦 common setting 的目录修改,需要提示用户确认映射
+}