diff --git a/internal/dav/infuse.go b/internal/dav/infuse.go index 8bcad6e..ca2fcbf 100644 --- a/internal/dav/infuse.go +++ b/internal/dav/infuse.go @@ -117,7 +117,7 @@ func ServeDownloadsListForInfuse(torMgr *torrent.TorrentManager) ([]byte, error) if !ok { continue } - buf.WriteString(dav.File(download.Filename, download.Filesize, download.Generated)) + buf.WriteString(dav.File(filename, download.Filesize, download.Generated)) } buf.WriteString("") diff --git a/internal/dav/listing.go b/internal/dav/listing.go index cc0ff31..267332a 100644 --- a/internal/dav/listing.go +++ b/internal/dav/listing.go @@ -128,7 +128,7 @@ func ServeDownloadsList(torMgr *torrent.TorrentManager) ([]byte, error) { if !ok { continue } - buf.WriteString(dav.File(download.Filename, download.Filesize, download.Generated)) + buf.WriteString(dav.File(filename, download.Filesize, download.Generated)) } buf.WriteString("") return buf.Bytes(), nil diff --git a/internal/http/listing.go b/internal/http/listing.go index 9b2b79c..d5b2b08 100644 --- a/internal/http/listing.go +++ b/internal/http/listing.go @@ -97,12 +97,8 @@ func ServeDownloadsList(torMgr *torrent.TorrentManager) ([]byte, error) { filenames := torMgr.DownloadMap.Keys() sort.Strings(filenames) for _, filename := range filenames { - download, ok := torMgr.DownloadMap.Get(filename) - if !ok { - continue - } filePath := filepath.Join(config.DOWNLOADS, url.PathEscape(filename)) - buf.WriteString(fmt.Sprintf("
  • %s
  • ", filePath, download.Filename)) + buf.WriteString(fmt.Sprintf("
  • %s
  • ", filePath, filename)) } return buf.Bytes(), nil } diff --git a/internal/torrent/manager.go b/internal/torrent/manager.go index 4de2b4b..1ca8886 100644 --- a/internal/torrent/manager.go +++ b/internal/torrent/manager.go @@ -341,6 +341,16 @@ func (t *TorrentManager) mountNewDownloads() { isRealDebrid := strings.HasPrefix(downloads[i].Link, "https://real-debrid.com/d/") if !isRealDebrid { filename := filepath.Base(downloads[i].Filename) + if strings.Contains(downloads[i].Type, "x") { + // extract extension from the filename + ext := filepath.Ext(filename) + trimmed := strings.TrimSuffix(filename, ext) + // it's a resolution so extract 2nd part and add it to the filename + parts := strings.Split(downloads[i].Type, "x") + if len(parts) > 1 { + filename = fmt.Sprintf("%s (%sp)%s", trimmed, parts[1], ext) + } + } t.DownloadMap.Set(filename, &downloads[i]) mountedCount++ } else if token != "" { diff --git a/pkg/realdebrid/types.go b/pkg/realdebrid/types.go index 19b9106..7456746 100644 --- a/pkg/realdebrid/types.go +++ b/pkg/realdebrid/types.go @@ -25,6 +25,7 @@ type Download struct { Streamable int `json:"streamable"` Generated string `json:"-"` // jsonDate Token string `json:"-"` + Type string `json:"type"` } func (d *Download) UnmarshalJSON(data []byte) error {