Parcourir la source

1. 并发进行字幕源有效性的检测
2. 增加日志和修复代码 error 判断问题

Signed-off-by: allan716 <[email protected]>

allan716 il y a 2 ans
Parent
commit
960374d086

+ 4 - 1
internal/backend/backend.go

@@ -2,6 +2,7 @@ package backend
 
 import (
 	"context"
+	"errors"
 	"fmt"
 	"github.com/ChineseSubFinder/ChineseSubFinder/pkg/logic/pre_job"
 	"io/ioutil"
@@ -111,7 +112,7 @@ func (b *BackEnd) start() {
 	// 启动 http server
 	go func() {
 		b.logger.Infoln("Try Start Http Server At Port", b.httpPort)
-		if err := b.srv.ListenAndServe(); err != nil && err != http.ErrServerClosed {
+		if err := b.srv.ListenAndServe(); err != nil && errors.Is(err, http.ErrServerClosed) == false {
 			b.logger.Errorln("Start Server Error:", err)
 		}
 		defer func() {
@@ -180,6 +181,8 @@ func (b *BackEnd) doPreJob() {
 		if pkg.LiteMode() == false {
 			return
 		}
+		b.logger.Infoln("Setup is Done")
+		b.logger.Infoln("PreJob Will Start...")
 		// 不启用 Chrome 相关操作
 		err := b.preJob.HotFix().ChangeSubNameFormat().Wait()
 		if err != nil {

+ 23 - 11
pkg/logic/sub_supplier/subSupplierHub.go

@@ -2,6 +2,7 @@ package sub_supplier
 
 import (
 	"path/filepath"
+	"sync"
 
 	"github.com/ChineseSubFinder/ChineseSubFinder/pkg/media_info_dealers"
 
@@ -21,6 +22,7 @@ import (
 type SubSupplierHub struct {
 	log       *logrus.Logger
 	Suppliers []ifaces.ISupplier
+	locker    sync.Mutex
 }
 
 func NewSubSupplierHub(one ifaces.ISupplier, _inSupplier ...ifaces.ISupplier) *SubSupplierHub {
@@ -186,22 +188,32 @@ func (d *SubSupplierHub) CheckSubSiteStatus() backend.ReplyCheckStatus {
 		SubSiteStatus: make([]backend.SiteStatus, 0),
 	}
 
+	var wg sync.WaitGroup
+
 	// 测试提供字幕的网站是有效的
 	d.log.Infoln("Check Sub Supplier Start...")
 	for _, supplier := range d.Suppliers {
-		bAlive, speed := supplier.CheckAlive()
-		if bAlive == false {
-			d.log.Warningln(supplier.GetSupplierName(), "Check Alive = false")
-		} else {
-			d.log.Infoln(supplier.GetSupplierName(), "Check Alive = true, Speed =", speed, "ms")
-		}
+		wg.Add(1)
+		go func(supplier ifaces.ISupplier) {
+			defer wg.Done()
+			bAlive, speed := supplier.CheckAlive()
+			if bAlive == false {
+				d.log.Warningln(supplier.GetSupplierName(), "Check Alive = false")
+			} else {
+				d.log.Infoln(supplier.GetSupplierName(), "Check Alive = true, Speed =", speed, "ms")
+			}
 
-		outStatus.SubSiteStatus = append(outStatus.SubSiteStatus, backend.SiteStatus{
-			Name:  supplier.GetSupplierName(),
-			Valid: bAlive,
-			Speed: speed,
-		})
+			d.locker.Lock()
+			outStatus.SubSiteStatus = append(outStatus.SubSiteStatus, backend.SiteStatus{
+				Name:  supplier.GetSupplierName(),
+				Valid: bAlive,
+				Speed: speed,
+			})
+			d.locker.Unlock()
+		}(supplier)
 	}
+	// 等待所有的检测完成
+	wg.Wait()
 
 	suppliersLen := len(d.Suppliers)
 	for i := 0; i < suppliersLen; {

+ 1 - 1
pkg/sub_formatter/sub_format_changer.go

@@ -263,7 +263,7 @@ func SubFormatChangerProcess(log *logrus.Logger, movieRootDirs []string, seriesR
 		return RenameResults{}, errors.New(fmt.Sprintf("SubFormatChangerProcess dao.GetDb().First return nil"))
 	}
 	if re.Error != nil {
-		if re.Error != gorm.ErrRecordNotFound {
+		if errors.Is(re.Error, gorm.ErrRecordNotFound) == false {
 			return RenameResults{}, errors.New(fmt.Sprintf("SubFormatChangerProcess dao.GetDb().First, %v", re.Error))
 		}
 	}