not support album download in download task

This commit is contained in:
tickstep 2024-03-06 21:35:56 +08:00
parent bdc0a15bdc
commit 5b008b935d
2 changed files with 20 additions and 51 deletions

View File

@ -746,8 +746,10 @@ func RunAlbumDownloadFile(albumNames []string, options *DownloadOptions) {
GlobalSpeedsStat: globalSpeedsStat, GlobalSpeedsStat: globalSpeedsStat,
FileRecorder: nil, FileRecorder: nil,
} }
// TODO: 相册下载需要重构
// 设置相簿文件信息 // 设置相簿文件信息
unit.SetFileInfo(pandownload.AlbumFileSource, f) //unit.SetFileInfo(pandownload.AlbumFileSource, f)
// 设置储存的路径 // 设置储存的路径
if options.SaveTo != "" { if options.SaveTo != "" {

View File

@ -14,7 +14,6 @@
package pandownload package pandownload
import ( import (
"errors"
"fmt" "fmt"
"github.com/tickstep/aliyunpan-api/aliyunpan" "github.com/tickstep/aliyunpan-api/aliyunpan"
"github.com/tickstep/aliyunpan-api/aliyunpan/apierror" "github.com/tickstep/aliyunpan-api/aliyunpan/apierror"
@ -30,10 +29,8 @@ import (
"github.com/tickstep/aliyunpan/library/requester/transfer" "github.com/tickstep/aliyunpan/library/requester/transfer"
"github.com/tickstep/library-go/converter" "github.com/tickstep/library-go/converter"
"github.com/tickstep/library-go/logger" "github.com/tickstep/library-go/logger"
"github.com/tickstep/library-go/requester"
"github.com/tickstep/library-go/requester/rio/speeds" "github.com/tickstep/library-go/requester/rio/speeds"
"io" "io"
"net/http"
"os" "os"
"path" "path"
"path/filepath" "path/filepath"
@ -69,8 +66,7 @@ type (
OriginSaveRootPath string // 文件保存在本地的根目录路径 OriginSaveRootPath string // 文件保存在本地的根目录路径
DriveId string DriveId string
fileInfo *aliyunpan.FileEntity // 文件或目录详情 fileInfo *aliyunpan.FileEntity // 文件或目录详情
downloadFileSource FileSourceType // 下载项类型File-普通文件(备份盘/资源库Album-相册文件
// 下载文件记录器 // 下载文件记录器
FileRecorder *log.FileRecorder FileRecorder *log.FileRecorder
@ -101,11 +97,6 @@ const (
AlbumFileSource FileSourceType = "album" AlbumFileSource FileSourceType = "album"
) )
func (dtu *DownloadTaskUnit) SetFileInfo(fileType FileSourceType, info *aliyunpan.FileEntity) {
dtu.downloadFileSource = fileType
dtu.fileInfo = info
}
func (dtu *DownloadTaskUnit) SetTaskInfo(info *taskframework.TaskInfo) { func (dtu *DownloadTaskUnit) SetTaskInfo(info *taskframework.TaskInfo) {
dtu.taskInfo = info dtu.taskInfo = info
} }
@ -292,20 +283,6 @@ func (dtu *DownloadTaskUnit) download() (err error) {
return nil return nil
} }
// panHTTPClient 获取包含特定User-Agent的HTTPClient
func (dtu *DownloadTaskUnit) panHTTPClient() (client *requester.HTTPClient) {
client = requester.NewHTTPClient()
client.CheckRedirect = func(req *http.Request, via []*http.Request) error {
if len(via) >= 10 {
return errors.New("stopped after 10 redirects")
}
return nil
}
client.SetTimeout(20 * time.Minute)
client.SetKeepAlive(true)
return client
}
// handleError 下载错误处理器 // handleError 下载错误处理器
func (dtu *DownloadTaskUnit) handleError(result *taskframework.TaskUnitRunResult) { func (dtu *DownloadTaskUnit) handleError(result *taskframework.TaskUnitRunResult) {
switch value := result.Err.(type) { switch value := result.Err.(type) {
@ -457,26 +434,19 @@ func (dtu *DownloadTaskUnit) Run() (result *taskframework.TaskUnitRunResult) {
result = &taskframework.TaskUnitRunResult{} result = &taskframework.TaskUnitRunResult{}
// 获取文件信息 // 获取文件信息
var apierr *apierror.ApiError var apierr *apierror.ApiError
if dtu.downloadFileSource != AlbumFileSource { // 相簿文件信息是传递进来的,无法在这里获取 if dtu.fileInfo == nil || dtu.taskInfo.Retry() > 0 {
if dtu.fileInfo == nil || dtu.taskInfo.Retry() > 0 { // 没有获取文件信息
// 没有获取文件信息 // 如果是动态添加的下载任务, 是会写入文件信息的
// 如果是动态添加的下载任务, 是会写入文件信息的 // 如果该任务重试过, 则应该再获取一次文件信息
// 如果该任务重试过, 则应该再获取一次文件信息 dtu.fileInfo, apierr = dtu.PanClient.OpenapiPanClient().FileInfoByPath(dtu.DriveId, dtu.FilePanPath)
dtu.fileInfo, apierr = dtu.PanClient.OpenapiPanClient().FileInfoByPath(dtu.DriveId, dtu.FilePanPath) if apierr != nil {
if apierr != nil { // 如果不是未登录或文件不存在, 则不重试
// 如果不是未登录或文件不存在, 则不重试 result.ResultMessage = "获取下载路径信息错误"
result.ResultMessage = "获取下载路径信息错误" result.Err = apierr
result.Err = apierr dtu.handleError(result)
dtu.handleError(result) return
return
}
time.Sleep(1 * time.Second)
}
} else {
if dtu.taskInfo.Retry() > 0 {
// 延时避免风控
time.Sleep(2 * time.Second)
} }
time.Sleep(1 * time.Second)
} }
// 输出文件信息 // 输出文件信息
@ -644,13 +614,10 @@ func (dtu *DownloadTaskUnit) Run() (result *taskframework.TaskUnitRunResult) {
return result return result
} }
// 文件下载成功,更改文件修改时间 //// 文件下载成功,更改文件修改时间和云盘的同步
if dtu.downloadFileSource == AlbumFileSource { //if err := os.Chtimes(dtu.SavePath, utils.ParseTimeStr(dtu.fileInfo.CreatedAt), utils.ParseTimeStr(dtu.fileInfo.CreatedAt)); err != nil {
// 只有相册文件才需要更改时间 // logger.Verbosef(err.Error())
if err := os.Chtimes(dtu.SavePath, utils.ParseTimeStr(dtu.fileInfo.CreatedAt), utils.ParseTimeStr(dtu.fileInfo.CreatedAt)); err != nil { //}
logger.Verbosef(err.Error())
}
}
// 统计下载 // 统计下载
dtu.DownloadStatistic.AddTotalSize(dtu.fileInfo.FileSize) dtu.DownloadStatistic.AddTotalSize(dtu.fileInfo.FileSize)