mirror of https://github.com/Xhofe/alist
parent
4c0cffd29b
commit
2dec756f23
|
@ -14,7 +14,6 @@ import (
|
||||||
log "github.com/sirupsen/logrus"
|
log "github.com/sirupsen/logrus"
|
||||||
"golang.org/x/oauth2"
|
"golang.org/x/oauth2"
|
||||||
"net/http"
|
"net/http"
|
||||||
"regexp"
|
|
||||||
"strconv"
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
)
|
)
|
||||||
|
@ -49,7 +48,6 @@ func (d *PikPak) Init(ctx context.Context) (err error) {
|
||||||
d.Common.CaptchaToken = token
|
d.Common.CaptchaToken = token
|
||||||
op.MustSaveDriverStorage(d)
|
op.MustSaveDriverStorage(d)
|
||||||
},
|
},
|
||||||
LowLatencyAddr: "",
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -138,14 +136,6 @@ func (d *PikPak) Init(ctx context.Context) (err error) {
|
||||||
d.Addition.RefreshToken = d.RefreshToken
|
d.Addition.RefreshToken = d.RefreshToken
|
||||||
op.MustSaveDriverStorage(d)
|
op.MustSaveDriverStorage(d)
|
||||||
|
|
||||||
if d.UseLowLatencyAddress && d.Addition.CustomLowLatencyAddress != "" {
|
|
||||||
d.Common.LowLatencyAddr = d.Addition.CustomLowLatencyAddress
|
|
||||||
} else if d.UseLowLatencyAddress {
|
|
||||||
d.Common.LowLatencyAddr = findLowestLatencyAddress(DlAddr)
|
|
||||||
d.Addition.CustomLowLatencyAddress = d.Common.LowLatencyAddr
|
|
||||||
op.MustSaveDriverStorage(d)
|
|
||||||
}
|
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -188,12 +178,6 @@ func (d *PikPak) Link(ctx context.Context, file model.Obj, args model.LinkArgs)
|
||||||
url = resp.Medias[0].Link.Url
|
url = resp.Medias[0].Link.Url
|
||||||
}
|
}
|
||||||
|
|
||||||
if d.UseLowLatencyAddress && d.Common.LowLatencyAddr != "" {
|
|
||||||
// 替换为加速链接
|
|
||||||
re := regexp.MustCompile(`https://[^/]+/download/`)
|
|
||||||
url = re.ReplaceAllString(url, "https://"+d.Common.LowLatencyAddr+"/download/")
|
|
||||||
}
|
|
||||||
|
|
||||||
return &model.Link{
|
return &model.Link{
|
||||||
URL: url,
|
URL: url,
|
||||||
}, nil
|
}, nil
|
||||||
|
|
|
@ -9,14 +9,12 @@ type Addition struct {
|
||||||
driver.RootID
|
driver.RootID
|
||||||
Username string `json:"username" required:"true"`
|
Username string `json:"username" required:"true"`
|
||||||
Password string `json:"password" required:"true"`
|
Password string `json:"password" required:"true"`
|
||||||
Platform string `json:"platform" required:"true" type:"select" options:"android,web,pc"`
|
Platform string `json:"platform" required:"true" default:"web" type:"select" options:"android,web,pc"`
|
||||||
RefreshToken string `json:"refresh_token" required:"true" default:""`
|
RefreshToken string `json:"refresh_token" required:"true" default:""`
|
||||||
RefreshTokenMethod string `json:"refresh_token_method" required:"true" type:"select" options:"oauth2,http"`
|
RefreshTokenMethod string `json:"refresh_token_method" required:"true" type:"select" options:"oauth2,http"`
|
||||||
CaptchaToken string `json:"captcha_token" default:""`
|
CaptchaToken string `json:"captcha_token" default:""`
|
||||||
DeviceID string `json:"device_id" required:"false" default:""`
|
DeviceID string `json:"device_id" required:"false" default:""`
|
||||||
DisableMediaLink bool `json:"disable_media_link" default:"true"`
|
DisableMediaLink bool `json:"disable_media_link" default:"true"`
|
||||||
UseLowLatencyAddress bool `json:"use_low_latency_address" default:"false"`
|
|
||||||
CustomLowLatencyAddress string `json:"custom_low_latency_address" default:""`
|
|
||||||
}
|
}
|
||||||
|
|
||||||
var config = driver.Config{
|
var config = driver.Config{
|
||||||
|
|
|
@ -30,32 +30,34 @@ import (
|
||||||
// do others that not defined in Driver interface
|
// do others that not defined in Driver interface
|
||||||
|
|
||||||
var AndroidAlgorithms = []string{
|
var AndroidAlgorithms = []string{
|
||||||
"aDhgaSE3MsjROCmpmsWqP1sJdFJ",
|
"7xOq4Z8s",
|
||||||
"+oaVkqdd8MJuKT+uMr2AYKcd9tdWge3XPEPR2hcePUknd",
|
"QE9/9+IQco",
|
||||||
"u/sd2GgT2fTytRcKzGicHodhvIltMntA3xKw2SRv7S48OdnaQIS5mn",
|
"WdX5J9CPLZp",
|
||||||
"2WZiae2QuqTOxBKaaqCNHCW3olu2UImelkDzBn",
|
"NmQ5qFAXqH3w984cYhMeC5TJR8j",
|
||||||
"/vJ3upic39lgmrkX855Qx",
|
"cc44M+l7GDhav",
|
||||||
"yNc9ruCVMV7pGV7XvFeuLMOcy1",
|
"KxGjo/wHB+Yx8Lf7kMP+/m9I+",
|
||||||
"4FPq8mT3JQ1jzcVxMVfwFftLQm33M7i",
|
"wla81BUVSmDkctHDpUT",
|
||||||
"xozoy5e3Ea",
|
"c6wMr1sm1WxiR3i8LDAm3W",
|
||||||
|
"hRLrEQCFNYi0PFPV",
|
||||||
|
"o1J41zIraDtJPNuhBu7Ifb/q3",
|
||||||
|
"U",
|
||||||
|
"RrbZvV0CTu3gaZJ56PVKki4IeP",
|
||||||
|
"NNuRbLckJqUp1Do0YlrKCUP",
|
||||||
|
"UUwnBbipMTvInA0U0E9",
|
||||||
|
"VzGc",
|
||||||
}
|
}
|
||||||
|
|
||||||
var WebAlgorithms = []string{
|
var WebAlgorithms = []string{
|
||||||
"C9qPpZLN8ucRTaTiUMWYS9cQvWOE",
|
"fyZ4+p77W1U4zcWBUwefAIFhFxvADWtT1wzolCxhg9q7etmGUjXr",
|
||||||
"+r6CQVxjzJV6LCV",
|
"uSUX02HYJ1IkyLdhINEFcCf7l2",
|
||||||
"F",
|
"iWt97bqD/qvjIaPXB2Ja5rsBWtQtBZZmaHH2rMR41",
|
||||||
"pFJRC",
|
"3binT1s/5a1pu3fGsN",
|
||||||
"9WXYIDGrwTCz2OiVlgZa90qpECPD6olt",
|
"8YCCU+AIr7pg+yd7CkQEY16lDMwi8Rh4WNp5",
|
||||||
"/750aCr4lm/Sly/c",
|
"DYS3StqnAEKdGddRP8CJrxUSFh",
|
||||||
"RB+DT/gZCrbV",
|
"crquW+4",
|
||||||
"",
|
"ryKqvW9B9hly+JAymXCIfag5Z",
|
||||||
"CyLsf7hdkIRxRm215hl",
|
"Hr08T/NDTX1oSJfHk90c",
|
||||||
"7xHvLi2tOYP0Y92b",
|
"i",
|
||||||
"ZGTXXxu8E/MIWaEDB+Sm/",
|
|
||||||
"1UI3",
|
|
||||||
"E7fP5Pfijd+7K+t6Tg/NhuLq0eEUVChpJSkrKxpO",
|
|
||||||
"ihtqpG6FMt65+Xk+tWUH2",
|
|
||||||
"NhXXU9rg4XXdzo7u5o",
|
|
||||||
}
|
}
|
||||||
|
|
||||||
var PCAlgorithms = []string{
|
var PCAlgorithms = []string{
|
||||||
|
@ -80,59 +82,21 @@ const (
|
||||||
const (
|
const (
|
||||||
AndroidClientID = "YNxT9w7GMdWvEOKa"
|
AndroidClientID = "YNxT9w7GMdWvEOKa"
|
||||||
AndroidClientSecret = "dbw2OtmVEeuUvIptb1Coyg"
|
AndroidClientSecret = "dbw2OtmVEeuUvIptb1Coyg"
|
||||||
AndroidClientVersion = "1.48.3"
|
AndroidClientVersion = "1.49.3"
|
||||||
AndroidPackageName = "com.pikcloud.pikpak"
|
AndroidPackageName = "com.pikcloud.pikpak"
|
||||||
AndroidSdkVersion = "2.0.4.204101"
|
AndroidSdkVersion = "2.0.4.204101"
|
||||||
WebClientID = "YUMx5nI8ZU8Ap8pm"
|
WebClientID = "YUMx5nI8ZU8Ap8pm"
|
||||||
WebClientSecret = "dbw2OtmVEeuUvIptb1Coyg"
|
WebClientSecret = "dbw2OtmVEeuUvIptb1Coyg"
|
||||||
WebClientVersion = "2.0.0"
|
WebClientVersion = "undefined"
|
||||||
WebPackageName = "mypikpak.net"
|
WebPackageName = "drive.mypikpak.com"
|
||||||
WebSdkVersion = "8.0.3"
|
WebSdkVersion = "8.0.3"
|
||||||
PCClientID = "YvtoWO6GNHiuCl7x"
|
PCClientID = "YvtoWO6GNHiuCl7x"
|
||||||
PCClientSecret = "1NIH5R1IEe2pAxZE3hv3uA"
|
PCClientSecret = "1NIH5R1IEe2pAxZE3hv3uA"
|
||||||
PCClientVersion = "undefined" // 2.5.6.4831
|
PCClientVersion = "undefined" // 2.5.6.4831
|
||||||
PCPackageName = "mypikpak.net"
|
PCPackageName = "mypikpak.com"
|
||||||
PCSdkVersion = "8.0.3"
|
PCSdkVersion = "8.0.3"
|
||||||
)
|
)
|
||||||
|
|
||||||
var DlAddr = []string{
|
|
||||||
"dl-a10b-0621.mypikpak.net",
|
|
||||||
"dl-a10b-0622.mypikpak.net",
|
|
||||||
"dl-a10b-0623.mypikpak.net",
|
|
||||||
"dl-a10b-0624.mypikpak.net",
|
|
||||||
"dl-a10b-0625.mypikpak.net",
|
|
||||||
"dl-a10b-0858.mypikpak.net",
|
|
||||||
"dl-a10b-0859.mypikpak.net",
|
|
||||||
"dl-a10b-0860.mypikpak.net",
|
|
||||||
"dl-a10b-0861.mypikpak.net",
|
|
||||||
"dl-a10b-0862.mypikpak.net",
|
|
||||||
"dl-a10b-0863.mypikpak.net",
|
|
||||||
"dl-a10b-0864.mypikpak.net",
|
|
||||||
"dl-a10b-0865.mypikpak.net",
|
|
||||||
"dl-a10b-0866.mypikpak.net",
|
|
||||||
"dl-a10b-0867.mypikpak.net",
|
|
||||||
"dl-a10b-0868.mypikpak.net",
|
|
||||||
"dl-a10b-0869.mypikpak.net",
|
|
||||||
"dl-a10b-0870.mypikpak.net",
|
|
||||||
"dl-a10b-0871.mypikpak.net",
|
|
||||||
"dl-a10b-0872.mypikpak.net",
|
|
||||||
"dl-a10b-0873.mypikpak.net",
|
|
||||||
"dl-a10b-0874.mypikpak.net",
|
|
||||||
"dl-a10b-0875.mypikpak.net",
|
|
||||||
"dl-a10b-0876.mypikpak.net",
|
|
||||||
"dl-a10b-0877.mypikpak.net",
|
|
||||||
"dl-a10b-0878.mypikpak.net",
|
|
||||||
"dl-a10b-0879.mypikpak.net",
|
|
||||||
"dl-a10b-0880.mypikpak.net",
|
|
||||||
"dl-a10b-0881.mypikpak.net",
|
|
||||||
"dl-a10b-0882.mypikpak.net",
|
|
||||||
"dl-a10b-0883.mypikpak.net",
|
|
||||||
"dl-a10b-0884.mypikpak.net",
|
|
||||||
"dl-a10b-0885.mypikpak.net",
|
|
||||||
"dl-a10b-0886.mypikpak.net",
|
|
||||||
"dl-a10b-0887.mypikpak.net",
|
|
||||||
}
|
|
||||||
|
|
||||||
func (d *PikPak) login() error {
|
func (d *PikPak) login() error {
|
||||||
// 检查用户名和密码是否为空
|
// 检查用户名和密码是否为空
|
||||||
if d.Addition.Username == "" || d.Addition.Password == "" {
|
if d.Addition.Username == "" || d.Addition.Password == "" {
|
||||||
|
@ -338,7 +302,6 @@ type Common struct {
|
||||||
UserAgent string
|
UserAgent string
|
||||||
// 验证码token刷新成功回调
|
// 验证码token刷新成功回调
|
||||||
RefreshCTokenCk func(token string)
|
RefreshCTokenCk func(token string)
|
||||||
LowLatencyAddr string
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func generateDeviceSign(deviceID, packageName string) string {
|
func generateDeviceSign(deviceID, packageName string) string {
|
||||||
|
@ -729,46 +692,3 @@ func OssOption(params *S3Params) []oss.Option {
|
||||||
}
|
}
|
||||||
return options
|
return options
|
||||||
}
|
}
|
||||||
|
|
||||||
type AddressLatency struct {
|
|
||||||
Address string
|
|
||||||
Latency time.Duration
|
|
||||||
}
|
|
||||||
|
|
||||||
func checkLatency(address string, wg *sync.WaitGroup, ch chan<- AddressLatency) {
|
|
||||||
defer wg.Done()
|
|
||||||
start := time.Now()
|
|
||||||
resp, err := http.Get("https://" + address + "/generate_204")
|
|
||||||
if err != nil {
|
|
||||||
ch <- AddressLatency{Address: address, Latency: time.Hour} // Set high latency on error
|
|
||||||
return
|
|
||||||
}
|
|
||||||
defer resp.Body.Close()
|
|
||||||
latency := time.Since(start)
|
|
||||||
ch <- AddressLatency{Address: address, Latency: latency}
|
|
||||||
}
|
|
||||||
|
|
||||||
func findLowestLatencyAddress(addresses []string) string {
|
|
||||||
var wg sync.WaitGroup
|
|
||||||
ch := make(chan AddressLatency, len(addresses))
|
|
||||||
|
|
||||||
for _, address := range addresses {
|
|
||||||
wg.Add(1)
|
|
||||||
go checkLatency(address, &wg, ch)
|
|
||||||
}
|
|
||||||
|
|
||||||
wg.Wait()
|
|
||||||
close(ch)
|
|
||||||
|
|
||||||
var lowestLatencyAddress string
|
|
||||||
lowestLatency := time.Hour
|
|
||||||
|
|
||||||
for result := range ch {
|
|
||||||
if result.Latency < lowestLatency {
|
|
||||||
lowestLatency = result.Latency
|
|
||||||
lowestLatencyAddress = result.Address
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return lowestLatencyAddress
|
|
||||||
}
|
|
||||||
|
|
|
@ -4,7 +4,6 @@ import (
|
||||||
"context"
|
"context"
|
||||||
"github.com/alist-org/alist/v3/internal/op"
|
"github.com/alist-org/alist/v3/internal/op"
|
||||||
"net/http"
|
"net/http"
|
||||||
"regexp"
|
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/alist-org/alist/v3/internal/driver"
|
"github.com/alist-org/alist/v3/internal/driver"
|
||||||
|
@ -37,7 +36,6 @@ func (d *PikPakShare) Init(ctx context.Context) error {
|
||||||
d.Common.CaptchaToken = token
|
d.Common.CaptchaToken = token
|
||||||
op.MustSaveDriverStorage(d)
|
op.MustSaveDriverStorage(d)
|
||||||
},
|
},
|
||||||
LowLatencyAddr: "",
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -71,14 +69,6 @@ func (d *PikPakShare) Init(ctx context.Context) error {
|
||||||
d.UserAgent = "MainWindow Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) PikPak/2.5.6.4831 Chrome/100.0.4896.160 Electron/18.3.15 Safari/537.36"
|
d.UserAgent = "MainWindow Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) PikPak/2.5.6.4831 Chrome/100.0.4896.160 Electron/18.3.15 Safari/537.36"
|
||||||
}
|
}
|
||||||
|
|
||||||
if d.UseLowLatencyAddress && d.Addition.CustomLowLatencyAddress != "" {
|
|
||||||
d.Common.LowLatencyAddr = d.Addition.CustomLowLatencyAddress
|
|
||||||
} else if d.UseLowLatencyAddress {
|
|
||||||
d.Common.LowLatencyAddr = findLowestLatencyAddress(DlAddr)
|
|
||||||
d.Addition.CustomLowLatencyAddress = d.Common.LowLatencyAddr
|
|
||||||
op.MustSaveDriverStorage(d)
|
|
||||||
}
|
|
||||||
|
|
||||||
// 获取CaptchaToken
|
// 获取CaptchaToken
|
||||||
err := d.RefreshCaptchaToken(GetAction(http.MethodGet, "https://api-drive.mypikpak.net/drive/v1/share:batch_file_info"), "")
|
err := d.RefreshCaptchaToken(GetAction(http.MethodGet, "https://api-drive.mypikpak.net/drive/v1/share:batch_file_info"), "")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -131,12 +121,6 @@ func (d *PikPakShare) Link(ctx context.Context, file model.Obj, args model.LinkA
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if d.UseLowLatencyAddress && d.Common.LowLatencyAddr != "" {
|
|
||||||
// 替换为加速链接
|
|
||||||
re := regexp.MustCompile(`https://[^/]+/download/`)
|
|
||||||
downloadUrl = re.ReplaceAllString(downloadUrl, "https://"+d.Common.LowLatencyAddr+"/download/")
|
|
||||||
}
|
|
||||||
|
|
||||||
return &model.Link{
|
return &model.Link{
|
||||||
URL: downloadUrl,
|
URL: downloadUrl,
|
||||||
}, nil
|
}, nil
|
||||||
|
|
|
@ -9,11 +9,9 @@ type Addition struct {
|
||||||
driver.RootID
|
driver.RootID
|
||||||
ShareId string `json:"share_id" required:"true"`
|
ShareId string `json:"share_id" required:"true"`
|
||||||
SharePwd string `json:"share_pwd"`
|
SharePwd string `json:"share_pwd"`
|
||||||
Platform string `json:"platform" required:"true" type:"select" options:"android,web,pc"`
|
Platform string `json:"platform" default:"web" required:"true" type:"select" options:"android,web,pc"`
|
||||||
DeviceID string `json:"device_id" required:"false" default:""`
|
DeviceID string `json:"device_id" required:"false" default:""`
|
||||||
UseTransCodingAddress bool `json:"use_transcoding_address" required:"true" default:"false"`
|
UseTransCodingAddress bool `json:"use_transcoding_address" required:"true" default:"false"`
|
||||||
UseLowLatencyAddress bool `json:"use_low_latency_address" default:"false"`
|
|
||||||
CustomLowLatencyAddress string `json:"custom_low_latency_address" default:""`
|
|
||||||
}
|
}
|
||||||
|
|
||||||
var config = driver.Config{
|
var config = driver.Config{
|
||||||
|
|
|
@ -10,7 +10,6 @@ import (
|
||||||
"net/http"
|
"net/http"
|
||||||
"regexp"
|
"regexp"
|
||||||
"strings"
|
"strings"
|
||||||
"sync"
|
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/alist-org/alist/v3/drivers/base"
|
"github.com/alist-org/alist/v3/drivers/base"
|
||||||
|
@ -18,32 +17,34 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
var AndroidAlgorithms = []string{
|
var AndroidAlgorithms = []string{
|
||||||
"aDhgaSE3MsjROCmpmsWqP1sJdFJ",
|
"7xOq4Z8s",
|
||||||
"+oaVkqdd8MJuKT+uMr2AYKcd9tdWge3XPEPR2hcePUknd",
|
"QE9/9+IQco",
|
||||||
"u/sd2GgT2fTytRcKzGicHodhvIltMntA3xKw2SRv7S48OdnaQIS5mn",
|
"WdX5J9CPLZp",
|
||||||
"2WZiae2QuqTOxBKaaqCNHCW3olu2UImelkDzBn",
|
"NmQ5qFAXqH3w984cYhMeC5TJR8j",
|
||||||
"/vJ3upic39lgmrkX855Qx",
|
"cc44M+l7GDhav",
|
||||||
"yNc9ruCVMV7pGV7XvFeuLMOcy1",
|
"KxGjo/wHB+Yx8Lf7kMP+/m9I+",
|
||||||
"4FPq8mT3JQ1jzcVxMVfwFftLQm33M7i",
|
"wla81BUVSmDkctHDpUT",
|
||||||
"xozoy5e3Ea",
|
"c6wMr1sm1WxiR3i8LDAm3W",
|
||||||
|
"hRLrEQCFNYi0PFPV",
|
||||||
|
"o1J41zIraDtJPNuhBu7Ifb/q3",
|
||||||
|
"U",
|
||||||
|
"RrbZvV0CTu3gaZJ56PVKki4IeP",
|
||||||
|
"NNuRbLckJqUp1Do0YlrKCUP",
|
||||||
|
"UUwnBbipMTvInA0U0E9",
|
||||||
|
"VzGc",
|
||||||
}
|
}
|
||||||
|
|
||||||
var WebAlgorithms = []string{
|
var WebAlgorithms = []string{
|
||||||
"C9qPpZLN8ucRTaTiUMWYS9cQvWOE",
|
"fyZ4+p77W1U4zcWBUwefAIFhFxvADWtT1wzolCxhg9q7etmGUjXr",
|
||||||
"+r6CQVxjzJV6LCV",
|
"uSUX02HYJ1IkyLdhINEFcCf7l2",
|
||||||
"F",
|
"iWt97bqD/qvjIaPXB2Ja5rsBWtQtBZZmaHH2rMR41",
|
||||||
"pFJRC",
|
"3binT1s/5a1pu3fGsN",
|
||||||
"9WXYIDGrwTCz2OiVlgZa90qpECPD6olt",
|
"8YCCU+AIr7pg+yd7CkQEY16lDMwi8Rh4WNp5",
|
||||||
"/750aCr4lm/Sly/c",
|
"DYS3StqnAEKdGddRP8CJrxUSFh",
|
||||||
"RB+DT/gZCrbV",
|
"crquW+4",
|
||||||
"",
|
"ryKqvW9B9hly+JAymXCIfag5Z",
|
||||||
"CyLsf7hdkIRxRm215hl",
|
"Hr08T/NDTX1oSJfHk90c",
|
||||||
"7xHvLi2tOYP0Y92b",
|
"i",
|
||||||
"ZGTXXxu8E/MIWaEDB+Sm/",
|
|
||||||
"1UI3",
|
|
||||||
"E7fP5Pfijd+7K+t6Tg/NhuLq0eEUVChpJSkrKxpO",
|
|
||||||
"ihtqpG6FMt65+Xk+tWUH2",
|
|
||||||
"NhXXU9rg4XXdzo7u5o",
|
|
||||||
}
|
}
|
||||||
|
|
||||||
var PCAlgorithms = []string{
|
var PCAlgorithms = []string{
|
||||||
|
@ -62,59 +63,21 @@ var PCAlgorithms = []string{
|
||||||
const (
|
const (
|
||||||
AndroidClientID = "YNxT9w7GMdWvEOKa"
|
AndroidClientID = "YNxT9w7GMdWvEOKa"
|
||||||
AndroidClientSecret = "dbw2OtmVEeuUvIptb1Coyg"
|
AndroidClientSecret = "dbw2OtmVEeuUvIptb1Coyg"
|
||||||
AndroidClientVersion = "1.48.3"
|
AndroidClientVersion = "1.49.3"
|
||||||
AndroidPackageName = "com.pikcloud.pikpak"
|
AndroidPackageName = "com.pikcloud.pikpak"
|
||||||
AndroidSdkVersion = "2.0.4.204101"
|
AndroidSdkVersion = "2.0.4.204101"
|
||||||
WebClientID = "YUMx5nI8ZU8Ap8pm"
|
WebClientID = "YUMx5nI8ZU8Ap8pm"
|
||||||
WebClientSecret = "dbw2OtmVEeuUvIptb1Coyg"
|
WebClientSecret = "dbw2OtmVEeuUvIptb1Coyg"
|
||||||
WebClientVersion = "2.0.0"
|
WebClientVersion = "undefined"
|
||||||
WebPackageName = "mypikpak.net"
|
WebPackageName = "drive.mypikpak.com"
|
||||||
WebSdkVersion = "8.0.3"
|
WebSdkVersion = "8.0.3"
|
||||||
PCClientID = "YvtoWO6GNHiuCl7x"
|
PCClientID = "YvtoWO6GNHiuCl7x"
|
||||||
PCClientSecret = "1NIH5R1IEe2pAxZE3hv3uA"
|
PCClientSecret = "1NIH5R1IEe2pAxZE3hv3uA"
|
||||||
PCClientVersion = "undefined" // 2.5.6.4831
|
PCClientVersion = "undefined" // 2.5.6.4831
|
||||||
PCPackageName = "mypikpak.net"
|
PCPackageName = "mypikpak.com"
|
||||||
PCSdkVersion = "8.0.3"
|
PCSdkVersion = "8.0.3"
|
||||||
)
|
)
|
||||||
|
|
||||||
var DlAddr = []string{
|
|
||||||
"dl-a10b-0621.mypikpak.net",
|
|
||||||
"dl-a10b-0622.mypikpak.net",
|
|
||||||
"dl-a10b-0623.mypikpak.net",
|
|
||||||
"dl-a10b-0624.mypikpak.net",
|
|
||||||
"dl-a10b-0625.mypikpak.net",
|
|
||||||
"dl-a10b-0858.mypikpak.net",
|
|
||||||
"dl-a10b-0859.mypikpak.net",
|
|
||||||
"dl-a10b-0860.mypikpak.net",
|
|
||||||
"dl-a10b-0861.mypikpak.net",
|
|
||||||
"dl-a10b-0862.mypikpak.net",
|
|
||||||
"dl-a10b-0863.mypikpak.net",
|
|
||||||
"dl-a10b-0864.mypikpak.net",
|
|
||||||
"dl-a10b-0865.mypikpak.net",
|
|
||||||
"dl-a10b-0866.mypikpak.net",
|
|
||||||
"dl-a10b-0867.mypikpak.net",
|
|
||||||
"dl-a10b-0868.mypikpak.net",
|
|
||||||
"dl-a10b-0869.mypikpak.net",
|
|
||||||
"dl-a10b-0870.mypikpak.net",
|
|
||||||
"dl-a10b-0871.mypikpak.net",
|
|
||||||
"dl-a10b-0872.mypikpak.net",
|
|
||||||
"dl-a10b-0873.mypikpak.net",
|
|
||||||
"dl-a10b-0874.mypikpak.net",
|
|
||||||
"dl-a10b-0875.mypikpak.net",
|
|
||||||
"dl-a10b-0876.mypikpak.net",
|
|
||||||
"dl-a10b-0877.mypikpak.net",
|
|
||||||
"dl-a10b-0878.mypikpak.net",
|
|
||||||
"dl-a10b-0879.mypikpak.net",
|
|
||||||
"dl-a10b-0880.mypikpak.net",
|
|
||||||
"dl-a10b-0881.mypikpak.net",
|
|
||||||
"dl-a10b-0882.mypikpak.net",
|
|
||||||
"dl-a10b-0883.mypikpak.net",
|
|
||||||
"dl-a10b-0884.mypikpak.net",
|
|
||||||
"dl-a10b-0885.mypikpak.net",
|
|
||||||
"dl-a10b-0886.mypikpak.net",
|
|
||||||
"dl-a10b-0887.mypikpak.net",
|
|
||||||
}
|
|
||||||
|
|
||||||
func (d *PikPakShare) request(url string, method string, callback base.ReqCallback, resp interface{}) ([]byte, error) {
|
func (d *PikPakShare) request(url string, method string, callback base.ReqCallback, resp interface{}) ([]byte, error) {
|
||||||
req := base.RestyClient.R()
|
req := base.RestyClient.R()
|
||||||
req.SetHeaders(map[string]string{
|
req.SetHeaders(map[string]string{
|
||||||
|
@ -227,7 +190,6 @@ type Common struct {
|
||||||
UserAgent string
|
UserAgent string
|
||||||
// 验证码token刷新成功回调
|
// 验证码token刷新成功回调
|
||||||
RefreshCTokenCk func(token string)
|
RefreshCTokenCk func(token string)
|
||||||
LowLatencyAddr string
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *Common) SetUserAgent(userAgent string) {
|
func (c *Common) SetUserAgent(userAgent string) {
|
||||||
|
@ -367,46 +329,3 @@ func (d *PikPakShare) refreshCaptchaToken(action string, metas map[string]string
|
||||||
d.Common.SetCaptchaToken(resp.CaptchaToken)
|
d.Common.SetCaptchaToken(resp.CaptchaToken)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
type AddressLatency struct {
|
|
||||||
Address string
|
|
||||||
Latency time.Duration
|
|
||||||
}
|
|
||||||
|
|
||||||
func checkLatency(address string, wg *sync.WaitGroup, ch chan<- AddressLatency) {
|
|
||||||
defer wg.Done()
|
|
||||||
start := time.Now()
|
|
||||||
resp, err := http.Get("https://" + address + "/generate_204")
|
|
||||||
if err != nil {
|
|
||||||
ch <- AddressLatency{Address: address, Latency: time.Hour} // Set high latency on error
|
|
||||||
return
|
|
||||||
}
|
|
||||||
defer resp.Body.Close()
|
|
||||||
latency := time.Since(start)
|
|
||||||
ch <- AddressLatency{Address: address, Latency: latency}
|
|
||||||
}
|
|
||||||
|
|
||||||
func findLowestLatencyAddress(addresses []string) string {
|
|
||||||
var wg sync.WaitGroup
|
|
||||||
ch := make(chan AddressLatency, len(addresses))
|
|
||||||
|
|
||||||
for _, address := range addresses {
|
|
||||||
wg.Add(1)
|
|
||||||
go checkLatency(address, &wg, ch)
|
|
||||||
}
|
|
||||||
|
|
||||||
wg.Wait()
|
|
||||||
close(ch)
|
|
||||||
|
|
||||||
var lowestLatencyAddress string
|
|
||||||
lowestLatency := time.Hour
|
|
||||||
|
|
||||||
for result := range ch {
|
|
||||||
if result.Latency < lowestLatency {
|
|
||||||
lowestLatency = result.Latency
|
|
||||||
lowestLatencyAddress = result.Address
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return lowestLatencyAddress
|
|
||||||
}
|
|
||||||
|
|
Loading…
Reference in New Issue