diff --git a/db/db.go b/db/db.go index 09ca7c0..1533fb8 100644 --- a/db/db.go +++ b/db/db.go @@ -374,6 +374,15 @@ func (s *StorageInfo) ToWebDavSetting() WebdavSetting { } } +func (s *StorageInfo) ToAlistSetting() WebdavSetting { + return WebdavSetting{ + URL: s.Settings["url"], + User: s.Settings["user"], + Password: s.Settings["password"], + ChangeFileHash: s.Settings["change_file_hash"], + } +} + type WebdavSetting struct { URL string `json:"url"` User string `json:"user"` diff --git a/server/activity.go b/server/activity.go index dd4e46c..b0dddf4 100644 --- a/server/activity.go +++ b/server/activity.go @@ -17,8 +17,9 @@ import ( type Activity struct { *ent.History - Progress int `json:"progress"` - SeedRatio float64 `json:"seed_ratio"` + Progress int `json:"progress"` + SeedRatio float64 `json:"seed_ratio"` + UploadProgress float64 `json:"upload_progress"` } func (s *Server) GetAllActivities(c *gin.Context) (interface{}, error) { @@ -44,6 +45,9 @@ func (s *Server) GetAllActivities(c *gin.Context) (interface{}, error) { } else { a.SeedRatio = r } + if task.UploadProgresser != nil { + a.UploadProgress = task.UploadProgresser() + } } } activities = append(activities, a) diff --git a/server/core/scheduler.go b/server/core/scheduler.go index 4076aea..ea992ed 100644 --- a/server/core/scheduler.go +++ b/server/core/scheduler.go @@ -207,6 +207,7 @@ func (c *Client) moveCompletedTask(id int) (err1 error) { if err := stImpl.Copy(filepath.Join(c.db.GetDownloadDir(), torrentName), r.TargetDir); err != nil { return errors.Wrap(err, "move file") } + torrent.UploadProgresser = stImpl.UploadProgress c.db.SetHistoryStatus(r.ID, history.StatusSeeding) if len(episodeIds) > 0 { @@ -285,6 +286,7 @@ func (c *Client) CheckDownloadedSeriesFiles(m *ent.Media) error { type Task struct { //Processing bool pkg.Torrent + UploadProgresser func() float64 } func (c *Client) DownloadSeriesAllEpisodes(id int) []string { diff --git a/server/storage.go b/server/storage.go index 02964d0..fa8987d 100644 --- a/server/storage.go +++ b/server/storage.go @@ -42,7 +42,7 @@ func (s *Server) AddStorage(c *gin.Context) (interface{}, error) { log.Infof("file name: %v", f.Name()) } } else if in.Implementation == "alist" { - cfg := in.ToWebDavSetting() + cfg := in.ToAlistSetting() _, err := storage.NewAlist(&alist.Config{URL: cfg.URL, Username: cfg.User, Password: cfg.Password}, in.TvPath) if err != nil { return nil, errors.Wrap(err, "alist") diff --git a/ui/lib/providers/activity.dart b/ui/lib/providers/activity.dart index c29693b..35a4dce 100644 --- a/ui/lib/providers/activity.dart +++ b/ui/lib/providers/activity.dart @@ -73,7 +73,7 @@ class Activity { required this.saved, required this.progress, required this.size, - required this.seedRatio}); + required this.seedRatio, required this.uploadProgress}); final int? id; final int? mediaId; @@ -86,6 +86,7 @@ class Activity { final int? progress; final int? size; final double seedRatio; + final double uploadProgress; factory Activity.fromJson(Map json) { return Activity( @@ -99,6 +100,8 @@ class Activity { saved: json["saved"], progress: json["progress"], seedRatio: json["seed_ratio"], - size: json["size"]); + size: json["size"], + uploadProgress: json["upload_progress"] + ); } }