mirror of https://github.com/Xhofe/alist
fix: aria2 download magnet link (close #1665)
parent
b74b55fa4a
commit
6c89c6c8ae
|
@ -76,10 +76,15 @@ func (m *Monitor) Update() (bool, error) {
|
||||||
}
|
}
|
||||||
m.retried = 0
|
m.retried = 0
|
||||||
if len(info.FollowedBy) != 0 {
|
if len(info.FollowedBy) != 0 {
|
||||||
|
log.Debugf("followen by: %+v", info.FollowedBy)
|
||||||
gid := info.FollowedBy[0]
|
gid := info.FollowedBy[0]
|
||||||
notify.Signals.Delete(m.tsk.ID)
|
notify.Signals.Delete(m.tsk.ID)
|
||||||
|
oldId := m.tsk.ID
|
||||||
m.tsk.ID = gid
|
m.tsk.ID = gid
|
||||||
|
DownTaskManager.RawTasks().Delete(oldId)
|
||||||
|
DownTaskManager.RawTasks().Store(m.tsk.ID, m.tsk)
|
||||||
notify.Signals.Store(gid, m.c)
|
notify.Signals.Store(gid, m.c)
|
||||||
|
return false, nil
|
||||||
}
|
}
|
||||||
// update download status
|
// update download status
|
||||||
total, err := strconv.ParseUint(info.TotalLength, 10, 64)
|
total, err := strconv.ParseUint(info.TotalLength, 10, 64)
|
||||||
|
@ -120,6 +125,7 @@ func (m *Monitor) Complete() error {
|
||||||
}
|
}
|
||||||
// get files
|
// get files
|
||||||
files, err := client.GetFiles(m.tsk.ID)
|
files, err := client.GetFiles(m.tsk.ID)
|
||||||
|
log.Debugf("files len: %d", len(files))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return errors.Wrapf(err, "failed to get files of %s", m.tsk.ID)
|
return errors.Wrapf(err, "failed to get files of %s", m.tsk.ID)
|
||||||
}
|
}
|
||||||
|
@ -134,7 +140,8 @@ func (m *Monitor) Complete() error {
|
||||||
log.Errorf("failed to remove aria2 temp dir: %+v", err.Error())
|
log.Errorf("failed to remove aria2 temp dir: %+v", err.Error())
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
for _, file := range files {
|
for i, _ := range files {
|
||||||
|
file := files[i]
|
||||||
TransferTaskManager.Submit(task.WithCancelCtx(&task.Task[uint64]{
|
TransferTaskManager.Submit(task.WithCancelCtx(&task.Task[uint64]{
|
||||||
Name: fmt.Sprintf("transfer %s to [%s](%s)", file.Path, storage.GetStorage().MountPath, dstDirActualPath),
|
Name: fmt.Sprintf("transfer %s to [%s](%s)", file.Path, storage.GetStorage().MountPath, dstDirActualPath),
|
||||||
Func: func(tsk *task.Task[uint64]) error {
|
Func: func(tsk *task.Task[uint64]) error {
|
||||||
|
|
|
@ -122,6 +122,10 @@ func (tm *Manager[K]) ClearDone() {
|
||||||
tm.RemoveByStates(SUCCEEDED, CANCELED, ERRORED)
|
tm.RemoveByStates(SUCCEEDED, CANCELED, ERRORED)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (tm *Manager[K]) RawTasks() *generic_sync.MapOf[K, *Task[K]] {
|
||||||
|
return &tm.tasks
|
||||||
|
}
|
||||||
|
|
||||||
func NewTaskManager[K comparable](maxWorker int, updateID ...func(*K)) *Manager[K] {
|
func NewTaskManager[K comparable](maxWorker int, updateID ...func(*K)) *Manager[K] {
|
||||||
tm := &Manager[K]{
|
tm := &Manager[K]{
|
||||||
tasks: generic_sync.MapOf[K, *Task[K]]{},
|
tasks: generic_sync.MapOf[K, *Task[K]]{},
|
||||||
|
|
Loading…
Reference in New Issue