@ctrl/qbittorrent
Version:
TypeScript api wrapper for qbittorrent using got
1,292 lines (1,291 loc) • 32.2 kB
TypeScript
export interface BuildInfo {
/**
* QT version
*/
qt: string;
/**
* libtorrent version
*/
libtorrent: string;
/**
* Boost version
*/
boost: string;
/**
* OpenSSL version
*/
openssl: string;
/**
* Application bitness (e.g. 64-bit)
*/
bitness: string;
}
/**
* @deprecated Replaced by 'running' in qBittorrent v5.
*/
type TorrentFilterResumed = 'resumed';
/**
* @deprecated Replaced by 'stopped' in qBittorrent v5.
*/
type TorrentFilterPaused = 'paused';
export type TorrentFilters = 'all' | 'downloading' | 'seeding' | 'completed' | TorrentFilterPaused | 'stopped' | 'active' | 'inactive' | TorrentFilterResumed | 'running' | 'stalled' | 'stalled_uploading' | 'stalled_downloading' | 'checking' | 'moving' | 'errored';
export interface Torrent {
/**
* Torrent name
*/
name: string;
hash: string;
magnet_uri: string;
/**
* datetime in seconds
*/
added_on: number;
/**
* Torrent size
*/
size: number;
/**
* Torrent progress
*/
progress: number;
/**
* Torrent download speed (bytes/s)
*/
dlspeed: number;
/**
* Torrent upload speed (bytes/s)
*/
upspeed: number;
/**
* Torrent priority (-1 if queuing is disabled)
*/
priority: number;
/**
* Torrent seeds connected to
*/
num_seeds: number;
/**
* Torrent seeds in the swarm
*/
num_complete: number;
/**
* Torrent leechers connected to
*/
num_leechs: number;
/**
* Torrent leechers in the swarm
*/
num_incomplete: number;
/**
* Torrent share ratio
*/
ratio: number;
/**
* Torrent ETA
*/
eta: number;
/**
* Torrent state
*/
state: TorrentState;
/**
* Torrent sequential download state
*/
seq_dl: boolean;
/**
* Torrent first last piece priority state
*/
f_l_piece_prio: boolean;
/**
* Torrent copletion datetime in seconds
*/
completion_on: number;
/**
* Torrent tracker
*/
tracker: string;
trackers_count: number;
/**
* Torrent download limit
*/
dl_limit: number;
/**
* Torrent upload limit
*/
up_limit: number;
/**
* Amount of data downloaded
*/
downloaded: number;
/**
* Amount of data uploaded
*/
uploaded: number;
/**
* Amount of data downloaded since program open
*/
downloaded_session: number;
/**
* Amount of data uploaded since program open
*/
uploaded_session: number;
/**
* Amount of data left to download
*/
amount_left: number;
/**
* Torrent save path
*/
save_path: string;
/**
* Amount of data completed
*/
completed: number;
/**
* Upload max share ratio
*/
max_ratio: number;
/**
* Upload max seeding time
*/
max_seeding_time: number;
/**
* Upload share ratio limit
*/
ratio_limit: number;
/**
* Upload seeding time limit
*/
seeding_time_limit: number;
/**
* True if super seeding is enabled
*/
super_seeding: boolean;
/**
* Indicates the time when the torrent was last seen complete/whole
*/
seen_complete: number;
/**
* Last time when a chunk was downloaded/uploaded
*/
last_activity: number;
/**
* Size including unwanted data
*/
total_size: number;
time_active: number;
/**
* Category name
*/
category: string;
/**
* Comma-concatenated tag list of the torrent e.g. - "abc, 123"
*/
tags: string;
}
export type TorrentCategories = Record<string, Category>;
interface Category {
name: string;
savePath: string;
}
export declare enum TorrentState {
/**
* Some error occurred, applies to paused torrents
*/
Error = "error",
/**
* Torrent is paused and has finished downloading
* ``pausedUP`` was renamed to ``stoppedUP`` in Web API v2.11.0
*/
PausedUP = "pausedUP",
/**
* Torrent is paused and has NOT finished downloading
* ``pausedDL`` was renamed to ``stoppedDL`` in Web API v2.11.0
*/
PausedDL = "pausedDL",
/**
* Queuing is enabled and torrent is queued for upload
*/
QueuedUP = "queuedUP",
/**
* Queuing is enabled and torrent is queued for download
*/
QueuedDL = "queuedDL",
/**
* Torrent is being seeded and data is being transferred
*/
Uploading = "uploading",
/**
* Torrent is being seeded, but no connection were made
*/
StalledUP = "stalledUP",
/**
* Torrent has finished downloading and is being checked; this status also applies to preallocation (if enabled) and checking resume data on qBt startup
*/
CheckingUP = "checkingUP",
/**
* Same as checkingUP, but torrent has NOT finished downloading
*/
CheckingDL = "checkingDL",
/**
* Torrent is being downloaded and data is being transferred
*/
Downloading = "downloading",
/**
* Torrent has been stopped while downloading
*/
StoppedDL = "stoppedDL",
/**
* Torrent has been stopped while downloading
*/
StoppedUP = "stoppedUP",
/**
* Torrent is being downloaded, but no connection were made
*/
StalledDL = "stalledDL",
/**
* Torrent is forced to downloading to ignore queue limit
*/
ForcedDL = "forcedDL",
/**
* Forced Downloading Metadata
*/
ForcedMetaDL = "ForcedMetaDL",
/**
* Torrent is forced to uploading and ignore queue limit
*/
ForcedUP = "forcedUP",
/**
* Torrent has just started downloading and is fetching metadata
*/
MetaDL = "metaDL",
/**
* Torrent is allocating disk space for download
*/
Allocating = "allocating",
QueuedForChecking = "queuedForChecking",
/**
* Checking resume data on qBt startup
*/
CheckingResumeData = "checkingResumeData",
/**
* Torrent is moving to another location
*/
Moving = "moving",
/**
* Unknown status
*/
Unknown = "unknown",
/**
* Torrent data files is missing
*/
MissingFiles = "missingFiles"
}
export interface TorrentProperties {
/**
* Torrent save path
*/
save_path: string;
/**
* Torrent creation date (Unix timestamp)
*/
creation_date: number;
/**
* Torrent piece size (bytes)
*/
piece_size: number;
/**
* Torrent comment
*/
comment: string;
/**
* Total data wasted for torrent (bytes)
*/
total_wasted: number;
/**
* Total data uploaded for torrent (bytes)
*/
total_uploaded: number;
/**
* Total data uploaded this session (bytes)
*/
total_uploaded_session: number;
/**
* Total data uploaded for torrent (bytes)
*/
total_downloaded: number;
/**
* Total data downloaded this session (bytes)
*/
total_downloaded_session: number;
/**
* Torrent upload limit (bytes/s)
*/
up_limit: number;
/**
* Torrent download limit (bytes/s)
*/
dl_limit: number;
/**
* Torrent elapsed time (seconds)
*/
time_elapsed: number;
/**
* Torrent elapsed time while complete (seconds)
*/
seeding_time: number;
/**
* Torrent connection count
*/
nb_connections: number;
/**
* Torrent connection count limit
*/
nb_connections_limit: number;
/**
* Torrent share ratio
*/
share_ratio: number;
/**
* When this torrent was added (unix timestamp)
*/
addition_date: number;
/**
* Torrent completion date (unix timestamp)
*/
completion_date: number;
/**
* Torrent creator
*/
created_by: string;
/**
* Torrent average download speed (bytes/second)
*/
dl_speed_avg: number;
/**
* Torrent download speed (bytes/second)
*/
dl_speed: number;
/**
* Torrent ETA (seconds)
*/
eta: number;
/**
* Last seen complete date (unix timestamp)
*/
last_seen: number;
/**
* Number of peers connected to
*/
peers: number;
/**
* Number of peers in the swarm
*/
peers_total: number;
/**
* Number of pieces owned
*/
pieces_have: number;
/**
* Number of pieces of the torrent
*/
pieces_num: number;
/**
* Number of seconds until the next announce
*/
reannounce: number;
/**
* Number of seeds connected to
*/
seeds: number;
/**
* Number of seeds in the swarm
*/
seeds_total: number;
/**
* Torrent total size (bytes)
*/
total_size: number;
/**
* Torrent average upload speed (bytes/second)
*/
up_speed_avg: number;
/**
* Torrent upload speed (bytes/second)
*/
up_speed: number;
}
export interface TorrentTrackers {
/**
* Tracker url
*/
url: string;
/**
* Tracker status. See the table below for possible values
*/
status: TorrentTrackerStatus;
/**
* Tracker priority tier. Lower tier trackers are tried before higher tiers
*/
tier: number;
/**
* Number of peers for current torrent, as reported by the tracker
*/
num_peers: number;
/**
* Number of seeds for current torrent, asreported by the tracker
*/
num_seeds: number;
/**
* Number of leeches for current torrent, as reported by the tracker
*/
num_leeches: number;
/**
* Number of completed downlods for current torrent, as reported by the tracker
*/
num_downloaded: number;
/**
* Tracker message (there is no way of knowing what this message is - it's up to tracker admins)
*/
msg: string;
}
export declare enum TorrentTrackerStatus {
/**
* Tracker is disabled (used for DHT, PeX, and LSD)
*/
Disabled = 0,
/**
* Tracker has not been contacted yet
*/
Waiting = 1,
/**
* Tracker has been contacted and is working
*/
Working = 2,
/**
* Tracker is updating
*/
Updating = 3,
/**
* Tracker has been contacted, but it is not working (or doesn't send proper replies)
*/
Errored = 4
}
export interface WebSeed {
/**
* URL of the web seed
*/
url: string;
}
export interface TorrentFile {
/**
* File name (including relative path)
*/
name: string;
/**
* File size (bytes)
*/
size: number;
/**
* File progress (percentage/100)
*/
progress: number;
/**
* File priority. See possible values here below
*/
priority: number;
/**
* True if file is seeding/complete
*/
is_seed: boolean;
/**
* array The first number is the starting piece index and the second number is the ending piece index (inclusive)
*/
piece_range: [number, number];
/**
* Percentage of file pieces currently available
*/
availability: number;
}
export declare enum TorrentFilePriority {
/**
* Do not download
*/
Skip = 0,
/**
* Normal priority
*/
NormalPriority = 1,
/**
* High priority
*/
HighPriority = 6,
/**
* Maximal priority
*/
MaxPriority = 7
}
export declare enum TorrentPieceState {
/**
* Not downloaded yet
*/
NotDownloaded = 0,
/**
* Now downloading
*/
Requested = 1,
/**
* Already downloaded
*/
Downloaded = 2
}
type TrueFalseStr = 'true' | 'false';
export interface AddTorrentOptions {
/**
* not totally sure what its for but its required
* NOTE: not included in deluge options blob. This should be removed and passed in seperatly.
* Added to AddTorrentOptions to make the api's more similar with other clients
* default: torrent
*/
filename: string;
/**
* Download folder
*/
savepath: string;
/**
* Category for the torrent
*/
category: string;
/**
* Tags for the torrent, split by ','
*/
tags: string;
/**
* Skip hash checking. Possible values are true, false (default)
*/
skip_checking: TrueFalseStr;
/**
* Add torrents in the paused state. Possible values are true, false (default)
*/
paused?: TrueFalseStr;
stopped?: TrueFalseStr;
/**
* Control filesystem structure for content (added in Web API v2.7)
* Migrating from rootFolder example rootFolder ? 'Original' : 'NoSubfolder'
*/
contentLayout: 'Original' | 'Subfolder' | 'NoSubfolder';
/**
* Rename torrent
*/
rename: string;
/**
* Set torrent upload speed limit. Unit in bytes/second
*/
upLimit: number;
/**
* Set torrent download speed limit. Unit in bytes/second
*/
dlLimit: number;
/**
* Set torrent share ratio limit
*/
ratioLimit: number;
/**
* Set torrent seeding time limit. Unit in seconds
*/
seedingTimeLimit: number;
/**
* Whether Automatic Torrent Management should be used, disables use of savepath
*/
useAutoTMM: TrueFalseStr;
/**
* Enable sequential download. Possible values are true, false (default)
*/
sequentialDownload: TrueFalseStr;
/**
* Prioritize download first last piece. Possible values are true, false (default)
*/
firstLastPiecePrio: TrueFalseStr;
}
export interface AddMagnetOptions {
savepath: string;
cookie: string;
/**
* Category for the torrent
*/
category: string;
/**
* Tags for the torrent, split by ','
*/
tags: string;
/**
* Skip hash checking. Possible values are true, false (default)
*/
skip_checking: TrueFalseStr;
/**
* Add torrents in the paused state. Possible values are true, false (default)
*/
paused?: TrueFalseStr;
stopped?: TrueFalseStr;
/**
* Create the root folder. Possible values are true, false, unset (default)
*/
root_folder: TrueFalseStr;
/**
* Rename torrent
*/
rename: string;
/**
* Set torrent upload speed limit. Unit in bytes/second
*/
upLimit: number;
/**
* Set torrent download speed limit. Unit in bytes/second
*/
dlLimit: number;
/**
* Whether Automatic Torrent Management should be used, disables use of savepath
*/
useAutoTMM: TrueFalseStr;
/**
* Enable sequential download. Possible values are true, false (default)
*/
sequentialDownload: TrueFalseStr;
/**
* Prioritize download first last piece. Possible values are true, false (default)
*/
firstLastPiecePrio: TrueFalseStr;
}
export interface Preferences {
/**
* Currently selected language (e.g. en_GB for English)
*/
locale: string;
/**
* True if a subfolder should be created when adding a torrent
*/
create_subfolder_enabled: boolean;
/**
* True if torrents should be added in a Paused state
*/
start_paused_enabled: boolean;
/**
* TODO
*/
auto_delete_mode: number;
/**
* True if disk space should be pre-allocated for all files
*/
preallocate_all: boolean;
/**
* True if ".!qB" should be appended to incomplete files
*/
incomplete_files_ext: boolean;
/**
* True if Automatic Torrent Management is enabled by default
*/
auto_tmm_enabled: boolean;
/**
* True if torrent should be relocated when its Category changes
*/
torrent_changed_tmm_enabled: boolean;
/**
* True if torrent should be relocated when the default save path changes
*/
save_path_changed_tmm_enabled: boolean;
/**
* True if torrent should be relocated when its Category's save path changes
*/
category_changed_tmm_enabled: boolean;
/**
* Default save path for torrents, separated by slashes
*/
save_path: string;
/**
* True if folder for incomplete torrents is enabled
*/
temp_path_enabled: boolean;
/**
* Path for incomplete torrents, separated by slashes
*/
temp_path: string;
/**
* Directory to watch for torrent files, value: where torrents loaded from this directory should be downloaded to (see list of possible values below). Slashes are used as path separators; multiple key/value pairs can be specified
* Possible values of scan_dirs:
* 0 Download to the monitored folder
* 1 Download to the default save path
* "/path/to/download/to" Download to this path
*/
scan_dirs: Record<string, 0 | 1 | string>;
/**
* Path to directory to copy .torrent files to. Slashes are used as path separators
*/
export_dir: string;
/**
* Path to directory to copy .torrent files of completed downloads to. Slashes are used as path separators
*/
export_dir_fin: string;
/**
* True if e-mail notification should be enabled
*/
mail_notification_enabled: boolean;
/**
* e-mail where notifications should originate from
*/
mail_notification_sender: string;
/**
* e-mail to send notifications to
*/
mail_notification_email: string;
/**
* smtp server for e-mail notifications
*/
mail_notification_smtp: string;
/**
* True if smtp server requires SSL connection
*/
mail_notification_ssl_enabled: boolean;
/**
* True if smtp server requires authentication
*/
mail_notification_auth_enabled: boolean;
/**
* Username for smtp authentication
*/
mail_notification_username: string;
/**
* Password for smtp authentication
*/
mail_notification_password: string;
/**
* True if external program should be run after torrent has finished downloading
*/
autorun_enabled: boolean;
/**
* Program path/name/arguments to run if autorun_enabled is enabled; path is separated by slashes; you can use %f and %n arguments, which will be expanded by qBittorent as path_to_torrent_file and torrent_name (from the GUI; not the .torrent file name) respectively
*/
autorun_program: string;
/**
* True if torrent queuing is enabled
*/
queueing_enabled: boolean;
/**
* Maximum number of active simultaneous downloads
*/
max_active_downloads: number;
/**
* Maximum number of active simultaneous downloads and uploads
*/
max_active_torrents: number;
/**
* Maximum number of active simultaneous uploads
*/
max_active_uploads: number;
/**
* If true torrents w/o any activity (stalled ones) will not be counted towards max_active_* limits; see [dont_count_slow_torrents](https://www.libtorrent.org/reference-Settings.html#dont_count_slow_torrents) for more information
*/
dont_count_slow_torrents: boolean;
/**
* Download rate in KiB/s for a torrent to be considered "slow"
*/
slow_torrent_dl_rate_threshold: number;
/**
* Upload rate in KiB/s for a torrent to be considered "slow"
*/
slow_torrent_ul_rate_threshold: number;
/**
* Seconds a torrent should be inactive before considered "slow"
*/
slow_torrent_inactive_timer: number;
/**
* True if share ratio limit is enabled
*/
max_ratio_enabled: boolean;
/**
* Get the global share ratio limit
*/
max_ratio: number;
/**
* Action performed when a torrent reaches the maximum share ratio. See list of possible values here below.
*/
max_ratio_act: boolean;
/**
* Port for incoming connections
*/
listen_port: number;
/**
* True if UPnP/NAT-PMP is enabled
*/
upnp: boolean;
/**
* True if the port is randomly selected
*/
random_port: boolean;
/**
* Global download speed limit in KiB/s; -1 means no limit is applied
*/
dl_limit: number;
/**
* Global upload speed limit in KiB/s; -1 means no limit is applied
*/
up_limit: number;
/**
* Maximum global number of simultaneous connections
*/
max_connec: number;
/**
* Maximum number of simultaneous connections per torrent
*/
max_connec_per_torrent: number;
/**
* Maximum number of upload slots
*/
max_uploads: number;
/**
* Maximum number of upload slots per torrent
*/
max_uploads_per_torrent: number;
/**
* Timeout in seconds for a stopped announce request to trackers
*/
stop_tracker_timeout: number;
/**
* True if the advanced libtorrent option piece_extent_affinity is enabled
*/
enable_piece_extent_affinity: boolean;
/**
* Bittorrent Protocol to use
* 0 TCP and μTP
* 1 TCP
* 2 μTP
*/
bittorrent_protocol: 0 | 1 | 2;
/**
* True if [du]l_limit should be applied to uTP connections; this option is only available in qBittorent built against libtorrent version 0.16.X and higher
*/
limit_utp_rate: boolean;
/**
* True if [du]l_limit should be applied to estimated TCP overhead (service data: e.g. packet headers)
*/
limit_tcp_overhead: boolean;
/**
* True if [du]l_limit should be applied to peers on the LAN
*/
limit_lan_peers: boolean;
/**
* Alternative global download speed limit in KiB/s
*/
alt_dl_limit: number;
/**
* Alternative global upload speed limit in KiB/s
*/
alt_up_limit: number;
/**
* True if alternative limits should be applied according to schedule
*/
scheduler_enabled: boolean;
/**
* Scheduler starting hour
*/
schedule_from_hour: number;
/**
* Scheduler starting minute
*/
schedule_from_min: number;
/**
* Scheduler ending hour
*/
schedule_to_hour: number;
/**
* Scheduler ending minute
*/
schedule_to_min: number;
/**
* Scheduler days. See possible values here below
* 0 Every day
* 1 Every weekday
* 2 Every weekend
* 3 Every Monday
* 4 Every Tuesday
* 5 Every Wednesday
* 6 Every Thursday
* 7 Every Friday
* 8 Every Saturday
* 9 Every Sunday
*/
scheduler_days: 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9;
/**
* True if DHT is enabled
*/
dht: boolean;
/**
* True if PeX is enabled
*/
pex: boolean;
/**
* True if LSD is enabled
*/
lsd: boolean;
/**
* See list of possible values here below
* 0 Prefer encryption
* 1 Force encryption on
* 2 Force encryption off
*/
encryption: 0 | 1 | 2;
/**
* If true anonymous mode will be enabled; read more [here](https://github.com/qbittorrent/qBittorrent/wiki/Anonymous-Mode); this option is only available in qBittorent built against libtorrent version 0.16.X and higher
*/
anonymous_mode: boolean;
/**
* See list of possible values here below
*/
proxy_type: number;
/**
* Proxy IP address or domain name
*/
proxy_ip: string;
/**
* Proxy port
*/
proxy_port: number;
/**
* True if peer and web seed connections should be proxified; this option will have any effect only in qBittorent built against libtorrent version 0.16.X and higher
*/
proxy_peer_connections: boolean;
/**
* True proxy requires authentication; doesn't apply to SOCKS4 proxies
*/
proxy_auth_enabled: boolean;
/**
* Username for proxy authentication
*/
proxy_username: string;
/**
* Password for proxy authentication
*/
proxy_password: string;
/**
* True if proxy is only used for torrents
*/
proxy_torrents_only: boolean;
/**
* True if external IP filter should be enabled
*/
ip_filter_enabled: boolean;
/**
* Path to IP filter file (.dat, .p2p, .p2b files are supported); path is separated by slashes
*/
ip_filter_path: string;
/**
* True if IP filters are applied to trackers
*/
ip_filter_trackers: boolean;
/**
* Comma-separated list of domains to accept when performing Host header validation
*/
web_ui_domain_list: string;
/**
* IP address to use for the WebUI
*/
web_ui_address: string;
/**
* WebUI port
*/
web_ui_port: number;
/**
* True if UPnP is used for the WebUI port
*/
web_ui_upnp: boolean;
/**
* WebUI username
*/
web_ui_username: string;
/**
* For API ≥ v2.3.0: Plaintext WebUI password, not readable, write-only. For API < v2.3.0: MD5 hash of WebUI password, hash is generated from the following string: username:Web UI Access:plain_text_web_ui_password
*/
web_ui_password?: string;
/**
* True if WebUI CSRF protection is enabled
*/
web_ui_csrf_protection_enabled: boolean;
/**
* True if WebUI clickjacking protection is enabled
*/
web_ui_clickjacking_protection_enabled: boolean;
/**
* True if WebUI cookie Secure flag is enabled
*/
web_ui_secure_cookie_enabled: boolean;
/**
* Maximum number of authentication failures before WebUI access ban
*/
web_ui_max_auth_fail_count: number;
/**
* WebUI access ban duration in seconds
*/
web_ui_ban_duration: number;
/**
* Seconds until WebUI is automatically signed off
*/
web_ui_session_timeout: number;
/**
* True if WebUI host header validation is enabled
*/
web_ui_host_header_validation_enabled: boolean;
/**
* True if authentication challenge for loopback address (127.0.0.1) should be disabled
*/
bypass_local_auth: boolean;
/**
* True if webui authentication should be bypassed for clients whose ip resides within (at least) one of the subnets on the whitelist
*/
bypass_auth_subnet_whitelist_enabled: boolean;
/**
* (White)list of ipv4/ipv6 subnets for which webui authentication should be bypassed; list entries are separated by commas
*/
bypass_auth_subnet_whitelist: string;
/**
* True if an alternative WebUI should be used
*/
alternative_webui_enabled: boolean;
/**
* File path to the alternative WebUI
*/
alternative_webui_path: string;
/**
* True if WebUI HTTPS access is enabled
*/
use_https: boolean;
/**
* SSL keyfile contents (this is a not a path)
*/
ssl_key: string;
/**
* SSL certificate contents (this is a not a path)
*/
ssl_cert: string;
/**
* For API ≥ v2.0.1: Path to SSL keyfile
*/
web_ui_https_key_path: string;
/**
* For API ≥ v2.0.1: Path to SSL certificate
*/
web_ui_https_cert_path: string;
/**
* True if server DNS should be updated dynamically
*/
dyndns_enabled: boolean;
/**
* See list of possible values here below
*/
dyndns_service: number;
/**
* Username for DDNS service
*/
dyndns_username: string;
/**
* Password for DDNS service
*/
dyndns_password: string;
/**
* Your DDNS domain name
*/
dyndns_domain: string;
/**
* RSS refresh interval
*/
rss_refresh_interval: number;
/**
* Max stored articles per RSS feed
*/
rss_max_articles_per_feed: number;
/**
* Enable processing of RSS feeds
*/
rss_processing_enabled: boolean;
/**
* Enable auto-downloading of torrents from the RSS feeds
*/
rss_auto_downloading_enabled: boolean;
/**
* For API ≥ v2.5.1: Enable downloading of repack/proper Episodes
*/
rss_download_repack_proper_episodes: boolean;
/**
* For API ≥ v2.5.1: List of RSS Smart Episode Filters
*/
rss_smart_episode_filters: string;
/**
* Enable automatic adding of trackers to new torrents
*/
add_trackers_enabled: boolean;
/**
* List of trackers to add to new torrent
*/
add_trackers: string;
/**
* For API ≥ v2.5.1: Enable custom http headers
*/
web_ui_use_custom_http_headers_enabled: boolean;
/**
* For API ≥ v2.5.1: List of custom http headers
*/
web_ui_custom_http_headers: string;
/**
* True enables max seeding time
*/
max_seeding_time_enabled: boolean;
/**
* Number of minutes to seed a torrent
*/
max_seeding_time: number;
/**
* TODO
*/
announce_ip: string;
/**
* True always announce to all tiers
*/
announce_to_all_tiers: boolean;
/**
* True always announce to all trackers in a tier
*/
announce_to_all_trackers: boolean;
/**
* Number of asynchronous I/O threads
*/
async_io_threads: number;
/**
* List of banned IPs
*/
banned_IPs: string;
/**
* Outstanding memory when checking torrents in MiB
*/
checking_memory_use: number;
/**
* IP Address to bind to. Empty String means All addresses
*/
current_interface_address: string;
/**
* Network Interface used
*/
current_network_interface: string;
/**
* Disk cache used in MiB
*/
disk_cache: number;
/**
* Disk cache expiry interval in seconds
*/
disk_cache_ttl: number;
/**
* Port used for embedded tracker
*/
embedded_tracker_port: number;
/**
* True enables coalesce reads & writes
*/
enable_coalesce_read_write: boolean;
/**
* True enables embedded tracker
*/
enable_embedded_tracker: boolean;
/**
* True allows multiple connections from the same IP address
*/
enable_multi_connections_from_same_ip: boolean;
/**
* True enables os cache
*/
enable_os_cache: boolean;
/**
* True enables sending of upload piece suggestions
*/
enable_upload_suggestions: boolean;
/**
* File pool size
*/
file_pool_size: number;
/**
* Maximal outgoing port (0: Disabled)
*/
outgoing_ports_max: number;
/**
* Minimal outgoing port (0: Disabled)
*/
outgoing_ports_min: number;
/**
* True rechecks torrents on completion
*/
recheck_completed_torrents: boolean;
/**
* True resolves peer countries
*/
resolve_peer_countries: boolean;
/**
* Save resume data interval in min
*/
save_resume_data_interval: number;
/**
* Send buffer low watermark in KiB
*/
send_buffer_low_watermark: number;
/**
* Send buffer watermark in KiB
*/
send_buffer_watermark: number;
/**
* Send buffer watermark factor in percent
*/
send_buffer_watermark_factor: number;
/**
* Socket backlog size
*/
socket_backlog_size: number;
/**
* Upload choking algorithm used (see list of possible values below)
*/
upload_choking_algorithm: number;
/**
* Upload slots behavior used (see list of possible values below)
*/
upload_slots_behavior: number;
/**
* UPnP lease duration (0: Permanent lease)
*/
upnp_lease_duration: number;
/**
* μTP-TCP mixed mode algorithm (see list of possible values below)
*/
utp_tcp_mixed_mode: number;
}
export interface TorrentPeersResponse {
full_update: boolean;
peers: Peers;
rid: number;
show_flags: boolean;
}
type Peers = Record<string, TorrentPeer>;
export interface TorrentPeer {
client?: string;
connection?: string;
country?: string;
country_code?: string;
dl_speed?: number;
downloaded?: number;
files?: string;
flags?: string;
flags_desc?: string;
ip?: string;
port?: number;
progress?: number;
relevance?: number;
up_speed?: number;
uploaded?: number;
}
export type DownloadSpeed = Record<string, number>;
export type UploadSpeed = Record<string, number>;
export {};