diff --git a/internal/torrent/refresh.go b/internal/torrent/refresh.go index d4494cc..6267af0 100644 --- a/internal/torrent/refresh.go +++ b/internal/torrent/refresh.go @@ -32,7 +32,7 @@ func (t *TorrentManager) RefreshTorrents() []string { torrent, _ := t.onlyForRepair.Get(instances[idx].ID) brokenFiles := getBrokenFiles(torrent) info, err := t.redownloadTorrent(torrent, "") - if err == nil && info.Progress == 100 && !t.isStillBroken(info, brokenFiles) { + if err == nil && info.IsDone() && !t.isStillBroken(info, brokenFiles) { t.Api.DeleteTorrent(instances[idx].ID) t.onlyForRepair.Remove(instances[idx].ID) } diff --git a/internal/torrent/repair.go b/internal/torrent/repair.go index 868504a..5a99a8d 100644 --- a/internal/torrent/repair.go +++ b/internal/torrent/repair.go @@ -224,7 +224,7 @@ func (t *TorrentManager) repair(torrent *Torrent) { info, err := t.redownloadTorrent(torrent, "") if err != nil { t.log.Warnf("Cannot repair torrent %s", t.GetKey(torrent)) - } else if info.Progress != 100 || (info.Progress == 100 && !t.isStillBroken(info, brokenFiles)) { + } else if info.Progress != 100 || (info.IsDone() && !t.isStillBroken(info, brokenFiles)) { t.log.Infof("Successfully repaired torrent %s using repair_method#1", t.GetKey(torrent)) return } diff --git a/pkg/realdebrid/types.go b/pkg/realdebrid/types.go index 2631ef3..79ac035 100644 --- a/pkg/realdebrid/types.go +++ b/pkg/realdebrid/types.go @@ -82,6 +82,13 @@ type TorrentInfo struct { Files []File `json:"files"` } +func (i *TorrentInfo) IsDone() bool { + if i.Progress != 100 { + return false + } + return len(i.Files) == len(i.Links) && len(i.Files) > 0 +} + func (i *TorrentInfo) MarshalJSON() ([]byte, error) { type Alias TorrentInfo aux := &struct {