Minor bug fixes
This commit is contained in:
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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))
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user