qbt_apiv2

package module
v0.0.17 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 24, 2025 License: MIT Imports: 16 Imported by: 7

README

go-qbittorrent-apiv2

Description


qBittorrent web API(v2.8.3) wrapper for go

Requires qBittorrent version ≥ v4.1.

Some of the code is reused from this repository superturkey650/go-qbittorrent.

TODO


At present, the API for RSS has been fully wrapped, as well as partially wrapping the API for torrent and sync. Welcome to submit PR to wrap all APIs.

Installation


go get in your module.

$ go get github.com/NullpointerW/go-qbittorrent-apiv2

Usage


import (
	qbt "github.com/NullpointerW/go-qbittorrent-apiv2"
)

func main() {
	// When connecting to qBittorrent on the local network and
	// 'Bypass from localhost' setting is active.
	// The parameters after 'host' can be ignored.
	// e.g.:NewCli("http://localhost:8991")
	cli, err := qbt.NewCli("http://localhost:8991", "admin", "123456")
	if err != nil {
		fmt.Printf("%+v\n", err)
	}
	torrnet, err := cli.TorrentList(optional{
		"filter": "downloading",
	})
	if err != nil {
		fmt.Printf("%+v\n", err)
	}
	torrnetProp, err := cli.GetTorrentProperties(torrnet[0].Hash)
	if err != nil {
		fmt.Printf("%+v\n", err)
	}
	fmt.Println(torrnetProp.SavePath)
	m, err := cli.LsAutoDLRule()
	if err != nil {
		fmt.Printf("%+v\n", err)
	}
	fmt.Println(m)
}

Documentation

Overview

RSS (experimental) All RSS API methods are under "rss", e.g.: /api/v2/rss/methodName.

Sync Sync API implements requests for obtaining changes since the last request. All Sync API methods are under "sync" e.g.: /api/v2/sync/{methodName}

Torrent management All Torrent management API methods are under "torrents", e.g.: /api/v2/torrents/methodName.

Index

Constants

View Source
const (
	Nil     proxyTyp = iota
	Http             // HTTP proxy without authentication
	Socks5           // SOCKS5 proxy without authentication
	HttpA            // HTTP proxy with authentication
	Socks5A          // SOCKS5 proxy with authentication
	Socks4           // SOCKS4 proxy without authentication
)
View Source
const (
	ResponseBodyOK   = "Ok."
	ResponseBodyFAIL = "Fails."
)

Variables

View Source
var (
	ErrBadResponse = errors.New("bad response")

	ErrLoginfailed = errors.New("login failed")

	ErrAddTorrnetfailed = errors.New("add torrnet failed")
)

Functions

func GetProxyType added in v0.0.17

func GetProxyType(s string) proxyTyp

func RespBodyOk

func RespBodyOk(body io.ReadCloser, bizErr error) error

func RespOk

func RespOk(resp *http.Response, err error) error

Types

type Article

type Article struct {
	Author      string `json:"author"`
	Category    string `json:"category"`
	Date        string `json:"date"`
	Description string `json:"description"`
	Id          string `json:"id"`
	Link        string `json:"link"`
	Title       string `json:"title"`
	TorrentURL  string `json:"torrentURL"`
	IsRead      bool   `json:"isRead,omitempty"`
}

type AutoDLRule

type AutoDLRule struct {
	Enabled                   bool     `json:"enabled"`
	MustContain               string   `json:"mustContain"`
	MustNotContain            string   `json:"mustNotContain"`
	UseRegex                  bool     `json:"useRegex"`
	EpisodeFilter             string   `json:"episodeFilter"`
	SmartFilter               bool     `json:"smartFilter"`
	PreviouslyMatchedEpisodes []string `json:"previouslyMatchedEpisodes"`
	AffectedFeeds             []string `json:"affectedFeeds"`
	IgnoreDays                int      `json:"ignoreDays"`
	LastMatch                 string   `json:"lastMatch"`
	AddPaused                 bool     `json:"addPaused"`
	AssignedCategory          string   `json:"assignedCategory"`
	SavePath                  string   `json:"savePath"`
}

type Categories added in v0.0.17

type Categories struct {
	Name     string `json:"name"`
	SavePath string `json:"savePath"`
}

type Client

type Client struct {
	URL string
	// contains filtered or unexported fields
}

func NewCli

func NewCli(url string, auth ...string) (*Client, error)

NewCli v2

func (*Client) AddCategory

func (c *Client) AddCategory(categoryName, savePath string) error

func (*Client) AddFeed

func (c *Client) AddFeed(url, path string) error

func (*Client) AddFolder

func (c *Client) AddFolder(path string) error

RSS All RSS API methods are under "rss", e.g.: /api/v2/rss/methodName.

func (*Client) AddNewTorrent

func (c *Client) AddNewTorrent(opt Optional) error

func (*Client) AddNewTorrentViaUrl

func (c *Client) AddNewTorrentViaUrl(url, path string, tags ...string) error

func (*Client) DelTags

func (c *Client) DelTags(tags ...string) error

func (*Client) DelTorrents

func (c *Client) DelTorrents(delfile bool, hashes ...string) error

func (*Client) DelTorrentsFs

func (c *Client) DelTorrentsFs(hashes ...string) error

func (*Client) Files

func (c *Client) Files(hash string, indexs ...string) ([]File, error)

func (*Client) GetAllItems

func (c *Client) GetAllItems(withData bool) (RssItem, error)

func (*Client) GetApiVersion

func (c *Client) GetApiVersion() (ver string, err error)

func (*Client) GetMainData

func (c *Client) GetMainData() (Sync, error)

func (*Client) GetMainDataFull added in v0.0.17

func (c *Client) GetMainDataFull() (MainData, error)

func (*Client) GetPreferences

func (c *Client) GetPreferences() (cfg Config, err error)

func (*Client) GetTorrentContents

func (c *Client) GetTorrentContents(hash string, indexes ...int) ([]TorrentFile, error)

func (*Client) GetTorrentProperties

func (c *Client) GetTorrentProperties(hash string) (TorrentProp, error)

func (*Client) GetVersion

func (c *Client) GetVersion() (ver string, err error)

func (*Client) Login

func (c *Client) Login(username, password string) error

Login

func (*Client) LsArtMatchRule added in v0.0.16

func (c *Client) LsArtMatchRule(ruleName string) (map[string][]string, error)

func (*Client) LsAutoDLRule

func (c *Client) LsAutoDLRule() (map[string]AutoDLRule, error)

LsAutoDLRule Get all auto-downloading rules

func (*Client) MarkAsRead

func (c *Client) MarkAsRead(itemPath, articleId string) error

func (*Client) MoveItem

func (c *Client) MoveItem(dst, src string) error

func (*Client) RefreshItem

func (c *Client) RefreshItem(itemPath string) error

func (*Client) RemoveItem

func (c *Client) RemoveItem(path string) error

func (*Client) RenameFile

func (c *Client) RenameFile(hash, old, new string) error

func (*Client) RenameFolder

func (c *Client) RenameFolder(hash, old, new string) error

func (*Client) RmAutoDLRule

func (c *Client) RmAutoDLRule(ruleName string) error

RmAutoDLRule Remove auto-downloading rule

func (*Client) RmCategoies

func (c *Client) RmCategoies(categories ...string) error

func (*Client) RnAutoDLRule

func (c *Client) RnAutoDLRule(newName, oldName string) error

RnAutoDLRule Rename auto-downloading rule

func (*Client) SetAutoDLRule

func (c *Client) SetAutoDLRule(ruleName string, ruleDef AutoDLRule) error

Set auto-downloading rule

func (*Client) SetLocation added in v0.0.17

func (c *Client) SetLocation(location string, hashes ...string) error

func (*Client) SetPreferences

func (c *Client) SetPreferences(cfg Config) (err error)

func (*Client) TorrentList

func (c *Client) TorrentList(opt Optional) ([]Torrent, error)

type Config

type Config struct {
	ConfigWithOutProxyType
	ProxyType proxyTyp `json:"proxy_type"`
}

func (*Config) MarshalJSON added in v0.0.17

func (c *Config) MarshalJSON() ([]byte, error)

func (*Config) UnmarshalJSON added in v0.0.17

func (c *Config) UnmarshalJSON(b []byte) error

type ConfigTmp added in v0.0.17

type ConfigTmp Config

type ConfigVerUnder460 added in v0.0.17

type ConfigVerUnder460 struct {
	*ConfigTmp
}

type ConfigVerUper455 added in v0.0.17

type ConfigVerUper455 struct {
	*ConfigTmp
	ProxyType string `json:"proxy_type"`
}

type ConfigWithOutProxyType added in v0.0.17

type ConfigWithOutProxyType struct {
	AddTrackers                      string `json:"add_trackers"`
	AddTrackersEnabled               bool   `json:"add_trackers_enabled"`
	AltDLLimit                       int    `json:"alt_dl_limit"`
	AltUpLimit                       int    `json:"alt_up_limit"`
	AlternativeWebuiEnabled          bool   `json:"alternative_webui_enabled"`
	AlternativeWebuiPath             string `json:"alternative_webui_path"`
	AnnounceIP                       string `json:"announce_ip"`
	AnnounceToAllTiers               bool   `json:"announce_to_all_tiers"`
	AnnounceToAllTrackers            bool   `json:"announce_to_all_trackers"`
	AnonymousMode                    bool   `json:"anonymous_mode"`
	AsyncIoThreads                   int    `json:"async_io_threads"`
	AutoDeleteMode                   int    `json:"auto_delete_mode"`
	AutoTmmEnabled                   bool   `json:"auto_tmm_enabled"`
	AutorunEnabled                   bool   `json:"autorun_enabled"`
	AutorunOnTorrentAddedEnabled     bool   `json:"autorun_on_torrent_added_enabled"`
	AutorunOnTorrentAddedProgram     string `json:"autorun_on_torrent_added_program"`
	AutorunProgram                   string `json:"autorun_program"`
	BannedIPS                        string `json:"banned_IPs"`
	BittorrentProtocol               int    `json:"bittorrent_protocol"`
	BlockPeersOnPrivilegedPorts      bool   `json:"block_peers_on_privileged_ports"`
	BypassAuthSubnetWhitelist        string `json:"bypass_auth_subnet_whitelist"`
	BypassAuthSubnetWhitelistEnabled bool   `json:"bypass_auth_subnet_whitelist_enabled"`
	BypassLocalAuth                  bool   `json:"bypass_local_auth"`
	CategoryChangedTmmEnabled        bool   `json:"category_changed_tmm_enabled"`
	CheckingMemoryUse                int    `json:"checking_memory_use"`
	ConnectionSpeed                  int    `json:"connection_speed"`
	CurrentInterfaceAddress          string `json:"current_interface_address"`
	CurrentNetworkInterface          string `json:"current_network_interface"`
	Dht                              bool   `json:"dht"`
	DiskCache                        int    `json:"disk_cache"`
	DiskCacheTTL                     int    `json:"disk_cache_ttl"`
	DiskIoReadMode                   int    `json:"disk_io_read_mode"`
	DiskIoType                       int    `json:"disk_io_type"`
	DiskIoWriteMode                  int    `json:"disk_io_write_mode"`
	DiskQueueSize                    int    `json:"disk_queue_size"`
	DLLimit                          int    `json:"dl_limit"`
	DontCountSlowTorrents            bool   `json:"dont_count_slow_torrents"`
	DyndnsDomain                     string `json:"dyndns_domain"`
	DyndnsEnabled                    bool   `json:"dyndns_enabled"`
	DyndnsPassword                   string `json:"dyndns_password"`
	DyndnsService                    int    `json:"dyndns_service"`
	DyndnsUsername                   string `json:"dyndns_username"`
	EmbeddedTrackerPort              int    `json:"embedded_tracker_port"`
	EmbeddedTrackerPortForwarding    bool   `json:"embedded_tracker_port_forwarding"`
	EnableCoalesceReadWrite          bool   `json:"enable_coalesce_read_write"`
	EnableEmbeddedTracker            bool   `json:"enable_embedded_tracker"`
	EnableMultiConnectionsFromSameIP bool   `json:"enable_multi_connections_from_same_ip"`
	EnablePieceExtentAffinity        bool   `json:"enable_piece_extent_affinity"`
	EnableUploadSuggestions          bool   `json:"enable_upload_suggestions"`
	Encryption                       int    `json:"encryption"`
	ExcludedFileNames                string `json:"excluded_file_names"`
	ExcludedFileNamesEnabled         bool   `json:"excluded_file_names_enabled"`
	ExportDir                        string `json:"export_dir"`
	ExportDirFin                     string `json:"export_dir_fin"`
	FilePoolSize                     int    `json:"file_pool_size"`
	HashingThreads                   int    `json:"hashing_threads"`
	IdnSupportEnabled                bool   `json:"idn_support_enabled"`
	IncompleteFilesEXT               bool   `json:"incomplete_files_ext"`
	IPFilterEnabled                  bool   `json:"ip_filter_enabled"`
	IPFilterPath                     string `json:"ip_filter_path"`
	IPFilterTrackers                 bool   `json:"ip_filter_trackers"`
	LimitLANPeers                    bool   `json:"limit_lan_peers"`
	LimitTCPOverhead                 bool   `json:"limit_tcp_overhead"`
	LimitUTPRate                     bool   `json:"limit_utp_rate"`
	ListenPort                       int    `json:"listen_port"`
	Locale                           string `json:"locale"`
	Lsd                              bool   `json:"lsd"`
	MailNotificationAuthEnabled      bool   `json:"mail_notification_auth_enabled"`
	MailNotificationEmail            string `json:"mail_notification_email"`
	MailNotificationEnabled          bool   `json:"mail_notification_enabled"`
	MailNotificationPassword         string `json:"mail_notification_password"`
	MailNotificationSender           string `json:"mail_notification_sender"`
	MailNotificationSMTP             string `json:"mail_notification_smtp"`
	MailNotificationSSLEnabled       bool   `json:"mail_notification_ssl_enabled"`
	MailNotificationUsername         string `json:"mail_notification_username"`
	MaxActiveCheckingTorrents        int    `json:"max_active_checking_torrents"`
	MaxActiveDownloads               int    `json:"max_active_downloads"`
	MaxActiveTorrents                int    `json:"max_active_torrents"`
	MaxActiveUploads                 int    `json:"max_active_uploads"`
	MaxConcurrentHTTPAnnounces       int    `json:"max_concurrent_http_announces"`
	MaxConnec                        int    `json:"max_connec"`
	MaxConnecPerTorrent              int    `json:"max_connec_per_torrent"`
	MaxRatio                         int    `json:"max_ratio"`
	MaxRatioAct                      int    `json:"max_ratio_act"`
	MaxRatioEnabled                  bool   `json:"max_ratio_enabled"`
	MaxSeedingTime                   int    `json:"max_seeding_time"`
	MaxSeedingTimeEnabled            bool   `json:"max_seeding_time_enabled"`
	MaxUploads                       int    `json:"max_uploads"`
	MaxUploadsPerTorrent             int    `json:"max_uploads_per_torrent"`
	MemoryWorkingSetLimit            int    `json:"memory_working_set_limit"`
	OutgoingPortsMax                 int    `json:"outgoing_ports_max"`
	OutgoingPortsMin                 int    `json:"outgoing_ports_min"`
	PeerTos                          int    `json:"peer_tos"`
	PeerTurnover                     int    `json:"peer_turnover"`
	PeerTurnoverCutoff               int    `json:"peer_turnover_cutoff"`
	PeerTurnoverInterval             int    `json:"peer_turnover_interval"`
	PerformanceWarning               bool   `json:"performance_warning"`
	Pex                              bool   `json:"pex"`
	PreallocateAll                   bool   `json:"preallocate_all"`
	ProxyAuthEnabled                 bool   `json:"proxy_auth_enabled"`
	ProxyHostnameLookup              bool   `json:"proxy_hostname_lookup"`
	ProxyIP                          string `json:"proxy_ip"`
	ProxyPassword                    string `json:"proxy_password"`
	ProxyPeerConnections             bool   `json:"proxy_peer_connections"`
	ProxyPort                        int    `json:"proxy_port"`
	ProxyTorrentsOnly                bool   `json:"proxy_torrents_only"`

	ProxyUsername                      string         `json:"proxy_username"`
	QueueingEnabled                    bool           `json:"queueing_enabled"`
	RandomPort                         bool           `json:"random_port"`
	ReannounceWhenAddressChanged       bool           `json:"reannounce_when_address_changed"`
	RecheckCompletedTorrents           bool           `json:"recheck_completed_torrents"`
	RefreshInterval                    int            `json:"refresh_interval"`
	RequestQueueSize                   int            `json:"request_queue_size"`
	ResolvePeerCountries               bool           `json:"resolve_peer_countries"`
	ResumeDataStorageType              string         `json:"resume_data_storage_type"`
	RSSAutoDownloadingEnabled          bool           `json:"rss_auto_downloading_enabled"`
	RSSDownloadRepackProperEpisodes    bool           `json:"rss_download_repack_proper_episodes"`
	RSSMaxArticlesPerFeed              int            `json:"rss_max_articles_per_feed"`
	RSSProcessingEnabled               bool           `json:"rss_processing_enabled"`
	RSSRefreshInterval                 int            `json:"rss_refresh_interval"`
	RSSSmartEpisodeFilters             string         `json:"rss_smart_episode_filters"`
	SavePath                           string         `json:"save_path"`
	SavePathChangedTmmEnabled          bool           `json:"save_path_changed_tmm_enabled"`
	SaveResumeDataInterval             int            `json:"save_resume_data_interval"`
	ScanDirs                           map[string]int `json:"scan_dirs"`
	ScheduleFromHour                   int            `json:"schedule_from_hour"`
	ScheduleFromMin                    int            `json:"schedule_from_min"`
	ScheduleToHour                     int            `json:"schedule_to_hour"`
	ScheduleToMin                      int            `json:"schedule_to_min"`
	SchedulerDays                      int            `json:"scheduler_days"`
	SchedulerEnabled                   bool           `json:"scheduler_enabled"`
	SendBufferLowWatermark             int            `json:"send_buffer_low_watermark"`
	SendBufferWatermark                int            `json:"send_buffer_watermark"`
	SendBufferWatermarkFactor          int            `json:"send_buffer_watermark_factor"`
	SlowTorrentDLRateThreshold         int            `json:"slow_torrent_dl_rate_threshold"`
	SlowTorrentInactiveTimer           int            `json:"slow_torrent_inactive_timer"`
	SlowTorrentULRateThreshold         int            `json:"slow_torrent_ul_rate_threshold"`
	SocketBacklogSize                  int            `json:"socket_backlog_size"`
	SsrfMitigation                     bool           `json:"ssrf_mitigation"`
	StartPausedEnabled                 bool           `json:"start_paused_enabled"`
	StopTrackerTimeout                 int            `json:"stop_tracker_timeout"`
	TempPath                           string         `json:"temp_path"`
	TempPathEnabled                    bool           `json:"temp_path_enabled"`
	TorrentChangedTmmEnabled           bool           `json:"torrent_changed_tmm_enabled"`
	TorrentContentLayout               string         `json:"torrent_content_layout"`
	TorrentStopCondition               string         `json:"torrent_stop_condition"`
	UpLimit                            int            `json:"up_limit"`
	UploadChokingAlgorithm             int            `json:"upload_choking_algorithm"`
	UploadSlotsBehavior                int            `json:"upload_slots_behavior"`
	Upnp                               bool           `json:"upnp"`
	UpnpLeaseDuration                  int            `json:"upnp_lease_duration"`
	UseCategoryPathsInManualMode       bool           `json:"use_category_paths_in_manual_mode"`
	UseHTTPS                           bool           `json:"use_https"`
	UTPTCPMixedMode                    int            `json:"utp_tcp_mixed_mode"`
	ValidateHTTPSTrackerCertificate    bool           `json:"validate_https_tracker_certificate"`
	WebUIAddress                       string         `json:"web_ui_address"`
	WebUIBanDuration                   int            `json:"web_ui_ban_duration"`
	WebUIClickjackingProtectionEnabled bool           `json:"web_ui_clickjacking_protection_enabled"`
	WebUICSRFProtectionEnabled         bool           `json:"web_ui_csrf_protection_enabled"`
	WebUICustomHTTPHeaders             string         `json:"web_ui_custom_http_headers"`
	WebUIDomainList                    string         `json:"web_ui_domain_list"`
	WebUIHostHeaderValidationEnabled   bool           `json:"web_ui_host_header_validation_enabled"`
	WebUIHTTPSCERTPath                 string         `json:"web_ui_https_cert_path"`
	WebUIHTTPSKeyPath                  string         `json:"web_ui_https_key_path"`
	WebUIMaxAuthFailCount              int            `json:"web_ui_max_auth_fail_count"`
	WebUIPort                          int            `json:"web_ui_port"`
	WebUIReverseProxiesList            string         `json:"web_ui_reverse_proxies_list"`
	WebUIReverseProxyEnabled           bool           `json:"web_ui_reverse_proxy_enabled"`
	WebUISecureCookieEnabled           bool           `json:"web_ui_secure_cookie_enabled"`
	WebUISessionTimeout                int            `json:"web_ui_session_timeout"`
	WebUIUpnp                          bool           `json:"web_ui_upnp"`
	WebUIUseCustomHTTPHeadersEnabled   bool           `json:"web_ui_use_custom_http_headers_enabled"`
	WebUIUsername                      string         `json:"web_ui_username"`
	// contains filtered or unexported fields
}

type File

type File struct {
	Availability float64 `json:"availability"`
	Index        int     `json:"index"`
	Name         string  `json:"name"`
	PieceRange   []int   `json:"piece_range"`
	Priority     int     `json:"priority"`
	Progress     float64 `json:"progress"`
	Size         int     `json:"size"`
	IsSeed       bool    `json:"is_seed"`
}

type Item

type Item struct {
	Articles      []Article `json:"articles"`
	HasError      bool      `json:"hasError"`
	IsLoading     bool      `json:"isLoading"`
	LastBuildDate string    `json:"lastBuildDate"`
	Title         string    `json:"title"`
	Uid           string    `json:"uid"`
	Url           string    `json:"url"`
}

Item RSS Schema

type MainData added in v0.0.17

type MainData struct {
	ServerState ServerState
	Torrents    map[string]Torrent
	Categories  map[string]Categories
	Tags        []string
	Trackers    map[string][]string
}

type Optional

type Optional map[string]any

Optional parameters when sending HTTP requests

func (Optional) StringField

func (opt Optional) StringField() map[string]string

type RssItem

type RssItem map[string]Item

map type for `rss/items` responed json schema

func (RssItem) GetWithUrl

func (m RssItem) GetWithUrl(url string) (Item, bool)

GetWithUrl get rss item via rss url if the specified URL does not exist in these items, the returned bool value is false otherwise it is true

type ServerState added in v0.0.17

type ServerState struct {
	AllTimeDownload      int64  `json:"alltime_dl,omitempty"`
	AllTimeUpload        int64  `json:"alltime_ul,omitempty"`
	AverageTimeQueue     int64  `json:"average_time_queue,omitempty"`
	ConnectionStatus     string `json:"connection_status,omitempty"`
	DHTNodes             int64  `json:"dht_nodes,omitempty"`
	DLInfoData           int64  `json:"dl_info_data,omitempty"`
	DLInfoSpeed          int64  `json:"dl_info_speed,omitempty"`
	DLRateLimit          int64  `json:"dl_rate_limit,omitempty"`
	FreeSpaceOnDisk      int64  `json:"free_space_on_disk,omitempty"`
	GlobalRatio          string `json:"global_ratio,omitempty"`
	QueuedIOJobs         int64  `json:"queued_io_jobs,omitempty"`
	Queueing             *bool  `json:"queueing,omitempty"`
	ReadCacheHits        string `json:"read_cache_hits,omitempty"`
	ReadCacheOverload    string `json:"read_cache_overload,omitempty"`
	RefreshInterval      int64  `json:"refresh_interval,omitempty"`
	TotalBuffersSize     int64  `json:"total_buffers_size,omitempty"`
	TotalPeerConnections int64  `json:"total_peer_connections,omitempty"`
	TotalQueuedSize      int64  `json:"total_queued_size,omitempty"`
	TotalWastedSession   int64  `json:"total_wasted_session,omitempty"`
	UpInfoData           int64  `json:"up_info_data,omitempty"`
	UpInfoSpeed          int64  `json:"up_info_speed,omitempty"`
	UpRateLimit          int64  `json:"up_rate_limit,omitempty"`
	UseAltSpeedLimits    *bool  `json:"use_alt_speed_limits,omitempty"`
	UseSubcategories     *bool  `json:"use_subcategories,omitempty"`
	WriteCacheOverload   string `json:"write_cache_overload,omitempty"`
}

type Sync

type Sync struct {
	Categories        map[string]Categories `json:"categories"`
	CategoriesRemoved []string              `json:"categories_removed"`
	FullUpdate        bool                  `json:"full_update"`
	Rid               int                   `json:"rid"`
	ServerState       ServerState           `json:"server_state"`
	Torrents          map[string]Torrent    `json:"torrents"`
	TorrentsRemoved   []string              `json:"torrents_removed"`
	Tags              []string              `json:"tags"`
	TagsRemoved       []string              `json:"tags_removed"`
	Trackers          map[string][]string   `json:"trackers"`
	TrackersRemoved   []string              `json:"trackers_removed"`
}

Sync holds the sync response struct which contains the server state and a map of info hashes to Torrents

type Torrent

type Torrent struct {
	AddedOn           int     `json:"added_on"`
	AmountLeft        int     `json:"amount_left"`
	AutoTmm           bool    `json:"auto_tmm"`
	Availability      float64 `json:"availability"`
	Category          string  `json:"category"`
	Completed         int     `json:"completed"`
	CompletionOn      int     `json:"completion_on"`
	ContentPath       string  `json:"content_path"`
	DLLimit           int     `json:"dl_limit"`
	Dlspeed           int     `json:"dlspeed"`
	DownloadPath      string  `json:"download_path"`
	Downloaded        int     `json:"downloaded"`
	DownloadedSession int     `json:"downloaded_session"`
	Eta               int     `json:"eta"`
	FLPiecePrio       bool    `json:"f_l_piece_prio"`
	ForceStart        bool    `json:"force_start"`
	Hash              string  `json:"hash"`
	InfohashV1        string  `json:"infohash_v1"`
	InfohashV2        string  `json:"infohash_v2"`
	LastActivity      int     `json:"last_activity"`
	MagnetURI         string  `json:"magnet_uri"`
	MaxRatio          float64 `json:"max_ratio"`
	MaxSeedingTime    int     `json:"max_seeding_time"`
	Name              string  `json:"name"`
	NumComplete       int     `json:"num_complete"`
	NumIncomplete     int     `json:"num_incomplete"`
	NumLeechs         int     `json:"num_leechs"`
	NumSeeds          int     `json:"num_seeds"`
	Priority          int     `json:"priority"`
	Progress          float64 `json:"progress"`
	Ratio             float64 `json:"ratio"`
	RatioLimit        float64 `json:"ratio_limit"`
	SavePath          string  `json:"save_path"`
	SeedingTime       int     `json:"seeding_time"`
	SeedingTimeLimit  int     `json:"seeding_time_limit"`
	SeenComplete      int     `json:"seen_complete"`
	SeqDL             bool    `json:"seq_dl"`
	Size              int     `json:"size"`
	State             string  `json:"state"`
	SuperSeeding      bool    `json:"super_seeding"`
	Tags              string  `json:"tags"`
	TimeActive        int     `json:"time_active"`
	TotalSize         int     `json:"total_size"`
	Tracker           string  `json:"tracker"`
	TrackersCount     int     `json:"trackers_count"`
	UpLimit           int     `json:"up_limit"`
	Uploaded          int     `json:"uploaded"`
	UploadedSession   int     `json:"uploaded_session"`
	Upspeed           int     `json:"upspeed"`
}

Torrent holds a basic torrent object from qbittorrent which is `sync/maindata` ,`torrents/info` returned

type TorrentFile

type TorrentFile struct {
	IsSeed       bool    `json:"is_seed"`
	Name         string  `json:"name"`
	Priority     int     `json:"priority"`
	Progress     float64 `json:"progress"`
	Size         int     `json:"size"`
	PieceRange   []int   `json:"piece_range"`
	Availability float64 `json:"availability"`
}

TorrentFile holds a torrent file object from qbittorrent

type TorrentProp

type TorrentProp struct {
	AdditionDate           int     `json:"addition_date"`
	Comment                string  `json:"comment"`
	CompletionDate         int     `json:"completion_date"`
	CreatedBy              string  `json:"created_by"`
	CreationDate           int     `json:"creation_date"`
	DlLimit                int     `json:"dl_limit"`
	DlSpeed                int     `json:"dl_speed"`
	DlSpeedAvg             int     `json:"dl_speed_avg"`
	Eta                    int     `json:"eta"`
	LastSeen               int     `json:"last_seen"`
	NbConnections          int     `json:"nb_connections"`
	NbConnectionsLimit     int     `json:"nb_connections_limit"`
	Peers                  int     `json:"peers"`
	PeersTotal             int     `json:"peers_total"`
	PieceSize              int     `json:"piece_size"`
	PiecesHave             int     `json:"pieces_have"`
	PiecesNum              int     `json:"pieces_num"`
	Reannounce             int     `json:"reannounce"`
	SavePath               string  `json:"save_path"`
	SeedingTime            int     `json:"seeding_time"`
	Seeds                  int     `json:"seeds"`
	SeedsTotal             int     `json:"seeds_total"`
	ShareRatio             float64 `json:"share_ratio"`
	TimeElapsed            int     `json:"time_elapsed"`
	TotalDownloaded        int     `json:"total_downloaded"`
	TotalDownloadedSession int     `json:"total_downloaded_session"`
	TotalSize              int     `json:"total_size"`
	TotalUploaded          int     `json:"total_uploaded"`
	TotalUploadedSession   int     `json:"total_uploaded_session"`
	TotalWasted            int     `json:"total_wasted"`
	UpLimit                int     `json:"up_limit"`
	UpSpeed                int     `json:"up_speed"`
	UpSpeedAvg             int     `json:"up_speed_avg"`
}

TorrentProp holds a torrent object from qbittorrent with more information than BasicTorrent

type Tracker

type Tracker struct {
	Msg      string `json:"msg"`
	NumPeers int    `json:"num_peers"`
	Status   string `json:"status"`
	URL      string `json:"url"`
}

Tracker holds a tracker object from qbittorrent

type WebSeed

type WebSeed struct {
	URL string `json:"url"`
}

WebSeed holds a webseed object from qbittorrent

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL