Procházet zdrojové kódy

修复与 web 对接的问题

Signed-off-by: allan716 <[email protected]>
allan716 před 3 roky
rodič
revize
7efe20b95e

+ 1 - 1
internal/backend/ws_helper/client.go

@@ -26,7 +26,7 @@ const (
 	maxMessageSize = 5 * 1024
 
 	// 发送 chan 的队列长度
-	bufSize = 1
+	bufSize = 5 * 1024
 
 	upGraderReadBufferSize = 5 * 1024
 

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

@@ -157,6 +157,23 @@ func (ch *CronHelper) coreSubDownloadProcess() {
 	ch.fullSubDownloadProcessing = true
 	ch.fullSubDownloadProcessingLock.Unlock()
 
+	// ------------------------------------------------------------------------
+	// 如果是 Debug 模式,那么就需要写入特殊文件
+	if settings.GetSettings().AdvancedSettings.DebugMode == true {
+		err := log_helper.WriteDebugFile()
+		if err != nil {
+			log_helper.GetLogger().Errorln("log_helper.WriteDebugFile " + err.Error())
+		}
+		log_helper.GetLogger(true).Infoln("Reload Log Settings, level = Debug")
+	} else {
+		err := log_helper.DeleteDebugFile()
+		if err != nil {
+			log_helper.GetLogger().Errorln("log_helper.DeleteDebugFile " + err.Error())
+		}
+		log_helper.GetLogger(true).Infoln("Reload Log Settings, level = Info")
+	}
+	// ------------------------------------------------------------------------
+	// 开始标记,这个是单次扫描的开始
 	log_helper.GetLogger().Infoln(log_helper.OnceSubsScanStart)
 
 	// 扫描字幕任务开始,先是扫描阶段,那么是拿不到有多少视频需要扫描的数量的

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

@@ -55,23 +55,6 @@ func (p *PreDownloadProcess) Init() *PreDownloadProcess {
 	// 清理通知中心
 	notify_center.Notify.Clear()
 	// ------------------------------------------------------------------------
-	// 如果是 Debug 模式,那么就需要写入特殊文件
-	if settings.GetSettings().AdvancedSettings.DebugMode == true {
-		err := log_helper.WriteDebugFile()
-		if err != nil {
-			p.gError = errors.New("log_helper.WriteDebugFile " + err.Error())
-			return p
-		}
-		log_helper.GetLogger(true).Infoln("Reload Log Settings, level = Debug")
-	} else {
-		err := log_helper.DeleteDebugFile()
-		if err != nil {
-			p.gError = errors.New("log_helper.DeleteDebugFile " + err.Error())
-			return p
-		}
-		log_helper.GetLogger(true).Infoln("Reload Log Settings, level = Info")
-	}
-	// ------------------------------------------------------------------------
 	// 获取验证码
 	updateTimeString, code, err := something_static.GetCodeFromWeb()
 	if err != nil {

+ 1 - 1
internal/logic/sub_supplier/subhd/subhd.go

@@ -486,7 +486,7 @@ func (s Supplier) downloadSubFile(browser *rod.Browser, page *rod.Page) (bool, *
 	fileName := ""
 	fileByte := []byte{0}
 	err = rod.Try(func() {
-		tmpDir := filepath.Join(global_value.DefRodTmpRootFolder, "downloads")
+		tmpDir := filepath.Join(global_value.DefTmpFolder, "downloads")
 		wait := browser.WaitDownload(tmpDir)
 		getDownloadFile := func() ([]byte, string, error) {
 			info := wait()

+ 8 - 6
internal/pkg/downloader/downloader.go

@@ -251,11 +251,9 @@ func (d *Downloader) DownloadSub4Movie() error {
 	// 一个视频文件同时多个站点查询,阻塞完毕后,在进行下一个
 	for i, oneVideoFullPath := range d.movieFileFullPathList {
 
-		// 设置任务的状态
-		pkgcommon.SetSubScanJobStatusScanMovie(i+1, len(d.movieFileFullPathList), filepath.Base(oneVideoFullPath))
-
 		err = d.taskControl.Invoke(&task_control.TaskData{
 			Index: i,
+			Count: len(d.movieFileFullPathList),
 			DataEx: DownloadInputData{
 				OneVideoFullPath: oneVideoFullPath,
 			},
@@ -362,11 +360,9 @@ func (d *Downloader) DownloadSub4Series() error {
 	seriesDirMap.Each(func(seriesRootPathName interface{}, seriesNames interface{}) {
 		for _, seriesName := range seriesNames.([]string) {
 
-			// 设置任务的状态
-			pkgcommon.SetSubScanJobStatusScanSeriesMain(seriesCount+1, len(seriesNames.([]string)), seriesName)
-
 			err = d.taskControl.Invoke(&task_control.TaskData{
 				Index: seriesCount,
+				Count: len(seriesNames.([]string)),
 				DataEx: DownloadInputData{
 					RootDirPath:   seriesRootPathName.(string),
 					OneSeriesPath: seriesName,
@@ -439,6 +435,8 @@ func (d *Downloader) movieDlFunc(ctx context.Context, inData interface{}) error
 
 	taskData := inData.(*task_control.TaskData)
 	downloadInputData := taskData.DataEx.(DownloadInputData)
+	// 设置任务的状态
+	pkgcommon.SetSubScanJobStatusScanMovie(taskData.Index+1, taskData.Count, filepath.Base(downloadInputData.OneVideoFullPath))
 	// -----------------------------------------------------
 	// 字幕都下载缓存好了,需要抉择存哪一个,优先选择中文双语的,然后到中文
 	organizeSubFiles, err := d.subSupplierHub.DownloadSub4Movie(downloadInputData.OneVideoFullPath, taskData.Index, d.needForcedScanAndDownSub)
@@ -469,6 +467,10 @@ func (d *Downloader) seriesDlFunc(ctx context.Context, inData interface{}) error
 	// 这里拿到了这一部连续剧的所有的剧集信息,以及所有下载到的字幕信息
 	var seriesInfo *series.SeriesInfo
 	var organizeSubFiles map[string][]string
+
+	// 设置任务的状态
+	pkgcommon.SetSubScanJobStatusScanSeriesMain(taskData.Index+1, taskData.Count, downloadInputData.OneSeriesPath)
+
 	// 优先判断特殊的操作
 	if d.needForcedScanAndDownSub == true {
 		// 全盘扫描

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

@@ -15,6 +15,7 @@ var (
 	DefTmpFolder         = ""
 	DefRodTmpRootFolder  = ""
 	DefSubFixCacheFolder = ""
+	AdblockTmpFolder     = ""
 	WantedExtMap         = make(map[string]string) // 人工确认的需要监控的视频后缀名
 	DefExtMap            = make(map[string]string) // 内置支持的视频后缀名列表
 	CustomVideoExts      = make([]string, 0)       // 用户额外自定义的视频后缀名列表

+ 54 - 0
internal/pkg/my_util/folder.go

@@ -43,6 +43,11 @@ func Init() error {
 		log_helper.GetLogger().Panicln("GetRootTmpFolder", err)
 	}
 
+	global_value.AdblockTmpFolder, err = GetPluginFolderByName(Plugin_Adblock)
+	if err != nil {
+		log_helper.GetLogger().Panicln("GetPluginFolderByName", Plugin_Adblock, err)
+	}
+
 	return nil
 }
 
@@ -180,6 +185,50 @@ func ClearRootTmpFolder() error {
 	return nil
 }
 
+// --------------------------------------------------------------
+// Adblock Cache
+// --------------------------------------------------------------
+
+// GetPluginRootFolder 在程序的根目录新建,取缓用文件夹,每一个视频的缓存将在其中额外新建子集文件夹
+func GetPluginRootFolder() (string, error) {
+
+	nowProcessRoot, err := os.Getwd()
+	if err != nil {
+		return "", err
+	}
+	nowProcessRoot = filepath.Join(nowProcessRoot, cacheRootFolderName, PluginFolder)
+	err = os.MkdirAll(nowProcessRoot, os.ModePerm)
+	if err != nil {
+		return "", err
+	}
+	return nowProcessRoot, err
+}
+
+// GetPluginFolderByName 获取缓存的文件夹,没有则新建
+func GetPluginFolderByName(folderName string) (string, error) {
+	rootPath, err := GetPluginRootFolder()
+	if err != nil {
+		return "", err
+	}
+	tmpFolderFullPath := filepath.Join(rootPath, folderName)
+	err = os.MkdirAll(tmpFolderFullPath, os.ModePerm)
+	if err != nil {
+		return "", err
+	}
+	return tmpFolderFullPath, nil
+}
+
+// ClearPluginFolderByName 清理指定的缓存文件夹
+func ClearPluginFolderByName(folderName string) error {
+
+	nowTmpFolder, err := GetPluginFolderByName(folderName)
+	if err != nil {
+		return err
+	}
+
+	return ClearFolder(nowTmpFolder)
+}
+
 // --------------------------------------------------------------
 // Rod Cache
 // --------------------------------------------------------------
@@ -390,10 +439,15 @@ const (
 	cacheRootFolderName = "cache"           // 缓存文件夹总名称
 	TmpFolder           = "tmp"             // 临时缓存的文件夹
 	RodCacheFolder      = "rod"             // rod 的缓存目录
+	PluginFolder        = "Plugin"          // 插件的目录
 	DebugFolder         = "CSF-DebugThings" // 调试相关的文件夹
 	SubFixCacheFolder   = "CSF-SubFixCache" // 字幕时间校正的缓存文件夹,一般可以不清理
 )
 
+const (
+	Plugin_Adblock = "adblock"
+)
+
 // 配置文件的位置信息,这个会根据系统版本做区分
 const (
 	configDirRootFPathWindows = "."                         // Windows 就是在当前的程序目录

+ 1 - 1
internal/pkg/rod_helper/rodHelper.go

@@ -190,7 +190,7 @@ func releaseAdblock() (string, error) {
 
 	log_helper.GetLogger().Infoln("releaseAdblock start")
 
-	adblockFolderPath := filepath.Join(global_value.DefTmpFolder, "chinesesubfinder")
+	adblockFolderPath := global_value.AdblockTmpFolder
 	err := os.MkdirAll(filepath.Join(adblockFolderPath), os.ModePerm)
 	if err != nil {
 		return "", err

+ 4 - 3
internal/pkg/task_control/task_control.go

@@ -272,9 +272,10 @@ func (tc *TaskControl) setTaskDataStatus(taskData *TaskData, status TaskState) {
 }
 
 type TaskData struct {
-	Index  int
-	Status TaskState // 执行情况, 0 是成功,1 是未执行,2 是错误或者超时
-	DataEx interface{}
+	Index  int         // 第几个任务
+	Count  int         // 总任务的数量
+	Status TaskState   // 执行情况, 0 是成功,1 是未执行,2 是错误或者超时
+	DataEx interface{} // 需要传递到执行函数中的数据
 }
 
 type TaskState int