diff --git a/internal/torrent/refresh.go b/internal/torrent/refresh.go index 2af0a73..b6ee505 100644 --- a/internal/torrent/refresh.go +++ b/internal/torrent/refresh.go @@ -147,7 +147,7 @@ func (t *TorrentManager) getMoreInfo(rdTorrent realdebrid.Torrent) *Torrent { if torrentFromCache, exists := infoCache.Get(rdTorrent.ID); exists && !torrentFromCache.AnyInProgress() && torrentFromCache.SelectedFiles.Count() == len(rdTorrent.Links) { - + t.ResetSelectedFiles(torrentFromCache) return torrentFromCache } @@ -210,9 +210,7 @@ func (t *TorrentManager) getMoreInfo(rdTorrent realdebrid.Torrent) *Torrent { } torrent.SelectedFiles = cmap.New[*File]() for _, file := range selectedFiles { - // remove forward slash in the beginning - filename := strings.TrimPrefix(file.Path, "/") - filename = strings.ReplaceAll(filename, "/", " - ") + filename := t.GetPath(file) // todo better handling of duplicate filenames if torrent.SelectedFiles.Has(filename) { oldName := filename @@ -238,6 +236,24 @@ func (t *TorrentManager) getMoreInfo(rdTorrent realdebrid.Torrent) *Torrent { return &torrent } +func (t *TorrentManager) ResetSelectedFiles(torrent *Torrent) { + // reset selected files + newSelectedFiles := cmap.New[*File]() + torrent.SelectedFiles.IterCb(func(_ string, file *File) { + filename := t.GetPath(file) + if newSelectedFiles.Has(filename) { + oldName := filename + ext := filepath.Ext(oldName) + noExtension := strings.TrimSuffix(oldName, ext) + newName := fmt.Sprintf("%s (%d)%s", noExtension, file.ID, ext) + newSelectedFiles.Set(newName, file) + } else { + newSelectedFiles.Set(filename, file) + } + }) + torrent.SelectedFiles = newSelectedFiles +} + func (t *TorrentManager) mergeToMain(existing, toMerge *Torrent) Torrent { var newer, older *Torrent if existing.Added < toMerge.Added {