From c713a696c6dedf3094aef714b8e0aa3be5279477 Mon Sep 17 00:00:00 2001 From: Ben Sarmiento Date: Thu, 26 Oct 2023 21:50:13 +0200 Subject: [PATCH] Fix the float64 conversion --- internal/torrent/manager.go | 8 ++++---- pkg/realdebrid/types.go | 24 +++++++++++++++++++++++- 2 files changed, 27 insertions(+), 5 deletions(-) diff --git a/internal/torrent/manager.go b/internal/torrent/manager.go index e6a0ce5..45bbec2 100644 --- a/internal/torrent/manager.go +++ b/internal/torrent/manager.go @@ -283,19 +283,19 @@ func (t *TorrentManager) addMoreInfo(torrent *Torrent) { }) } if len(selectedFiles) > len(info.Links) && info.Progress == 100 { - log.Printf("Some links has expired for %s, %s: %d selected but only %d links\n", info.ID, info.Name, len(selectedFiles), len(info.Links)) + log.Printf("Some links has expired for %s, %s: %d selected but only %d link(s)\n", info.ID, info.Name, len(selectedFiles), len(info.Links)) // chaotic file means RD will not output the desired file selection // e.g. even if we select just a single mkv, it will output a rar var isChaotic bool selectedFiles, isChaotic = t.organizeChaos(info, selectedFiles) if isChaotic { - log.Println("This torrent is unfixable, it's always returning an unstreamable link, ignoring", info.Name, info.ID) + log.Println("This torrent is unfixable, it's always returning an unstreamable link, ignoring", info.ID, info.Name) } else { if len(streamableFiles) > 1 { - log.Println("Marking for repair", info.Name) + log.Println("Marking for repair", info.ID, info.Name) forRepair = true } else { - log.Println("This torrent is unfixable, the lone streamable link has expired, ignoring", info.Name, info.ID) + log.Println("This torrent is unfixable, the lone streamable link has expired, ignoring", info.ID, info.ID) } } } else { diff --git a/pkg/realdebrid/types.go b/pkg/realdebrid/types.go index a68cb0a..bfc6f4a 100644 --- a/pkg/realdebrid/types.go +++ b/pkg/realdebrid/types.go @@ -1,5 +1,10 @@ package realdebrid +import ( + "encoding/json" + "math" +) + type FileJSON struct { FileSize int `json:"filesize"` Link string `json:"link"` @@ -17,13 +22,30 @@ type Torrent struct { ID string `json:"id"` Name string `json:"filename"` Hash string `json:"hash"` - Progress int `json:"progress"` + Progress int `json:"-"` Added string `json:"added"` Bytes int64 `json:"bytes"` Links []string `json:"links"` Files []File `json:"files,omitempty"` } +func (t *Torrent) UnmarshalJSON(data []byte) error { + type Alias Torrent + aux := &struct { + Progress float64 `json:"progress"` + *Alias + }{ + Alias: (*Alias)(t), + } + + if err := json.Unmarshal(data, &aux); err != nil { + return err + } + + t.Progress = int(math.Round(aux.Progress)) + return nil +} + type File struct { ID int `json:"id"` Path string `json:"path"`