Browse Source

修复等程序开启运行后,每次登录的时候获取 GetNoPasswordSettings 时候都会关闭一次代理的问题,可能会导致下载故障

Signed-off-by: allan716 <[email protected]>
allan716 3 years ago
parent
commit
ac68a6f6ed
3 changed files with 39 additions and 20 deletions
  1. 1 0
      pkg/downloader/queue_local.go
  2. 9 3
      pkg/settings/settings.go
  3. 29 17
      pkg/tmdb_api/tmdb.go

+ 1 - 0
pkg/downloader/queue_local.go

@@ -44,6 +44,7 @@ func (d *Downloader) queueDownloaderLocal() {
 	// --------------------------------------------------
 	{
 		// 需要判断这个任务是否需要跳过,但是如果这个任务的优先级很高,那么就不跳过
+		// 正常任务是 5,插队任务是3,一次性任务是 0.
 		if oneJob.TaskPriority > task_queue.HighTaskPriorityLevel {
 			// 说明优先级不高,需要进行判断
 			videoType := 0

+ 9 - 3
pkg/settings/settings.go

@@ -8,7 +8,6 @@ import (
 	"sync"
 
 	"github.com/allanpk716/ChineseSubFinder/pkg/strcut_json"
-	"github.com/huandu/go-clone"
 )
 
 type Settings struct {
@@ -77,6 +76,7 @@ func SetFullNewSettings(inSettings *Settings) error {
 	return _settings.Save()
 }
 
+// SetConfigRootPath 需要先设置这个信息再调用 GetSettings
 func SetConfigRootPath(configRootPath string) {
 	_configRootPath = configRootPath
 }
@@ -126,8 +126,14 @@ func (s *Settings) Save() error {
 
 func (s *Settings) GetNoPasswordSettings() *Settings {
 
-	_ = s.AdvancedSettings.ProxySettings.CloseLocalHttpProxyServer()
-	nowSettings := clone.Clone(s).(*Settings)
+	nowSettings := NewSettings(_configRootPath)
+	err := nowSettings.Read()
+	if err != nil {
+		panic("Can't Read Config File:" + configName + " Error: " + err.Error())
+	}
+	// 需要关闭本地代理的实例,否则无法进行 clone 操作
+	//_ = s.AdvancedSettings.ProxySettings.CloseLocalHttpProxyServer()
+	//nowSettings := clone.Clone(s).(*Settings)
 	nowSettings.UserInfo.Password = noPassword4Show
 	return nowSettings
 }

+ 29 - 17
pkg/tmdb_api/tmdb.go

@@ -2,18 +2,19 @@ package tmdb_api
 
 import (
 	"fmt"
+	"github.com/allanpk716/ChineseSubFinder/pkg"
 	"strconv"
 
-	"github.com/allanpk716/ChineseSubFinder/pkg"
 	"github.com/allanpk716/ChineseSubFinder/pkg/settings"
 	tmdb "github.com/cyruzin/golang-tmdb"
 	"github.com/sirupsen/logrus"
 )
 
 type TmdbApi struct {
-	l          *logrus.Logger
-	apiKey     string
-	tmdbClient *tmdb.Client
+	l             *logrus.Logger
+	apiKey        string
+	tmdbClient    *tmdb.Client
+	proxySettings *settings.ProxySettings
 }
 
 func NewTmdbHelper(l *logrus.Logger, apiKey string, _proxySettings ...*settings.ProxySettings) (*TmdbApi, error) {
@@ -23,19 +24,19 @@ func NewTmdbHelper(l *logrus.Logger, apiKey string, _proxySettings ...*settings.
 		err = fmt.Errorf("error initializing tmdb client: %s", err)
 		return nil, err
 	}
-	// 获取 http client 实例
-	restyClient, err := pkg.NewHttpClient(_proxySettings...)
-	if err != nil {
-		err = fmt.Errorf("error initializing resty client: %s", err)
-		return nil, err
+
+	var nowProxy *settings.ProxySettings
+	if _proxySettings != nil && len(_proxySettings) > 0 {
+		nowProxy = _proxySettings[0]
 	}
-	tmdbClient.SetClientConfig(*restyClient.GetClient())
-	tmdbClient.SetClientAutoRetry()
-	return &TmdbApi{
-		l:          l,
-		apiKey:     apiKey,
-		tmdbClient: tmdbClient,
-	}, nil
+	t := TmdbApi{
+		l:             l,
+		apiKey:        apiKey,
+		tmdbClient:    tmdbClient,
+		proxySettings: nowProxy,
+	}
+	t.setClientConfig()
+	return &t, nil
 }
 
 func (t *TmdbApi) Alive() bool {
@@ -47,7 +48,7 @@ func (t *TmdbApi) Alive() bool {
 		t.l.Errorln("GetSearchMulti", err)
 		return false
 	}
-	t.l.Infoln("GetSearchMulti TotalResults:", searchMulti.TotalResults)
+	t.l.Infoln("Tmdb Api is Alive", searchMulti.TotalResults)
 	return true
 }
 
@@ -200,6 +201,17 @@ func (t *TmdbApi) ConvertId(iD string, idType string, isMovieOrSeries bool) (con
 	}
 }
 
+func (t *TmdbApi) setClientConfig() {
+	// 获取 http client 实例
+	restyClient, err := pkg.NewHttpClient(t.proxySettings)
+	if err != nil {
+		err = fmt.Errorf("error initializing resty client: %s", err)
+		return
+	}
+	t.tmdbClient.SetClientConfig(*restyClient.GetClient())
+	t.tmdbClient.SetClientAutoRetry()
+}
+
 const (
 	ImdbID = "imdb_id"
 	TmdbID = "tmdb_id"