diff --git a/drivers/quark_uc_share/types.go b/drivers/quark_uc_share/types.go index 937df727..aa65d6f6 100755 --- a/drivers/quark_uc_share/types.go +++ b/drivers/quark_uc_share/types.go @@ -88,6 +88,7 @@ type VideoInfo struct { type File struct { ID string `json:"fid"` FID string `json:"share_fid_token"` + PID string `json:"pdir_fid"` Name string `json:"file_name"` Type int `json:"file_type"` CreatedAt int64 `json:"created_at"` @@ -98,7 +99,7 @@ type File struct { func fileToObj(f File) *model.ObjThumb { return &model.ObjThumb{ Object: model.Object{ - ID: f.ID + "-" + f.FID, + ID: f.ID + "-" + f.FID + "-" + f.PID, Name: f.Name, Size: f.Size, Modified: time.UnixMilli(f.UpdatedAt), diff --git a/drivers/quark_uc_share/util.go b/drivers/quark_uc_share/util.go index b73423cc..ef9995ef 100755 --- a/drivers/quark_uc_share/util.go +++ b/drivers/quark_uc_share/util.go @@ -135,6 +135,7 @@ func (d *QuarkUCShare) saveFile(quark *quark.QuarkOrUC, id string) (model.Obj, e s := strings.Split(id, "-") fileId := s[0] fileTokenId := s[1] + pid := s[2] for range 2 { data := base.Json{ "fid_list": []string{fileId}, @@ -158,10 +159,13 @@ func (d *QuarkUCShare) saveFile(quark *quark.QuarkOrUC, id string) (model.Obj, e res, err := d.request("/share/sharepage/save", http.MethodPost, func(req *resty.Request) { req.SetBody(data).SetQueryParams(query) }, &resp) - log.Debugf("saveFile: %v %+v response: %v", id, data, string(res)) + log.Debugf("saveFile: %v %+v response: %v, error: %v", id, data, string(res), err) if err != nil { if strings.Contains(err.Error(), "token校验异常") { - d.getShareToken() + fileTokenId, err = d.getFileToken(pid, fileId) + if err != nil { + return nil, err + } continue } else { log.Warnf("save file failed: %v", err) @@ -315,3 +319,16 @@ func (d *QuarkUCShare) getShareFiles(id string) ([]File, error) { return files, nil } + +func (d *QuarkUCShare) getFileToken(pid, fid string) (string, error) { + files, err := d.getShareFiles(pid) + if err != nil { + return "", err + } + for _, f := range files { + if f.ID == fid { + return f.FID, nil + } + } + return "", errors.New("file not found") +}