refactor(baidu): add a crack api of download

* 修复百度网盘API文件大于20M问题

* refactor: keep the official api

Co-authored-by: Xhofe <i@nn.ci>
This commit is contained in:
foxxorcat
2022-04-16 14:52:36 +08:00
committed by GitHub
parent a2cf3ab42e
commit 3ad75e54cb
3 changed files with 109 additions and 10 deletions

View File

@ -58,6 +58,14 @@ func (driver Baidu) Items() []base.Item {
Default: "asc",
Required: false,
},
{
Name: "internal_type",
Label: "download api",
Type: base.TypeSelect,
Required: true,
Values: "official,crack",
Default: "official",
},
{
Name: "client_id",
Label: "client id",
@ -125,6 +133,13 @@ func (driver Baidu) Files(path string, account *model.Account) ([]model.File, er
}
func (driver Baidu) Link(args base.Args, account *model.Account) (*base.Link, error) {
if account.InternalType == "crack" {
return driver.LinkCrack(args, account)
}
return driver.LinkOfficial(args, account)
}
func (driver Baidu) LinkOfficial(args base.Args, account *model.Account) (*base.Link, error) {
file, err := driver.File(args.Path, account)
if err != nil {
return nil, err
@ -157,6 +172,32 @@ func (driver Baidu) Link(args base.Args, account *model.Account) (*base.Link, er
}}, nil
}
func (driver Baidu) LinkCrack(args base.Args, account *model.Account) (*base.Link, error) {
file, err := driver.File(args.Path, account)
if err != nil {
return nil, err
}
if file.IsDir() {
return nil, base.ErrNotFile
}
var resp DownloadResp2
param := map[string]string{
"target": fmt.Sprintf("[\"%s\"]", utils.Join(account.RootFolder, args.Path)),
"dlink": "1",
"web": "5",
"origin": "dlna",
}
_, err = driver.Request("https://pan.baidu.com/api/filemetas", base.Get, nil, param, nil, nil, &resp, account)
if err != nil {
return nil, err
}
return &base.Link{
Url: resp.Info[0].Dlink,
Headers: []base.Header{
{Name: "User-Agent", Value: "pan.baidu.com"},
}}, nil
}
func (driver Baidu) Path(path string, account *model.Account) (*model.File, []model.File, error) {
file, err := driver.File(path, account)
if err != nil {