mirror of
https://github.com/idanoo/autobrr
synced 2025-07-23 16:59:12 +00:00
Feature: Download client rules (#18)
* feat(web): add and update download client rules * feat: add and update download client rules * feat: add active downloads check * chore: update pkg * feat: deluge max active downloads * feat: use basic rules for deluge * feat: add as paused * refactor: download file if needed * feat: better errors qbit
This commit is contained in:
parent
09eb0b1716
commit
c02f16b64d
25 changed files with 628 additions and 228 deletions
|
@ -13,7 +13,6 @@ import (
|
|||
"time"
|
||||
|
||||
"github.com/rs/zerolog/log"
|
||||
|
||||
"golang.org/x/net/publicsuffix"
|
||||
)
|
||||
|
||||
|
|
|
@ -177,3 +177,42 @@ const (
|
|||
// 4 Tracker has been contacted, but it is not working (or doesn't send proper replies)
|
||||
TrackerStatusNotWorking TrackerStatus = 4
|
||||
)
|
||||
|
||||
type ConnectionStatus string
|
||||
|
||||
const (
|
||||
ConnectionStatusConnected = "connected"
|
||||
ConnectionStatusFirewalled = "firewalled"
|
||||
ConnectionStatusDisconnected = "disconnected"
|
||||
)
|
||||
|
||||
// TransferInfo
|
||||
//
|
||||
// https://github.com/qbittorrent/qBittorrent/wiki/WebUI-API-(qBittorrent-4.1)#get-global-transfer-info
|
||||
//
|
||||
// dl_info_speed integer Global download rate (bytes/s)
|
||||
//
|
||||
// dl_info_data integer Data downloaded this session (bytes)
|
||||
//
|
||||
// up_info_speed integer Global upload rate (bytes/s)
|
||||
//
|
||||
// up_info_data integer Data uploaded this session (bytes)
|
||||
//
|
||||
// dl_rate_limit integer Download rate limit (bytes/s)
|
||||
//
|
||||
// up_rate_limit integer Upload rate limit (bytes/s)
|
||||
//
|
||||
// dht_nodes integer DHT nodes connected to
|
||||
//
|
||||
// connection_status string Connection status. See possible values here below
|
||||
//
|
||||
type TransferInfo struct {
|
||||
ConnectionStatus ConnectionStatus `json:"connection_status"`
|
||||
DHTNodes int64 `json:"dht_nodes"`
|
||||
DlInfoData int64 `json:"dl_info_data"`
|
||||
DlInfoSpeed int64 `json:"dl_info_speed"`
|
||||
DlRateLimit int64 `json:"dl_rate_limit"`
|
||||
UpInfoData int64 `json:"up_info_data"`
|
||||
UpInfoSpeed int64 `json:"up_info_speed"`
|
||||
UpRateLimit int64 `json:"up_rate_limit"`
|
||||
}
|
||||
|
|
|
@ -27,8 +27,8 @@ func (c *Client) Login() error {
|
|||
return err
|
||||
|
||||
} else if resp.StatusCode != http.StatusOK { // check for correct status code
|
||||
log.Error().Err(err).Msg("login bad status error")
|
||||
return err
|
||||
log.Error().Err(err).Msgf("login bad status %v error", resp.StatusCode)
|
||||
return errors.New("qbittorrent login bad status")
|
||||
}
|
||||
|
||||
defer resp.Body.Close()
|
||||
|
@ -220,3 +220,29 @@ func (c *Client) ReAnnounceTorrents(hashes []string) error {
|
|||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (c *Client) GetTransferInfo() (*TransferInfo, error) {
|
||||
var info TransferInfo
|
||||
|
||||
resp, err := c.get("transfer/info", nil)
|
||||
if err != nil {
|
||||
log.Error().Err(err).Msg("get torrents error")
|
||||
return nil, err
|
||||
}
|
||||
|
||||
defer resp.Body.Close()
|
||||
|
||||
body, readErr := ioutil.ReadAll(resp.Body)
|
||||
if readErr != nil {
|
||||
log.Error().Err(err).Msg("get torrents read error")
|
||||
return nil, readErr
|
||||
}
|
||||
|
||||
err = json.Unmarshal(body, &info)
|
||||
if err != nil {
|
||||
log.Error().Err(err).Msg("get torrents unmarshal error")
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return &info, nil
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue