diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index a7ea65b..e70643a 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -64,7 +64,7 @@ jobs: uses: actions/upload-artifact@v3 with: name: compiled-binaries - path: compressed_artifacts/*.zip + path: compressed_artifacts/ release: name: Release @@ -82,6 +82,7 @@ jobs: uses: actions/download-artifact@v3 with: name: compiled-binaries + path: compressed_artifacts - name: Create Release id: create_release diff --git a/internal/dav/listing.go b/internal/dav/listing.go index c9ba56b..1453e7c 100644 --- a/internal/dav/listing.go +++ b/internal/dav/listing.go @@ -45,7 +45,7 @@ func HandlePropfindRequest(w http.ResponseWriter, r *http.Request, t *torrent.To } func handleListDirectories(w http.ResponseWriter, t *torrent.TorrentManager) error { - fmt.Fprint(w, "") + fmt.Fprint(w, "") // initial response is the directory itself fmt.Fprint(w, dav.Directory("", "")) @@ -66,7 +66,7 @@ func handleListTorrents(w http.ResponseWriter, requestPath string, t *torrent.To return fmt.Errorf("cannot find directory %s", basePath) } - fmt.Fprint(w, "") + fmt.Fprint(w, "") // initial response is the directory itself fmt.Fprint(w, dav.Directory(basePath, "")) @@ -99,7 +99,7 @@ func handleListFiles(w http.ResponseWriter, requestPath string, t *torrent.Torre return fmt.Errorf("cannot find torrent %s", accessKey) } - fmt.Fprint(w, "") + fmt.Fprint(w, "") // initial response is the directory itself fmt.Fprint(w, dav.Directory(requestPath, tor.LatestAdded)) diff --git a/internal/torrent/manager.go b/internal/torrent/manager.go index 77f45af..85650f4 100644 --- a/internal/torrent/manager.go +++ b/internal/torrent/manager.go @@ -339,13 +339,11 @@ func (t *TorrentManager) getMoreInfo(rdTorrent realdebrid.Torrent) *Torrent { var err error // file cache torrentFromFile := t.readFromFile(rdTorrent.ID) - if torrentFromFile != nil && len(torrentFromFile.ID) > 0 && len(torrentFromFile.Links) == len(rdTorrent.Links) { - if (len(torrentFromFile.Links) > 0 && torrentFromFile.Links[0] == rdTorrent.Links[0]) || len(torrentFromFile.Links) == 0 { - // see if api data and file data still match - // then it means data is still usable - info = torrentFromFile - info.Progress = rdTorrent.Progress - } + if torrentFromFile != nil && len(torrentFromFile.ID) > 0 && len(torrentFromFile.Links) > 0 && len(torrentFromFile.Links) == len(rdTorrent.Links) && torrentFromFile.Links[0] == rdTorrent.Links[0] { + info = torrentFromFile + info.Progress = rdTorrent.Progress + } else { + torrentFromFile = nil } if info == nil { info, err = t.api.GetTorrentInfo(rdTorrent.ID) @@ -390,6 +388,7 @@ func (t *TorrentManager) getMoreInfo(rdTorrent realdebrid.Torrent) *Torrent { for _, file := range selectedFiles { torrent.SelectedFiles.Set(filepath.Base(file.Path), file) } + if len(selectedFiles) > 0 && torrentFromFile == nil { t.writeToFile(info) // only when there are selected files, else it's useless } diff --git a/pkg/realdebrid/api.go b/pkg/realdebrid/api.go index a9c24ca..52fb58c 100644 --- a/pkg/realdebrid/api.go +++ b/pkg/realdebrid/api.go @@ -150,7 +150,7 @@ func (rd *RealDebrid) GetTorrentInfo(id string) (*TorrentInfo, error) { return nil, err } - rd.log.Debugf("Got info for torrent %s", id) + rd.log.Debugf("Got info for torrent %s (progress=%d%%)", id, response.Progress) return &response, nil }