瀏覽代碼

开放常规扫描和 Emby 扫描的线程数设置

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

+ 1 - 3
internal/logic/emby_helper/embyhelper.go

@@ -28,7 +28,6 @@ type EmbyHelper struct {
 	embyApi  *embyHelper.EmbyApi
 	log      *logrus.Logger
 	settings *settings.Settings
-	threads  int
 	timeOut  time.Duration
 	listLock sync.Mutex
 }
@@ -36,7 +35,6 @@ type EmbyHelper struct {
 func NewEmbyHelper(_log *logrus.Logger, _settings *settings.Settings) *EmbyHelper {
 	em := EmbyHelper{log: _log, settings: _settings}
 	em.embyApi = embyHelper.NewEmbyApi(_log, _settings.EmbySettings)
-	em.threads = 6
 	em.timeOut = 60 * time.Second
 	return &em
 }
@@ -654,7 +652,7 @@ func (em *EmbyHelper) getMoreVideoInfoList(videoIdList []string, isMovieOrSeries
 	}
 
 	// em.threads
-	p, err := ants.NewPoolWithFunc(em.threads, func(inData interface{}) {
+	p, err := ants.NewPoolWithFunc(em.settings.EmbySettings.Threads, func(inData interface{}) {
 		data := inData.(InputData)
 		defer data.Wg.Done()
 		ctx, cancel := context.WithTimeout(context.Background(), em.timeOut)

+ 2 - 4
internal/pkg/emby_api/emby_api.go

@@ -16,7 +16,6 @@ import (
 type EmbyApi struct {
 	log        *logrus.Logger
 	embyConfig *settings.EmbySettings
-	threads    int
 	timeOut    time.Duration
 	client     *resty.Client
 }
@@ -28,7 +27,6 @@ func NewEmbyApi(log *logrus.Logger, embyConfig *settings.EmbySettings) *EmbyApi
 	// 检查是否超过范围
 	em.embyConfig.Check()
 	// 强制设置
-	em.threads = 6
 	em.timeOut = 5 * 60 * time.Second
 	// 见 https://github.com/allanpk716/ChineseSubFinder/issues/140
 	em.client = resty.New().SetTransport(&http.Transport{
@@ -40,7 +38,7 @@ func NewEmbyApi(log *logrus.Logger, embyConfig *settings.EmbySettings) *EmbyApi
 }
 
 // RefreshRecentlyVideoInfo 字幕下载完毕一次,就可以触发一次这个。并发 6 线程去刷新
-func (em EmbyApi) RefreshRecentlyVideoInfo() error {
+func (em *EmbyApi) RefreshRecentlyVideoInfo() error {
 	items, err := em.GetRecentlyItems()
 	if err != nil {
 		return err
@@ -52,7 +50,7 @@ func (em EmbyApi) RefreshRecentlyVideoInfo() error {
 		tmpId := i.(string)
 		return em.UpdateVideoSubList(tmpId)
 	}
-	p, err := ants.NewPoolWithFunc(em.threads, func(inData interface{}) {
+	p, err := ants.NewPoolWithFunc(em.embyConfig.Threads, func(inData interface{}) {
 		data := inData.(InputData)
 		defer data.Wg.Done()
 		ctx, cancel := context.WithTimeout(context.Background(), em.timeOut)

+ 7 - 1
internal/pkg/settings/emby_settings.go

@@ -13,6 +13,7 @@ type EmbySettings struct {
 	MoviePathsMapping     map[string]string `json:"movie_paths_mapping"`      // 电影目录的映射,一旦 common setting 的目录修改,需要提示用户确认映射
 	SeriesPathsMapping    map[string]string `json:"series_paths_mapping"`     // 连续剧目录的映射,一旦 common setting 的目录修改,需要提示用户确认映射
 	AutoOrManual          bool              `json:"auto_or_manual"`           // 自动或手动模式,自动 IMDB ID 匹配,还是使用手动目录
+	Threads               int               `json:"threads"`                  // 同时扫描的并发数
 }
 
 func NewEmbySettings() *EmbySettings {
@@ -20,13 +21,18 @@ func NewEmbySettings() *EmbySettings {
 		MaxRequestVideoNumber: 500,
 		MoviePathsMapping:     make(map[string]string, 0),
 		SeriesPathsMapping:    make(map[string]string, 0),
+		Threads:               4,
 	}
 }
 
-func (e EmbySettings) Check() {
+func (e *EmbySettings) Check() {
 	if e.MaxRequestVideoNumber < common.EmbyApiGetItemsLimitMin ||
 		e.MaxRequestVideoNumber > common.EmbyApiGetItemsLimitMax {
 
 		e.MaxRequestVideoNumber = common.EmbyApiGetItemsLimitMin
 	}
+
+	if e.Threads < 1 || e.Threads > 6 {
+		e.Threads = 6
+	}
 }

+ 2 - 4
internal/pkg/settings/settings.go

@@ -127,10 +127,8 @@ func (s *Settings) Check() {
 		s.CommonSettings.Threads = 1
 	} else {
 		// 并发线程的范围控制
-		if s.CommonSettings.Threads <= 0 {
-			s.CommonSettings.Threads = 1
-		} else if s.CommonSettings.Threads >= 1 {
-			s.CommonSettings.Threads = 1
+		if s.CommonSettings.Threads <= 0 || s.CommonSettings.Threads > 6 {
+			s.CommonSettings.Threads = 6
 		}
 	}
 }

+ 1 - 1
internal/pkg/video_scan_and_refresh_helper/video_scan_and_refresh_helper.go

@@ -52,7 +52,7 @@ func NewVideoScanAndRefreshHelper(fileDownloader *file_downloader.FileDownloader
 		)}
 
 	var err error
-	v.taskControl, err = task_control.NewTaskControl(4, v.log)
+	v.taskControl, err = task_control.NewTaskControl(fileDownloader.Settings.CommonSettings.Threads, v.log)
 	if err != nil {
 		fileDownloader.Log.Panicln(err)
 	}