mirror of https://github.com/Xhofe/alist
feat: allow keep files in offline download (close #4678)
parent
d455a232ef
commit
b6134dc515
|
@ -16,6 +16,7 @@ const (
|
||||||
DeleteOnUploadSucceed DeletePolicy = "delete_on_upload_succeed"
|
DeleteOnUploadSucceed DeletePolicy = "delete_on_upload_succeed"
|
||||||
DeleteOnUploadFailed DeletePolicy = "delete_on_upload_failed"
|
DeleteOnUploadFailed DeletePolicy = "delete_on_upload_failed"
|
||||||
DeleteNever DeletePolicy = "delete_never"
|
DeleteNever DeletePolicy = "delete_never"
|
||||||
|
DeleteAlways DeletePolicy = "delete_always"
|
||||||
)
|
)
|
||||||
|
|
||||||
type AddURLArgs struct {
|
type AddURLArgs struct {
|
||||||
|
|
|
@ -125,10 +125,11 @@ func (t *DownloadTask) Complete() error {
|
||||||
for i, _ := range files {
|
for i, _ := range files {
|
||||||
file := files[i]
|
file := files[i]
|
||||||
TransferTaskManager.Add(&TransferTask{
|
TransferTaskManager.Add(&TransferTask{
|
||||||
file: file,
|
file: file,
|
||||||
dstDirPath: t.DstDirPath,
|
dstDirPath: t.DstDirPath,
|
||||||
wg: &wg,
|
wg: &wg,
|
||||||
tempDir: t.TempDir,
|
tempDir: t.TempDir,
|
||||||
|
deletePolicy: t.DeletePolicy,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
|
|
|
@ -9,16 +9,18 @@ import (
|
||||||
"github.com/pkg/errors"
|
"github.com/pkg/errors"
|
||||||
log "github.com/sirupsen/logrus"
|
log "github.com/sirupsen/logrus"
|
||||||
"github.com/xhofe/tache"
|
"github.com/xhofe/tache"
|
||||||
|
"os"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"sync"
|
"sync"
|
||||||
)
|
)
|
||||||
|
|
||||||
type TransferTask struct {
|
type TransferTask struct {
|
||||||
tache.Base
|
tache.Base
|
||||||
file File
|
file File
|
||||||
dstDirPath string
|
dstDirPath string
|
||||||
wg *sync.WaitGroup
|
wg *sync.WaitGroup
|
||||||
tempDir string
|
tempDir string
|
||||||
|
deletePolicy DeletePolicy
|
||||||
}
|
}
|
||||||
|
|
||||||
func (t *TransferTask) Run() error {
|
func (t *TransferTask) Run() error {
|
||||||
|
@ -61,6 +63,24 @@ func (t *TransferTask) GetStatus() string {
|
||||||
return "transferring"
|
return "transferring"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (t *TransferTask) OnSucceeded() {
|
||||||
|
if t.deletePolicy == DeleteOnUploadSucceed || t.deletePolicy == DeleteAlways {
|
||||||
|
err := os.Remove(t.file.Path)
|
||||||
|
if err != nil {
|
||||||
|
log.Errorf("failed to delete file %s, error: %s", t.file.Path, err.Error())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (t *TransferTask) OnFailed() {
|
||||||
|
if t.deletePolicy == DeleteOnUploadFailed || t.deletePolicy == DeleteAlways {
|
||||||
|
err := os.Remove(t.file.Path)
|
||||||
|
if err != nil {
|
||||||
|
log.Errorf("failed to delete file %s, error: %s", t.file.Path, err.Error())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
var (
|
var (
|
||||||
TransferTaskManager *tache.Manager[*TransferTask]
|
TransferTaskManager *tache.Manager[*TransferTask]
|
||||||
)
|
)
|
||||||
|
|
Loading…
Reference in New Issue