diff --git a/drivers/aliyundrive_open/driver.go b/drivers/aliyundrive_open/driver.go index 90e2fc7e495..284f3c04f20 100644 --- a/drivers/aliyundrive_open/driver.go +++ b/drivers/aliyundrive_open/driver.go @@ -2,6 +2,7 @@ package aliyundrive_open import ( "context" + "errors" "fmt" "net/http" "time" @@ -35,6 +36,9 @@ func (d *AliyundriveOpen) GetAddition() driver.Additional { } func (d *AliyundriveOpen) Init(ctx context.Context) error { + if d.LIVPDownloadFormat == "" { + d.LIVPDownloadFormat = "jpeg" + } res, err := d.request("/adrive/v1.0/user/getDriveInfo", http.MethodPost, nil) if err != nil { return err @@ -80,6 +84,12 @@ func (d *AliyundriveOpen) link(ctx context.Context, file model.Obj) (*model.Link return nil, err } url := utils.Json.Get(res, "url").ToString() + if url == "" { + if utils.Ext(file.GetName()) != "livp" { + return nil, errors.New("get download url failed: " + string(res)) + } + url = utils.Json.Get(res, "streamsUrl", d.LIVPDownloadFormat).ToString() + } exp := time.Hour return &model.Link{ URL: url, diff --git a/drivers/aliyundrive_open/meta.go b/drivers/aliyundrive_open/meta.go index c6a7e42a9c6..0bfc968eb6e 100644 --- a/drivers/aliyundrive_open/meta.go +++ b/drivers/aliyundrive_open/meta.go @@ -7,16 +7,17 @@ import ( type Addition struct { driver.RootID - RefreshToken string `json:"refresh_token" required:"true"` - OrderBy string `json:"order_by" type:"select" options:"name,size,updated_at,created_at"` - OrderDirection string `json:"order_direction" type:"select" options:"ASC,DESC"` - OauthTokenURL string `json:"oauth_token_url" default:"https://api.xhofe.top/alist/ali_open/token"` - ClientID string `json:"client_id" required:"false" help:"Keep it empty if you don't have one"` - ClientSecret string `json:"client_secret" required:"false" help:"Keep it empty if you don't have one"` - RemoveWay string `json:"remove_way" required:"true" type:"select" options:"trash,delete"` - RapidUpload bool `json:"rapid_upload" help:"If you enable this option, the file will be uploaded to the server first, so the progress will be incorrect"` - InternalUpload bool `json:"internal_upload" help:"If you are using Aliyun ECS is located in Beijing, you can turn it on to boost the upload speed"` - AccessToken string + RefreshToken string `json:"refresh_token" required:"true"` + OrderBy string `json:"order_by" type:"select" options:"name,size,updated_at,created_at"` + OrderDirection string `json:"order_direction" type:"select" options:"ASC,DESC"` + OauthTokenURL string `json:"oauth_token_url" default:"https://api.xhofe.top/alist/ali_open/token"` + ClientID string `json:"client_id" required:"false" help:"Keep it empty if you don't have one"` + ClientSecret string `json:"client_secret" required:"false" help:"Keep it empty if you don't have one"` + RemoveWay string `json:"remove_way" required:"true" type:"select" options:"trash,delete"` + RapidUpload bool `json:"rapid_upload" help:"If you enable this option, the file will be uploaded to the server first, so the progress will be incorrect"` + InternalUpload bool `json:"internal_upload" help:"If you are using Aliyun ECS is located in Beijing, you can turn it on to boost the upload speed"` + LIVPDownloadFormat string `json:"livp_download_format" type:"select" options:"jpeg,mov" default:"jpeg"` + AccessToken string } var config = driver.Config{