qbittorrent

package module
v1.11.0 Latest Latest
Warning

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

Go to latest
Published: Nov 5, 2024 License: MIT Imports: 21 Imported by: 2

README

go-qbittorrent

Go library for communicating with qBittorrent.

Documentation

Index

Constants

View Source
const (
	ConnectionStatusConnected    = "connected"
	ConnectionStatusFirewalled   = "firewalled"
	ConnectionStatusDisconnected = "disconnected"
)
View Source
const (
	ReannounceMaxAttempts = 50
	ReannounceInterval    = 7 // interval in seconds
)

Variables

View Source
var (
	DefaultTimeout = 60 * time.Second
)
View Source
var (
	ErrReannounceTookTooLong = errors.New("reannounce took too long, deleted torrent")
)

Functions

This section is empty.

Types

type AppPreferences added in v1.7.2

type AppPreferences 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"`
	ProxyType                        interface{} `json:"proxy_type"` // pre 4.5.x this is an int and post 4.6.x it's a string
	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                         struct {
	} `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"`
}

type Category

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

type Client

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

func NewClient

func NewClient(cfg Config) *Client

func (*Client) AddTags added in v1.3.3

func (c *Client) AddTags(hashes []string, tags string) error

func (*Client) AddTagsCtx added in v1.3.3

func (c *Client) AddTagsCtx(ctx context.Context, hashes []string, tags string) error

func (*Client) AddTorrentFromFile

func (c *Client) AddTorrentFromFile(filePath string, options map[string]string) error

AddTorrentFromFile add new torrent from torrent file

func (*Client) AddTorrentFromFileCtx

func (c *Client) AddTorrentFromFileCtx(ctx context.Context, filePath string, options map[string]string) error

func (*Client) AddTorrentFromMemory added in v1.7.2

func (c *Client) AddTorrentFromMemory(buf []byte, options map[string]string) error

func (*Client) AddTorrentFromMemoryCtx added in v1.7.2

func (c *Client) AddTorrentFromMemoryCtx(ctx context.Context, buf []byte, options map[string]string) error

func (*Client) AddTorrentFromUrl

func (c *Client) AddTorrentFromUrl(url string, options map[string]string) error

AddTorrentFromUrl add new torrent from torrent file

func (*Client) AddTorrentFromUrlCtx

func (c *Client) AddTorrentFromUrlCtx(ctx context.Context, url string, options map[string]string) error

func (*Client) CreateCategory

func (c *Client) CreateCategory(category string, path string) error

func (*Client) CreateCategoryCtx

func (c *Client) CreateCategoryCtx(ctx context.Context, category string, path string) error

func (*Client) CreateTags added in v1.4.0

func (c *Client) CreateTags(tags []string) error

func (*Client) CreateTagsCtx added in v1.4.0

func (c *Client) CreateTagsCtx(ctx context.Context, tags []string) error

func (*Client) DecreasePriority added in v1.7.0

func (c *Client) DecreasePriority(hashes []string) error

DecreasePriority decrease priority for torrents specified by hashes

func (*Client) DecreasePriorityCtx added in v1.7.0

func (c *Client) DecreasePriorityCtx(ctx context.Context, hashes []string) error

DecreasePriorityCtx decrease priority for torrents specified by hashes

func (*Client) DeleteTags added in v1.4.0

func (c *Client) DeleteTags(tags []string) error

DeleteTags delete tags from qBittorrent

func (*Client) DeleteTagsCtx added in v1.4.0

func (c *Client) DeleteTagsCtx(ctx context.Context, tags []string) error

DeleteTagsCtx delete tags from qBittorrent

func (*Client) DeleteTorrents

func (c *Client) DeleteTorrents(hashes []string, deleteFiles bool) error

func (*Client) DeleteTorrentsCtx

func (c *Client) DeleteTorrentsCtx(ctx context.Context, hashes []string, deleteFiles bool) error

func (*Client) EditCategory

func (c *Client) EditCategory(category string, path string) error

func (*Client) EditCategoryCtx

func (c *Client) EditCategoryCtx(ctx context.Context, category string, path string) error

func (*Client) EditTracker added in v1.5.0

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

EditTracker edit tracker of torrent

func (*Client) EditTrackerCtx added in v1.5.0

func (c *Client) EditTrackerCtx(ctx context.Context, hash string, old, new string) error

EditTrackerCtx edit tracker of torrent

func (*Client) ExportTorrent added in v1.3.0

func (c *Client) ExportTorrent(hash string) ([]byte, error)

func (*Client) ExportTorrentCtx added in v1.3.0

func (c *Client) ExportTorrentCtx(ctx context.Context, hash string) ([]byte, error)

func (*Client) GetAppPreferences added in v1.7.2

func (c *Client) GetAppPreferences() (AppPreferences, error)

func (*Client) GetAppPreferencesCtx added in v1.7.2

func (c *Client) GetAppPreferencesCtx(ctx context.Context) (AppPreferences, error)

func (*Client) GetAppVersion added in v1.4.0

func (c *Client) GetAppVersion() (string, error)

func (*Client) GetAppVersionCtx added in v1.4.0

func (c *Client) GetAppVersionCtx(ctx context.Context) (string, error)

func (*Client) GetCategories

func (c *Client) GetCategories() (map[string]Category, error)

func (*Client) GetCategoriesCtx

func (c *Client) GetCategoriesCtx(ctx context.Context) (map[string]Category, error)

func (*Client) GetFilesInformation

func (c *Client) GetFilesInformation(hash string) (*TorrentFiles, error)

func (*Client) GetFilesInformationCtx

func (c *Client) GetFilesInformationCtx(ctx context.Context, hash string) (*TorrentFiles, error)

func (*Client) GetFreeSpaceOnDisk added in v1.11.0

func (c *Client) GetFreeSpaceOnDisk() (uint64, error)

func (*Client) GetFreeSpaceOnDiskCtx added in v1.11.0

func (c *Client) GetFreeSpaceOnDiskCtx(ctx context.Context) (uint64, error)

GetFreeSpaceOnDiskCtx get free space on disk for default download dir. Expensive call

func (*Client) GetTags added in v1.4.0

func (c *Client) GetTags() ([]string, error)

func (*Client) GetTagsCtx added in v1.4.0

func (c *Client) GetTagsCtx(ctx context.Context) ([]string, error)

func (*Client) GetTorrentProperties added in v1.7.2

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

func (*Client) GetTorrentPropertiesCtx added in v1.7.2

func (c *Client) GetTorrentPropertiesCtx(ctx context.Context, hash string) (TorrentProperties, error)

func (*Client) GetTorrentTrackers

func (c *Client) GetTorrentTrackers(hash string) ([]TorrentTracker, error)

func (*Client) GetTorrentTrackersCtx

func (c *Client) GetTorrentTrackersCtx(ctx context.Context, hash string) ([]TorrentTracker, error)

func (*Client) GetTorrents

func (c *Client) GetTorrents(o TorrentFilterOptions) ([]Torrent, error)

func (*Client) GetTorrentsActiveDownloads

func (c *Client) GetTorrentsActiveDownloads() ([]Torrent, error)

func (*Client) GetTorrentsActiveDownloadsCtx

func (c *Client) GetTorrentsActiveDownloadsCtx(ctx context.Context) ([]Torrent, error)

func (*Client) GetTorrentsCtx

func (c *Client) GetTorrentsCtx(ctx context.Context, o TorrentFilterOptions) ([]Torrent, error)

func (*Client) GetTorrentsRaw

func (c *Client) GetTorrentsRaw() (string, error)

func (*Client) GetTorrentsRawCtx

func (c *Client) GetTorrentsRawCtx(ctx context.Context) (string, error)

func (*Client) GetTransferInfo

func (c *Client) GetTransferInfo() (*TransferInfo, error)

func (*Client) GetTransferInfoCtx

func (c *Client) GetTransferInfoCtx(ctx context.Context) (*TransferInfo, error)

func (*Client) GetWebAPIVersion added in v1.4.0

func (c *Client) GetWebAPIVersion() (string, error)

func (*Client) GetWebAPIVersionCtx added in v1.4.0

func (c *Client) GetWebAPIVersionCtx(ctx context.Context) (string, error)

func (*Client) IncreasePriority added in v1.7.0

func (c *Client) IncreasePriority(hashes []string) error

IncreasePriority increase priority for torrents specified by hashes

func (*Client) IncreasePriorityCtx added in v1.7.0

func (c *Client) IncreasePriorityCtx(ctx context.Context, hashes []string) error

IncreasePriorityCtx increase priority for torrents specified by hashes

func (*Client) LoginCtx

func (c *Client) LoginCtx(ctx context.Context) error

func (*Client) Pause

func (c *Client) Pause(hashes []string) error

func (*Client) PauseCtx

func (c *Client) PauseCtx(ctx context.Context, hashes []string) error

func (*Client) ReAnnounceTorrents

func (c *Client) ReAnnounceTorrents(hashes []string) error

func (*Client) ReAnnounceTorrentsCtx

func (c *Client) ReAnnounceTorrentsCtx(ctx context.Context, hashes []string) error

func (*Client) ReannounceTorrentWithRetry added in v1.1.0

func (c *Client) ReannounceTorrentWithRetry(ctx context.Context, hash string, opts *ReannounceOptions) error

func (*Client) Recheck

func (c *Client) Recheck(hashes []string) error

func (*Client) RecheckCtx

func (c *Client) RecheckCtx(ctx context.Context, hashes []string) error

func (*Client) RemoveCategories

func (c *Client) RemoveCategories(categories []string) error

func (*Client) RemoveCategoriesCtx

func (c *Client) RemoveCategoriesCtx(ctx context.Context, categories []string) error

func (*Client) RemoveTags added in v1.3.3

func (c *Client) RemoveTags(hashes []string, tags string) error

RemoveTags remove tags from torrents specified by hashes

func (*Client) RemoveTagsCtx added in v1.3.3

func (c *Client) RemoveTagsCtx(ctx context.Context, hashes []string, tags string) error

RemoveTagsCtx remove tags from torrents specified by hashes

func (*Client) RenameFile

func (c *Client) RenameFile(hash, oldPath, newPath string) error

func (*Client) RenameFileCtx

func (c *Client) RenameFileCtx(ctx context.Context, hash, oldPath, newPath string) error

func (*Client) Resume

func (c *Client) Resume(hashes []string) error

func (*Client) ResumeCtx

func (c *Client) ResumeCtx(ctx context.Context, hashes []string) error

func (*Client) SetAutoManagement

func (c *Client) SetAutoManagement(hashes []string, enable bool) error

func (*Client) SetAutoManagementCtx

func (c *Client) SetAutoManagementCtx(ctx context.Context, hashes []string, enable bool) error

func (*Client) SetCategory

func (c *Client) SetCategory(hashes []string, category string) error

func (*Client) SetCategoryCtx

func (c *Client) SetCategoryCtx(ctx context.Context, hashes []string, category string) error

func (*Client) SetForceStart

func (c *Client) SetForceStart(hashes []string, value bool) error

func (*Client) SetForceStartCtx

func (c *Client) SetForceStartCtx(ctx context.Context, hashes []string, value bool) error

func (*Client) SetLocation

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

func (*Client) SetLocationCtx

func (c *Client) SetLocationCtx(ctx context.Context, hashes []string, location string) error

func (*Client) SetMaxPriority added in v1.7.0

func (c *Client) SetMaxPriority(hashes []string) error

SetMaxPriority set torrents to max priority specified by hashes

func (*Client) SetMaxPriorityCtx added in v1.7.0

func (c *Client) SetMaxPriorityCtx(ctx context.Context, hashes []string) error

SetMaxPriorityCtx set torrents to max priority specified by hashes

func (*Client) SetMinPriority added in v1.7.0

func (c *Client) SetMinPriority(hashes []string) error

SetMinPriority set torrents to min priority specified by hashes

func (*Client) SetMinPriorityCtx added in v1.7.0

func (c *Client) SetMinPriorityCtx(ctx context.Context, hashes []string) error

SetMinPriorityCtx set torrents to min priority specified by hashes

func (*Client) SetPreferences added in v1.8.0

func (c *Client) SetPreferences(prefs map[string]interface{}) error

func (*Client) SetPreferencesCtx added in v1.8.0

func (c *Client) SetPreferencesCtx(ctx context.Context, prefs map[string]interface{}) error

func (*Client) SetPreferencesMaxActiveDownloads added in v1.8.0

func (c *Client) SetPreferencesMaxActiveDownloads(max int) error

SetPreferencesMaxActiveDownloads set max active downloads

func (*Client) SetPreferencesMaxActiveTorrents added in v1.8.0

func (c *Client) SetPreferencesMaxActiveTorrents(max int) error

SetPreferencesMaxActiveTorrents set max active torrents

func (*Client) SetPreferencesMaxActiveUploads added in v1.8.0

func (c *Client) SetPreferencesMaxActiveUploads(max int) error

SetPreferencesMaxActiveUploads set max active uploads

func (*Client) SetPreferencesQueueingEnabled added in v1.8.0

func (c *Client) SetPreferencesQueueingEnabled(enabled bool) error

SetPreferencesQueueingEnabled enable/disable torrent queueing

func (*Client) SetTorrentUploadLimit added in v1.10.0

func (c *Client) SetTorrentUploadLimit(hash string, limit int64) error

SetTorrentUploadLimit set upload limit for torrent specified by hash

func (*Client) SetTorrentUploadLimitCtx added in v1.10.0

func (c *Client) SetTorrentUploadLimitCtx(ctx context.Context, hash string, limit int64) error

SetTorrentUploadLimitCtx set upload limit for torrent specified by hash

func (*Client) Start added in v1.11.0

func (c *Client) Start(hashes []string) error

func (*Client) StartCtx added in v1.11.0

func (c *Client) StartCtx(ctx context.Context, hashes []string) error

func (*Client) Stop added in v1.11.0

func (c *Client) Stop(hashes []string) error

func (*Client) StopCtx added in v1.11.0

func (c *Client) StopCtx(ctx context.Context, hashes []string) error

func (*Client) SyncMainDataCtx added in v1.11.0

func (c *Client) SyncMainDataCtx(ctx context.Context, rid int64) (*MainData, error)

SyncMainDataCtx Sync API implements requests for obtaining changes since the last request. Response ID. If not provided, rid=0 will be assumed. If the given rid is different from the one of last server reply, full_update will be true (see the server reply details for more info)

func (*Client) ToggleFirstLastPiecePrio added in v1.9.0

func (c *Client) ToggleFirstLastPiecePrio(hashes []string) error

ToggleFirstLastPiecePrio toggles the priority of the first and last pieces of torrents specified by hashes

func (*Client) ToggleFirstLastPiecePrioCtx added in v1.9.0

func (c *Client) ToggleFirstLastPiecePrioCtx(ctx context.Context, hashes []string) error

ToggleFirstLastPiecePrioCtx toggles the priority of the first and last pieces of torrents specified by hashes

type Config

type Config struct {
	Host     string
	Username string
	Password string

	// TLS skip cert validation
	TLSSkipVerify bool

	// HTTP Basic auth username
	BasicUser string

	// HTTP Basic auth password
	BasicPass string

	Timeout int
	Log     *log.Logger
}

type ConnectionStatus

type ConnectionStatus string

type ContentLayout

type ContentLayout string
const (
	ContentLayoutOriginal        ContentLayout = "Original"
	ContentLayoutSubfolderNone   ContentLayout = "NoSubfolder"
	ContentLayoutSubfolderCreate ContentLayout = "Subfolder"
)

type MainData added in v1.11.0

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

type ReannounceOptions added in v1.1.0

type ReannounceOptions struct {
	Interval        int
	MaxAttempts     int
	DeleteOnFailure bool
}

type ServerState added in v1.11.0

type ServerState struct {
	AlltimeDl            int64  `json:"alltime_dl"`
	AlltimeUl            int64  `json:"alltime_ul"`
	AverageTimeQueue     int    `json:"average_time_queue"`
	ConnectionStatus     string `json:"connection_status"`
	DhtNodes             int    `json:"dht_nodes"`
	DlInfoData           int64  `json:"dl_info_data"`
	DlInfoSpeed          int    `json:"dl_info_speed"`
	DlRateLimit          int    `json:"dl_rate_limit"`
	FreeSpaceOnDisk      uint64 `json:"free_space_on_disk"`
	GlobalRatio          string `json:"global_ratio"`
	QueuedIoJobs         int    `json:"queued_io_jobs"`
	Queueing             bool   `json:"queueing"`
	ReadCacheHits        string `json:"read_cache_hits"`
	ReadCacheOverload    string `json:"read_cache_overload"`
	RefreshInterval      int    `json:"refresh_interval"`
	TotalBuffersSize     int    `json:"total_buffers_size"`
	TotalPeerConnections int    `json:"total_peer_connections"`
	TotalQueuedSize      int    `json:"total_queued_size"`
	TotalWastedSession   int64  `json:"total_wasted_session"`
	UpInfoData           int64  `json:"up_info_data"`
	UpInfoSpeed          int    `json:"up_info_speed"`
	UpRateLimit          int    `json:"up_rate_limit"`
	UseAltSpeedLimits    bool   `json:"use_alt_speed_limits"`
	WriteCacheOverload   string `json:"write_cache_overload"`
}

type Torrent

type Torrent struct {
	AddedOn            int64        `json:"added_on"`
	AmountLeft         int64        `json:"amount_left"`
	AutoManaged        bool         `json:"auto_tmm"`
	Availability       float64      `json:"availability"`
	Category           string       `json:"category"`
	Completed          int64        `json:"completed"`
	CompletionOn       int64        `json:"completion_on"`
	ContentPath        string       `json:"content_path"`
	DlLimit            int64        `json:"dl_limit"`
	DlSpeed            int64        `json:"dlspeed"`
	DownloadPath       string       `json:"download_path"`
	Downloaded         int64        `json:"downloaded"`
	DownloadedSession  int64        `json:"downloaded_session"`
	ETA                int64        `json:"eta"`
	FirstLastPiecePrio 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       int64        `json:"last_activity"`
	MagnetURI          string       `json:"magnet_uri"`
	MaxRatio           float64      `json:"max_ratio"`
	MaxSeedingTime     int64        `json:"max_seeding_time"`
	Name               string       `json:"name"`
	NumComplete        int64        `json:"num_complete"`
	NumIncomplete      int64        `json:"num_incomplete"`
	NumLeechs          int64        `json:"num_leechs"`
	NumSeeds           int64        `json:"num_seeds"`
	Priority           int64        `json:"priority"`
	Progress           float64      `json:"progress"`
	Ratio              float64      `json:"ratio"`
	RatioLimit         float64      `json:"ratio_limit"`
	SavePath           string       `json:"save_path"`
	SeedingTime        int64        `json:"seeding_time"`
	SeedingTimeLimit   int64        `json:"seeding_time_limit"`
	SeenComplete       int64        `json:"seen_complete"`
	SequentialDownload bool         `json:"seq_dl"`
	Size               int64        `json:"size"`
	State              TorrentState `json:"state"`
	SuperSeeding       bool         `json:"super_seeding"`
	Tags               string       `json:"tags"`
	TimeActive         int64        `json:"time_active"`
	TotalSize          int64        `json:"total_size"`
	Tracker            string       `json:"tracker"`
	TrackersCount      int64        `json:"trackers_count"`
	UpLimit            int64        `json:"up_limit"`
	Uploaded           int64        `json:"uploaded"`
	UploadedSession    int64        `json:"uploaded_session"`
	UpSpeed            int64        `json:"upspeed"`
}

type TorrentAddOptions

type TorrentAddOptions struct {
	Stopped            bool // introduced in Web API v2.11.0 (v5.0.0)
	Paused             bool
	SkipHashCheck      bool
	ContentLayout      ContentLayout
	SavePath           string
	AutoTMM            bool
	Category           string
	Tags               string
	LimitUploadSpeed   int64
	LimitDownloadSpeed int64
	LimitRatio         float64
	LimitSeedTime      int64
	Rename             string
	FirstLastPiecePrio bool
	SequentialDownload bool
}

func (*TorrentAddOptions) Prepare

func (o *TorrentAddOptions) Prepare() map[string]string

type TorrentFiles

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

type TorrentFilter

type TorrentFilter string
const (
	// Torrent is paused
	TorrentFilterAll TorrentFilter = "all"

	// Torrent is active
	TorrentFilterActive TorrentFilter = "active"

	// Torrent is inactive
	TorrentFilterInactive TorrentFilter = "inactive"

	// Torrent is completed
	TorrentFilterCompleted TorrentFilter = "completed"

	// Torrent is resumed
	TorrentFilterResumed TorrentFilter = "resumed"

	// Torrent is paused
	TorrentFilterPaused TorrentFilter = "paused"

	// Torrent is stopped
	TorrentFilterStopped TorrentFilter = "stopped"

	// Torrent is stalled
	TorrentFilterStalled TorrentFilter = "stalled"

	// Torrent is being seeded and data is being transferred
	TorrentFilterUploading TorrentFilter = "uploading"

	// Torrent is being seeded, but no connection were made
	TorrentFilterStalledUploading TorrentFilter = "stalled_uploading"

	// Torrent is being downloaded and data is being transferred
	TorrentFilterDownloading TorrentFilter = "downloading"

	// Torrent is being downloaded, but no connection were made
	TorrentFilterStalledDownloading TorrentFilter = "stalled_downloading"

	// Torrent is errored
	TorrentFilterError TorrentFilter = "errored"
)

type TorrentFilterOptions

type TorrentFilterOptions struct {
	Filter   TorrentFilter
	Category string
	Tag      string
	Sort     string
	Reverse  bool
	Limit    int
	Offset   int
	Hashes   []string
}

type TorrentProperties added in v1.7.2

type TorrentProperties 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"`
	DownloadPath           string  `json:"download_path"`
	Eta                    int     `json:"eta"`
	Hash                   string  `json:"hash"`
	InfohashV1             string  `json:"infohash_v1"`
	InfohashV2             string  `json:"infohash_v2"`
	IsPrivate              bool    `json:"is_private"`
	LastSeen               int     `json:"last_seen"`
	Name                   string  `json:"name"`
	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        int64   `json:"total_downloaded"`
	TotalDownloadedSession int64   `json:"total_downloaded_session"`
	TotalSize              int64   `json:"total_size"`
	TotalUploaded          int64   `json:"total_uploaded"`
	TotalUploadedSession   int64   `json:"total_uploaded_session"`
	TotalWasted            int64   `json:"total_wasted"`
	UpLimit                int     `json:"up_limit"`
	UpSpeed                int     `json:"up_speed"`
	UpSpeedAvg             int     `json:"up_speed_avg"`
}

type TorrentState

type TorrentState string
const (
	// Some error occurred, applies to paused torrents
	TorrentStateError TorrentState = "error"

	// Torrent data files is missing
	TorrentStateMissingFiles TorrentState = "missingFiles"

	// Torrent is being seeded and data is being transferred
	TorrentStateUploading TorrentState = "uploading"

	// Torrent is paused and has finished downloading
	TorrentStatePausedUp TorrentState = "pausedUP"

	// Torrent is stopped and has finished downloading
	TorrentStateStoppedUp TorrentState = "stoppedUP"

	// Queuing is enabled and torrent is queued for upload
	TorrentStateQueuedUp TorrentState = "queuedUP"

	// Torrent is being seeded, but no connection were made
	TorrentStateStalledUp TorrentState = "stalledUP"

	// Torrent has finished downloading and is being checked
	TorrentStateCheckingUp TorrentState = "checkingUP"

	// Torrent is forced to uploading and ignore queue limit
	TorrentStateForcedUp TorrentState = "forcedUP"

	// Torrent is allocating disk space for download
	TorrentStateAllocating TorrentState = "allocating"

	// Torrent is being downloaded and data is being transferred
	TorrentStateDownloading TorrentState = "downloading"

	// Torrent has just started downloading and is fetching metadata
	TorrentStateMetaDl TorrentState = "metaDL"

	// Torrent is paused and has NOT finished downloading
	TorrentStatePausedDl TorrentState = "pausedDL"

	// Torrent is stopped and has NOT finished downloading
	TorrentStateStoppedDl TorrentState = "stoppedDL"

	// Queuing is enabled and torrent is queued for download
	TorrentStateQueuedDl TorrentState = "queuedDL"

	// Torrent is being downloaded, but no connection were made
	TorrentStateStalledDl TorrentState = "stalledDL"

	// Same as checkingUP, but torrent has NOT finished downloading
	TorrentStateCheckingDl TorrentState = "checkingDL"

	// Torrent is forced to downloading to ignore queue limit
	TorrentStateForcedDl TorrentState = "forcedDL"

	// Checking resume data on qBt startup
	TorrentStateCheckingResumeData TorrentState = "checkingResumeData"

	// Torrent is moving to another location
	TorrentStateMoving TorrentState = "moving"

	// Unknown status
	TorrentStateUnknown TorrentState = "unknown"
)

type TorrentTracker

type TorrentTracker struct {
	//Tier          int   `json:"tier"` // can be both empty "" and int
	Url           string        `json:"url"`
	Status        TrackerStatus `json:"status"`
	NumPeers      int           `json:"num_peers"`
	NumSeeds      int           `json:"num_seeds"`
	NumLeechers   int           `json:"num_leechers"`
	NumDownloaded int           `json:"num_downloaded"`
	Message       string        `json:"msg"`
}

type TorrentTrackersResponse

type TorrentTrackersResponse struct {
	Trackers []TorrentTracker `json:"trackers"`
}

type TrackerStatus

type TrackerStatus int

TrackerStatus https://github.com/qbittorrent/qBittorrent/wiki/WebUI-API-(qBittorrent-4.1)#get-torrent-trackers

const (
	// 0 Tracker is disabled (used for DHT, PeX, and LSD)
	TrackerStatusDisabled TrackerStatus = 0

	// 1 Tracker has not been contacted yet
	TrackerStatusNotContacted TrackerStatus = 1

	// 2 Tracker has been contacted and is working
	TrackerStatusOK TrackerStatus = 2

	// 3 Tracker is updating
	TrackerStatusUpdating TrackerStatus = 3

	// 4 Tracker has been contacted, but it is not working (or doesn't send proper replies)
	TrackerStatusNotWorking TrackerStatus = 4
)

type TransferInfo

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"`
}

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

Directories

Path Synopsis
examples

Jump to

Keyboard shortcuts

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