Sfoglia il codice sorgente

调整,统计每个字幕源今日下载次数的时候,需要把当前公网 IP 记录进去,考虑到后续可能对接的 proxy 有负载均衡的功能,不能单一的统一,需要区分。

Signed-off-by: allan716 <[email protected]>
allan716 3 anni fa
parent
commit
10e653e41a

+ 3 - 2
internal/logic/sub_supplier/shooter/shooter.go

@@ -138,7 +138,8 @@ func (s *Supplier) getSubListFromFile(filePath string) ([]supplier.SubInfo, erro
 				continue
 			}
 			// 下载成功需要统计到今天的次数中
-			_, err = task_queue.AddDailyDownloadCount(s.GetSupplierName())
+			_, err = task_queue.AddDailyDownloadCount(s.GetSupplierName(),
+				my_util.GetPublicIP(s.settings.AdvancedSettings.TaskQueue, s.settings.AdvancedSettings.ProxySettings))
 			if err != nil {
 				s.log.Warningln(s.GetSupplierName(), "getSubListFromFile.AddDailyDownloadCount", err)
 			}
@@ -160,7 +161,7 @@ func (s *Supplier) getSubInfos(fileHash, fileName, qLan string) ([]SublistShoote
 
 	var jsonList []SublistShooter
 
-	httpClient := my_util.NewHttpClient(*s.settings.AdvancedSettings.ProxySettings)
+	httpClient := my_util.NewHttpClient(s.settings.AdvancedSettings.ProxySettings)
 	resp, err := httpClient.R().
 		SetFormData(map[string]string{
 			"filehash": fileHash,

+ 4 - 2
internal/logic/sub_supplier/subhd/subhd.go

@@ -88,7 +88,8 @@ func (s *Supplier) IsAlive() bool {
 func (s *Supplier) OverDailyDownloadLimit() bool {
 
 	// 需要查询今天的限额
-	count, err := task_queue.GetDailyDownloadCount(s.GetSupplierName())
+	count, err := task_queue.GetDailyDownloadCount(s.GetSupplierName(),
+		my_util.GetPublicIP(s.settings.AdvancedSettings.TaskQueue, s.settings.AdvancedSettings.ProxySettings))
 	if err != nil {
 		s.log.Errorln(s.GetSupplierName(), "GetDailyDownloadCount", err)
 		return true
@@ -613,7 +614,8 @@ func (s *Supplier) downloadSubFile(browser *rod.Browser, page *rod.Page) (bool,
 	}
 
 	// 下载成功需要统计到今天的次数中
-	_, err = task_queue.AddDailyDownloadCount(s.GetSupplierName())
+	_, err = task_queue.AddDailyDownloadCount(s.GetSupplierName(),
+		my_util.GetPublicIP(s.settings.AdvancedSettings.TaskQueue, s.settings.AdvancedSettings.ProxySettings))
 	if err != nil {
 		s.log.Warningln(s.GetSupplierName(), "getSubListFromFile.AddDailyDownloadCount", err)
 	}

+ 3 - 2
internal/logic/sub_supplier/xunlei/xunlei.go

@@ -161,7 +161,8 @@ func (s *Supplier) getSubListFromFile(filePath string) ([]supplier.SubInfo, erro
 			continue
 		}
 		// 下载成功需要统计到今天的次数中
-		_, err = task_queue.AddDailyDownloadCount(s.GetSupplierName())
+		_, err = task_queue.AddDailyDownloadCount(s.GetSupplierName(),
+			my_util.GetPublicIP(s.settings.AdvancedSettings.TaskQueue, s.settings.AdvancedSettings.ProxySettings))
 		if err != nil {
 			s.log.Warningln(s.GetSupplierName(), "getSubListFromFile.AddDailyDownloadCount", err)
 		}
@@ -181,7 +182,7 @@ func (s *Supplier) getSubListFromFile(filePath string) ([]supplier.SubInfo, erro
 func (s *Supplier) getSubInfos(filePath, cid string) (SublistSliceXunLei, error) {
 	var jsonList SublistSliceXunLei
 
-	httpClient := my_util.NewHttpClient(*s.settings.AdvancedSettings.ProxySettings)
+	httpClient := my_util.NewHttpClient(s.settings.AdvancedSettings.ProxySettings)
 	resp, err := httpClient.R().
 		SetResult(&jsonList).
 		Get(fmt.Sprintf(s.settings.AdvancedSettings.SuppliersSettings.Xunlei.RootUrl, cid))

+ 4 - 2
internal/logic/sub_supplier/zimuku/zimuku.go

@@ -96,7 +96,8 @@ func (s *Supplier) IsAlive() bool {
 func (s *Supplier) OverDailyDownloadLimit() bool {
 
 	// 需要查询今天的限额
-	count, err := task_queue.GetDailyDownloadCount(s.GetSupplierName())
+	count, err := task_queue.GetDailyDownloadCount(s.GetSupplierName(),
+		my_util.GetPublicIP(s.settings.AdvancedSettings.TaskQueue, s.settings.AdvancedSettings.ProxySettings))
 	if err != nil {
 		s.log.Errorln(s.GetSupplierName(), "GetDailyDownloadCount", err)
 		return true
@@ -653,7 +654,8 @@ func (s *Supplier) step3(browser *rod.Browser, subDownloadPageUrl string) (strin
 		s.log.Debugln("Step3,DownFile, FileName:", fileName, "DataLen:", len(fileByte))
 
 		// 下载成功需要统计到今天的次数中
-		_, err = task_queue.AddDailyDownloadCount(s.GetSupplierName())
+		_, err = task_queue.AddDailyDownloadCount(s.GetSupplierName(),
+			my_util.GetPublicIP(s.settings.AdvancedSettings.TaskQueue, s.settings.AdvancedSettings.ProxySettings))
 		if err != nil {
 			s.log.Warningln(s.GetSupplierName(), "getSubListFromFile.AddDailyDownloadCount", err)
 		}

+ 7 - 6
internal/logic/task_queue/daily_download_limit.go

@@ -8,14 +8,14 @@ import (
 
 // GetDailyDownloadCount 根据字幕提供者的名称,获取今日下载计数的次数,仅仅统计次数,并不确认是那个视频的字幕下载
 // whichDay nowTime.Format("2006-01-02")
-func GetDailyDownloadCount(supplierName string, whichDay ...string) (int, error) {
+func GetDailyDownloadCount(supplierName string, publicIP string, whichDay ...string) (int, error) {
 
 	KeyName := ""
 	if len(whichDay) > 0 {
-		KeyName = supplierName + "_" + whichDay[0]
+		KeyName = supplierName + "_" + whichDay[0] + "_" + publicIP
 	} else {
 		nowTime := time.Now()
-		KeyName = supplierName + "_" + nowTime.Format("2006-01-02")
+		KeyName = supplierName + "_" + nowTime.Format("2006-01-02") + "_" + publicIP
 	}
 
 	outCount := 0
@@ -51,14 +51,14 @@ func GetDailyDownloadCount(supplierName string, whichDay ...string) (int, error)
 }
 
 // AddDailyDownloadCount 根据字幕提供者的名称,今日下载计数的次数+1,仅仅统计次数,并不确认是那个视频的字幕下载。TTL 多加 5s 确保今天过去(暂时去除 TTL)
-func AddDailyDownloadCount(supplierName string, whichDay ...string) (int, error) {
+func AddDailyDownloadCount(supplierName string, publicIP string, whichDay ...string) (int, error) {
 
 	nowTime := time.Now()
 	// 今天剩余的时间(s)
 	//restOfDaySecond := my_util.GetRestOfDaySec()
-	KeyName := supplierName + "_" + nowTime.Format("2006-01-02")
+	KeyName := supplierName + "_" + nowTime.Format("2006-01-02") + "_" + publicIP
 
-	dailyDownloadCount, err := GetDailyDownloadCount(supplierName, whichDay...)
+	dailyDownloadCount, err := GetDailyDownloadCount(supplierName, publicIP, whichDay...)
 	if err != nil {
 		return 0, err
 	}
@@ -89,6 +89,7 @@ func AddDailyDownloadCount(supplierName string, whichDay ...string) (int, error)
 	return dailyDownloadCount, nil
 }
 
+// DelDailyDownloadCount 不是定版。这里需要搜索前缀去删除,因为引入了 Public IP 的分类
 func DelDailyDownloadCount(supplierName string, whichDay ...string) error {
 
 	KeyName := ""

+ 7 - 7
internal/logic/task_queue/daily_download_limit_test.go

@@ -29,7 +29,7 @@ func TestGetDailyDownloadCount(t *testing.T) {
 	for _, tt := range tests {
 		t.Run(tt.name, func(t *testing.T) {
 
-			got, err := GetDailyDownloadCount(tt.args.supplierName, tt.args.whichDay...)
+			got, err := GetDailyDownloadCount(tt.args.supplierName, "", tt.args.whichDay...)
 			if (err != nil) != tt.wantErr {
 				t.Errorf("GetDailyDownloadCount() error = %v, wantErr %v", err, tt.wantErr)
 				return
@@ -58,7 +58,7 @@ func TestAddDailyDownloadCount(t *testing.T) {
 	for _, tt := range tests {
 		t.Run(tt.name, func(t *testing.T) {
 
-			got, err := AddDailyDownloadCount(tt.args.supplierName)
+			got, err := AddDailyDownloadCount(tt.args.supplierName, "")
 			if (err != nil) != tt.wantErr {
 				t.Errorf("AddDailyDownloadCount() error = %v, wantErr %v", err, tt.wantErr)
 				return
@@ -67,7 +67,7 @@ func TestAddDailyDownloadCount(t *testing.T) {
 				t.Errorf("AddDailyDownloadCount() got = %v, want %v", got, tt.want)
 			}
 
-			got, err = AddDailyDownloadCount(tt.args.supplierName)
+			got, err = AddDailyDownloadCount(tt.args.supplierName, "")
 			if (err != nil) != tt.wantErr {
 				t.Errorf("AddDailyDownloadCount() error = %v, wantErr %v", err, tt.wantErr)
 				return
@@ -86,12 +86,12 @@ func TestAddDailyDownloadCount(t *testing.T) {
 
 func TestAddGetDailyDownloadCount(t *testing.T) {
 
-	addCount, err := AddDailyDownloadCount(supplieName)
+	addCount, err := AddDailyDownloadCount(supplieName, "")
 	if err != nil {
 		t.Fatalf(err.Error())
 	}
 
-	getDailyDownloadCount, err := GetDailyDownloadCount(supplieName)
+	getDailyDownloadCount, err := GetDailyDownloadCount(supplieName, "")
 	if err != nil {
 		t.Fatalf(err.Error())
 	}
@@ -100,12 +100,12 @@ func TestAddGetDailyDownloadCount(t *testing.T) {
 		t.Fatalf("not the same")
 	}
 
-	addCount, err = AddDailyDownloadCount(supplieName)
+	addCount, err = AddDailyDownloadCount(supplieName, "")
 	if err != nil {
 		t.Fatalf(err.Error())
 	}
 
-	getDailyDownloadCount, err = GetDailyDownloadCount(supplieName)
+	getDailyDownloadCount, err = GetDailyDownloadCount(supplieName, "")
 	if err != nil {
 		t.Fatalf(err.Error())
 	}

+ 7 - 7
internal/pkg/my_util/util.go

@@ -32,11 +32,11 @@ import (
 )
 
 // NewHttpClient 新建一个 resty 的对象
-func NewHttpClient(_proxySettings ...settings.ProxySettings) *resty.Client {
+func NewHttpClient(_proxySettings ...*settings.ProxySettings) *resty.Client {
 	//const defUserAgent = "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_8; en-us) AppleWebKit/534.50 (KHTML, like Gecko) Version/5.1 Safari/534.50"
 	//const defUserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.77 Safari/537.36 Edg/91.0.864.41"
 
-	var proxySettings settings.ProxySettings
+	var proxySettings *settings.ProxySettings
 	var HttpProxy, UserAgent, Referer string
 
 	if len(_proxySettings) > 0 {
@@ -73,7 +73,7 @@ func NewHttpClient(_proxySettings ...settings.ProxySettings) *resty.Client {
 	return httpClient
 }
 
-func GetPublicIP(queue *settings.TaskQueue, _proxySettings ...settings.ProxySettings) (string, error) {
+func GetPublicIP(queue *settings.TaskQueue, _proxySettings ...*settings.ProxySettings) string {
 
 	var client *resty.Client
 	if len(_proxySettings) > 0 {
@@ -88,14 +88,14 @@ func GetPublicIP(queue *settings.TaskQueue, _proxySettings ...settings.ProxySett
 	}
 	response, err := client.R().Get(targetSite)
 	if err != nil {
-		return "", err
+		return ""
 	}
-	return response.String(), err
+	return response.String()
 }
 
 // DownFile 从指定的 url 下载文件
-func DownFile(l *logrus.Logger, urlStr string, _proxySettings ...settings.ProxySettings) ([]byte, string, error) {
-	var proxySettings settings.ProxySettings
+func DownFile(l *logrus.Logger, urlStr string, _proxySettings ...*settings.ProxySettings) ([]byte, string, error) {
+	var proxySettings *settings.ProxySettings
 	if len(_proxySettings) > 0 {
 		proxySettings = _proxySettings[0]
 	}