Minor bug fixes

This commit is contained in:
Mukhtar Akere
2025-02-28 21:25:47 +01:00
parent 0e25de0e3c
commit b1a3d8b762
9 changed files with 65 additions and 44 deletions

View File

@@ -115,9 +115,9 @@ func (c *Config) loadConfig() error {
c.Auth = c.GetAuth() c.Auth = c.GetAuth()
//Validate the config //Validate the config
//if err := validateConfig(c); err != nil { if err := validateConfig(c); err != nil {
// return err return err
//} }
return nil return nil
} }
@@ -143,13 +143,13 @@ func validateDebrids(debrids []Debrid) error {
} }
// Check folder existence concurrently // Check folder existence concurrently
wg.Add(1) //wg.Add(1)
go func(folder string) { //go func(folder string) {
defer wg.Done() // defer wg.Done()
if _, err := os.Stat(folder); os.IsNotExist(err) { // if _, err := os.Stat(folder); os.IsNotExist(err) {
errChan <- fmt.Errorf("debrid folder does not exist: %s", folder) // errChan <- fmt.Errorf("debrid folder does not exist: %s", folder)
} // }
}(debrid.Folder) //}(debrid.Folder)
} }
// Wait for all checks to complete // Wait for all checks to complete

View File

@@ -3,6 +3,7 @@ package request
import ( import (
"crypto/tls" "crypto/tls"
"encoding/json" "encoding/json"
"errors"
"fmt" "fmt"
"golang.org/x/time/rate" "golang.org/x/time/rate"
"io" "io"
@@ -109,7 +110,7 @@ func (c *RLHTTPClient) MakeRequest(req *http.Request) ([]byte, error) {
if !statusOk { if !statusOk {
// Add status code error to the body // Add status code error to the body
b = append(b, []byte(fmt.Sprintf("\nstatus code: %d", res.StatusCode))...) b = append(b, []byte(fmt.Sprintf("\nstatus code: %d", res.StatusCode))...)
return nil, fmt.Errorf(string(b)) return nil, errors.New(string(b))
} }
return b, nil return b, nil
@@ -160,5 +161,8 @@ func ParseRateLimit(rateStr string) *rate.Limiter {
func JSONResponse(w http.ResponseWriter, data interface{}, code int) { func JSONResponse(w http.ResponseWriter, data interface{}, code int) {
w.Header().Set("Content-Type", "application/json") w.Header().Set("Content-Type", "application/json")
w.WriteHeader(code) w.WriteHeader(code)
json.NewEncoder(w).Encode(data) err := json.NewEncoder(w).Encode(data)
if err != nil {
return
}
} }

View File

@@ -2,8 +2,10 @@ package arr
import ( import (
"encoding/json" "encoding/json"
"io"
"net/http" "net/http"
gourl "net/url" gourl "net/url"
"strconv"
"strings" "strings"
) )
@@ -77,24 +79,43 @@ func (a *Arr) GetQueue() []QueueSchema {
query.Add("page", "1") query.Add("page", "1")
query.Add("pageSize", "200") query.Add("pageSize", "200")
results := make([]QueueSchema, 0) results := make([]QueueSchema, 0)
for { for {
url := "api/v3/queue" + "?" + query.Encode() url := "api/v3/queue" + "?" + query.Encode()
resp, err := a.Request(http.MethodGet, url, nil) resp, err := a.Request(http.MethodGet, url, nil)
if err != nil { if err != nil {
break break
} }
defer resp.Body.Close()
var data QueueResponseScheme func() {
if err = json.NewDecoder(resp.Body).Decode(&data); err != nil { defer func(Body io.ReadCloser) {
break err := Body.Close()
} if err != nil {
if len(results) < data.TotalRecords { return
}
}(resp.Body)
var data QueueResponseScheme
if err = json.NewDecoder(resp.Body).Decode(&data); err != nil {
return
}
results = append(results, data.Records...) results = append(results, data.Records...)
query.Set("page", string(rune(data.Page+1)))
} else { if len(results) >= data.TotalRecords {
// We've fetched all records
err = io.EOF // Signal to exit the loop
return
}
query.Set("page", strconv.Itoa(data.Page+1))
}()
if err != nil {
break break
} }
} }
return results return results
} }
@@ -133,13 +154,11 @@ func (a *Arr) CleanupQueue() error {
} }
queueIds := make([]int, 0) queueIds := make([]int, 0)
episodesIds := make([]int, 0)
for _, c := range cleanups { for _, c := range cleanups {
// Delete the messed up episodes from queue // Delete the messed up episodes from queue
for _, m := range c { for _, m := range c {
queueIds = append(queueIds, m.id) queueIds = append(queueIds, m.id)
episodesIds = append(episodesIds, m.episodeId)
} }
} }

View File

@@ -110,7 +110,7 @@ func (dl *DebridLink) GetTorrent(id string) (*torrent.Torrent, error) {
if err != nil { if err != nil {
return t, err return t, err
} }
if res.Success == false { if !res.Success {
return t, fmt.Errorf("error getting torrent") return t, fmt.Errorf("error getting torrent")
} }
if res.Value == nil { if res.Value == nil {
@@ -168,7 +168,7 @@ func (dl *DebridLink) SubmitMagnet(t *torrent.Torrent) (*torrent.Torrent, error)
if err != nil { if err != nil {
return nil, err return nil, err
} }
if res.Success == false || res.Value == nil { if !res.Success || res.Value == nil {
return nil, fmt.Errorf("error adding torrent") return nil, fmt.Errorf("error adding torrent")
} }
data := *res.Value data := *res.Value

View File

@@ -151,7 +151,9 @@ func (r *RealDebrid) SubmitMagnet(t *torrent.Torrent) (*torrent.Torrent, error)
if err != nil { if err != nil {
return nil, err return nil, err
} }
err = json.Unmarshal(resp, &data) if err = json.Unmarshal(resp, &data); err != nil {
return nil, err
}
t.Id = data.Id t.Id = data.Id
t.Debrid = r.Name t.Debrid = r.Name
t.MountPath = r.MountPath t.MountPath = r.MountPath
@@ -201,7 +203,9 @@ func (r *RealDebrid) CheckStatus(t *torrent.Torrent, isSymlink bool) (*torrent.T
return t, err return t, err
} }
var data TorrentInfo var data TorrentInfo
err = json.Unmarshal(resp, &data) if err = json.Unmarshal(resp, &data); err != nil {
return t, err
}
status := data.Status status := data.Status
name := utils.RemoveInvalidChars(data.OriginalFilename) name := utils.RemoveInvalidChars(data.OriginalFilename)
t.Name = name // Important because some magnet changes the name t.Name = name // Important because some magnet changes the name

View File

@@ -46,8 +46,7 @@ func (q *QBit) CategoryContext(next http.Handler) http.Handler {
category = r.FormValue("category") category = r.FormValue("category")
} }
} }
ctx := r.Context() ctx := context.WithValue(r.Context(), "category", strings.TrimSpace(category))
ctx = context.WithValue(r.Context(), "category", strings.TrimSpace(category))
next.ServeHTTP(w, r.WithContext(ctx)) next.ServeHTTP(w, r.WithContext(ctx))
}) })
} }

View File

@@ -16,7 +16,6 @@ type QBit struct {
DownloadFolder string `json:"download_folder"` DownloadFolder string `json:"download_folder"`
Categories []string `json:"categories"` Categories []string `json:"categories"`
Storage *TorrentStorage Storage *TorrentStorage
debug bool
logger zerolog.Logger logger zerolog.Logger
Tags []string Tags []string
RefreshInterval int RefreshInterval int

View File

@@ -169,14 +169,10 @@ func (q *QBit) UpdateTorrentMin(t *Torrent, debridTorrent *debrid.Torrent) *Torr
} }
func (q *QBit) UpdateTorrent(t *Torrent, debridTorrent *debrid.Torrent) *Torrent { func (q *QBit) UpdateTorrent(t *Torrent, debridTorrent *debrid.Torrent) *Torrent {
_db := service.GetDebrid().GetByName(debridTorrent.Debrid)
if debridTorrent == nil && t.ID != "" {
debridTorrent, _ = _db.GetTorrent(t.ID)
}
if debridTorrent == nil { if debridTorrent == nil {
q.logger.Info().Msgf("Torrent with ID %s not found in %s", t.ID, _db.GetName())
return t return t
} }
_db := service.GetDebrid().GetByName(debridTorrent.Debrid)
if debridTorrent.Status != "downloaded" { if debridTorrent.Status != "downloaded" {
debridTorrent, _ = _db.GetTorrent(t.ID) debridTorrent, _ = _db.GetTorrent(t.ID)
} }

View File

@@ -82,16 +82,16 @@ func cleanUpQueuesWorker(ctx context.Context, cfg *config.Config) {
} }
} }
func refreshArrs() { //func refreshArrs() {
for _, a := range service.GetService().Arr.GetAll() { // for _, a := range service.GetService().Arr.GetAll() {
err := a.Refresh() // err := a.Refresh()
if err != nil { // if err != nil {
_logger := getLogger() // _logger := getLogger()
_logger.Debug().Err(err).Msg("Error refreshing arr") // _logger.Debug().Err(err).Msg("Error refreshing arr")
return // return
} // }
} // }
} //}
func cleanUpQueues() { func cleanUpQueues() {
// Clean up queues // Clean up queues