rTorrent XMLRPC Reference
Introduction¶
Draft reference for XML-RPC commands for rTorrent.
Info
I've picked up this document from gi-torrent wiki. Copyright © Hans.Hasert@gmail.com
Details¶
system.listMethods¶
Return an array of all available XML-RPC methods on the server.
system.methodSignature¶
Given the name of a method, return an array of legal signatures. Each signature is an array of strings. The first item of each signature is the return type, and any others items are parameter types.
system.methodHelp¶
Given the name of a method, return a help string.
system.multicall¶
Process an array of calls, and return an array of results. Calls should be structs of the form {'methodName': string, 'params': array}
. Each result will either be a single-item array containg the result value, or a struct of the form {'faultCode': int, 'faultString': string}
. This is useful when you need to make lots of small calls without lots of round trips. See rTorrent-system_multicall for syntax.
system.shutdown¶
Shut down the server. Return code is always zero.
Managing Torrents¶
The commands that act on a torrent are prefixed with d.
. They can be used separately (with the hash
as the parameter that distinguishes the specific torrent) or together by using d.multicall
.
d.multicall¶
Process an array of calls, and return an array of results. This is specific for a torrent listing, where the following arguments can be used to acquire information. The first argument is the type of view (f.i. main
, started
, stopped
, hashing
, seeding
) that you want to get returned. The arguments can be used on their own as well, with the 'hash' as the parameter to distinguish the torrents. Whenever in a multicall, the char =
is added at the end.
d.add_peer d.check_hash Initiate a hash check d.close Stop the torrent d.create_link d.delete_link d.delete_tied d.erase Erase the torrent from the list d.get_base_filename d.get_base_path d.get_bitfield d.get_bytes_done d.get_chunk_size Get the size of a block of data (chunk) d.get_chunks_hashed d.get_complete d.get_completed_bytes d.get_completed_chunks d.get_connection_current d.get_connection_leech d.get_connection_seed d.get_creation_date Get the date the torrent was created d.get_custom1 d.get_custom2 d.get_custom3 d.get_custom4 d.get_custom5 d.get_custom_throw d.get_directory d.get_directory_base d.get_down_rate Get the speed in bytes/sec in which the torrent is downloading d.get_down_total d.get_free_diskspace d.get_hash Always query the hash, since it is the index for other calls. d.get_hashing d.get_hashing_failed d.get_ignore_commands d.get_left_bytes d.get_loaded_file d.get_local_id d.get_local_id_html d.get_max_file_size d.get_max_size_pex d.get_message d.get_mode d.get_name The name of the torrent. d.get_peer_exchange d.get_peers_accounted The number of leechers d.get_peers_complete The number of complete peers = seeders d.get_peers_connected d.get_peers_max d.get_peers_min d.get_peers_not_connected Get the peers rtorrent sees but is not connected to d.get_priority Get the priority (0=off, 1=low, 2=normal, 3=high) d.get_priority_str Get the priority as a string (Off, Low, Normal, High) d.get_ratio Get the ratio (upload divided by download) d.get_size_bytes Get the torrent size in bytes d.get_size_chunks Get the size of the torrent in chunks d.get_size_files d.get_size_pex d.get_skip_rate d.get_skip_total d.get_state d.get_state_changed d.get_state_counter d.get_throttle_name d.get_tied_to_file d.get_tracker_focus d.get_tracker_numwant d.get_tracker_size d.get_up_rate Get the speed in bytes/sec in which the torrent is uploading d.get_up_total d.get_uploads_max d.initialize_logs d.is_active Get the active state (0=inactive, 1=active) d.is_hash_checked d.is_hash_checking Get the hash state (0=not hash checking, 1=hash checking) d.is_multi_file d.is_open Get the state of the torrent (0=closed, 1=open) d.is_pex_active d.is_private Get the privacy of the torrent (0=public, 1=private) d.open d.pause d.resume d.save_session d.set_connection_current d.set_custom1 d.set_custom2 d.set_custom3 d.set_custom4 d.set_custom5 d.set_directory d.set_directory_base d.set_hashing_failed d.set_ignore_commands d.set_max_file_size d.set_message d.set_peer_exchange d.set_peers_max d.set_peers_min d.set_priority Set the priority (0 = off (do not allocate up/down slots), 1=low, 2=normal, 3=high) d.set_throttle_name d.set_tied_to_file d.set_tracker_numwant d.set_uploads_max d.start Start the torrent d.stop Stop the torrent d.try_close d.try_start d.try_stop d.update_priorities Update the torrent after changes to file priorities d.views d.views.has d.views.push_back d.views.push_back_unique d.views.remove
Managing Files¶
The commands that act on a torrent are prefixed with f.
. They can be used separately (with the 'hash and file number' as the parameter that distinguishes the specific torrent) or together by using f.multicall
.
f.multicall¶
Process an array of calls, and return an array of results. This is specific for a file listing, where the following arguments can be used to acquire information. The first argument is the hash that you got from the previous torrent listing. Whenever in a multicall, the char '=' is added at the end of the individual commands.
The arguments can be used on their own as well, with the 'hash' as the parameter to distinguish the torrents and the file number to distinguish individual files. There are multiple ways to address a file, but for me the hash:f# method was the only working solution (see rTorrent XML-RPC guide)
'f.get_completed_chunks' Get the chunks that already downloaded 'f.get_frozen_path' 'f.get_last_touched' Last time the file was touched in microseconds since 1970 'f.get_match_depth_next' 'f.get_match_depth_prev' 'f.get_offset' 'f.get_path' Get the path of the file 'f.get_path_components' 'f.get_path_depth' 'f.get_priority' Get the priority (0=do not download, 1=normal, 2=high) 'f.get_range_first' Get the chunk range start 'f.get_range_second' Get the chunk range end 'f.get_size_bytes' Get the size of the file in bytes 'f.get_size_chunks' Get the size of the file in chunks 'f.is_create_queued' 'f.is_created' 'f.is_open' Get the state of the file (0=closed, 1=open) 'f.is_resize_queued' 'f.set_create_queued' 'f.set_priority' Set the priority for the file (0=do not download, 1=normal, 2=high) 'f.set_resize_queued' 'f.unset_create_queued' 'f.unset_resize_queued'
Managing Peers¶
The commands that act on a peer are prefixed with 'p.'. They can be used separately (with the 'hash' as the parameter that distinguishes the specific torrent) or together by using p.multicall.
p.multicall¶
Process an array of calls, and return an array of results. This is specific for a peer listing, where the following arguments can be used to acquire information. The first argument is the hash that you got from the previous torrent listing. Whenever in a multicall, the char '=' is added at the end of the individual commands.
The arguments can be used on their own as well, with the 'hash' as the parameter to distinguish the torrents.
'p.get_address' Get the peer ip address 'p.get_client_version' Get the client version 'p.get_completed_percent' Get the download state of the peer 'p.get_down_rate' Get the speed rTorrent is downloading for this peer 'p.get_down_total' Get the total bytes dowloaded from the peer 'p.get_id' 'p.get_id_html' 'p.get_options_str' 'p.get_peer_rate' Get the total speed of the peer as reported by the peer 'p.get_peer_total' Get the total bytes of the peer as reported by the peer 'p.get_port' Get the port on which the peer is reached 'p.get_up_rate' Get the speed rTorrent is uploading to this peer 'p.get_up_total' Get the total bytes rTorrent uploaded to this peer 'p.is_encrypted' Get the encryption state (0=not, 1=encrypted) 'p.is_incoming' Get the directional state (0=outgoing, 1=incomming) 'p.is_obfuscated' Is the peer obfuscated (0=no, 1=yes) 'p.is_snubbed' Is the peer snubbed (0=no, 1=yes)
Managing Trackers¶
The commands that act on a tracker are prefixed with 't.'. They can be used separately (with the 'hash' as the parameter that distinguishes the specific torrent) or together by using t.multicall.
t.multicall¶
Process an array of calls, and return an array of results. This is specific for a tracker listing, where the following arguments can be used to acquire information. The first argument is the hash that you got from the previous torrent listing. Whenever in a multicall, the char '=' is added at the end of the individual commands.
The arguments can be used on their own as well, with the 'hash' as the parameter to distinguish the torrents.
't.get_group' 't.get_id' 't.get_min_interval' 't.get_normal_interval' 't.get_scrape_complete' Get the complete peers registered on the tracker 't.get_scrape_downloaded' 't.get_scrape_incomplete' Get the incomplete peers registered on the tracker 't.get_scrape_time_last' 't.get_type' Get the tracker type (1=http, 2=udp, 3=dht) 't.get_url' Get the url for the tracker 't.is_enabled' Get the status of the tracker (0=disabled, 1=enabled) 't.is_open' Get the status of the tracker (0=closed, 1=open) 't.set_enabled' Enable the tracker
Note
rTorrent does not support explicit scrape, so the scrape values might be '0'.
dht_statistics¶
Delivers statistics on the dht component. Data is returned in the following structure :
<methodResponse> <params> <param> <value> <struct> <member> <name/> <value><i8/></value> </member> <member> <name/> <value><string/> </member> </struct> </value> </param> </params> </methodResponse>
Parameters returned are :
active 0 = inactive, 1 = active buckets bytes_read bytes_written cycle dht string; reflects setting in .rtorrentrc nodes peers peers tracked by dht peers_max the number of peers in the largest torrent for which DHT acts as tracker queries_received queries_sent replies_received torrents
To functions¶
to_* functions operate on another command, the following operate on a unix timestamp : 'to_date' convert the unix timestamp to a date string 'to_elapsed_time' 'to_gm_date' convert the unix timestamp to a GM date string 'to_gm_time' convert the unix timestamp to a GM time string 'to_time' convert the unix timestamp to a time string 'to_throttle' Syntax is 'to_*=$.....'. Example : 'to_date=$d.get_creation_date'. 'to_kb' convert to Kb 'to_mb' convert to Mb 'to_xb'
Loading Torrents¶
The URL for a restricted site is http://userid:password@Torrent.location.org.
'load' Load/download a torrent URL/file 'load_raw' Load a torrent file content 'load_raw_start' Load a torrent file content and start it 'load_raw_verbose' Load a torrent file content and supply verbose info 'load_start' Load/download a torrent URL/file and start it 'load_start_verbose' Load/download a torrent URL/file, start it and supply verbose info 'load_verbose' Load/download a torrent URL/file and supply verbose info
Other Commands¶
'call_download' 'cat' Used to convert to a string, cat=$...... 'close_low_diskspace' 'close_on_ratio' 'close_untied' 'create_link' 'delete_link' 'dht' 'dht_add_node' 'download_list' 'enable_trackers' 'encoding_list' 'encryption' 'execute' 'execute_capture' 'execute_capture_nothrow' 'execute_log' 'execute_nothrow' 'execute_raw' 'execute_raw_nothrow' 'event.download.closed' 'event.download.erased' 'event.download.finished' 'event.download.hash_done' 'event.download.hash_queued' 'event.download.hash_removed' 'event.download.inserted' 'event.download.inserted_new' 'event.download.inserted_session' 'event.download.opened' 'event.download.paused' 'event.download.resumed' 'false' 'fi.get_filename_last' 'fi.is_file' 'get_bind' 'get_check_hash' 'get_connection_leech' 'get_connection_seed' 'get_dht_port' Get the port configured for Dht 'get_directory' 'get_down_rate' Get the overall download speed in bytes/sec 'get_down_total' 'get_download_rate' Get the max download speed in bytes/sec 'get_handshake_log' 'get_hash_interval' 'get_hash_max_tries' 'get_hash_read_ahead' 'get_http_cacert' 'get_http_capath' 'get_http_proxy' 'get_ip' 'get_key_layout' 'get_max_downloads_div' 'get_max_downloads_global' 'get_max_file_size' 'get_max_memory_usage' 'get_max_open_files' 'get_max_open_http' 'get_max_open_sockets' 'get_max_peers' 'get_max_peers_seed' 'get_max_uploads' 'get_max_uploads_div' 'get_max_uploads_global' 'get_memory_usage' 'get_min_peers' 'get_min_peers_seed' 'get_name' 'get_peer_exchange' 'get_port_open' 'get_port_random' 'get_port_range' Get the configured port range 'get_preload_min_size' 'get_preload_required_rate' 'get_preload_type' 'get_proxy_address' 'get_receive_buffer_size' 'get_safe_free_diskspace' 'get_safe_sync' 'get_scgi_dont_route' 'get_send_buffer_size' 'get_session' 'get_session_lock' 'get_session_on_completion' 'get_split_file_size' 'get_split_suffix' 'get_stats_not_preloaded' 'get_stats_preloaded' 'get_throttle_down_max' 'get_throttle_down_rate' 'get_throttle_up_max' 'get_throttle_up_rate' 'get_timeout_safe_sync' 'get_timeout_sync' 'get_tracker_dump' 'get_tracker_numwant' 'get_up_rate' Get the overall upload speed in bytes/sec 'get_up_total' 'get_upload_rate' Get the max upload speed in bytes/sec 'get_use_udp_trackers' 'get_xmlrpc_size_limit' 'greater' 'group.insert' 'group.insert_persistent_view' 'group.seeding.ratio.command' 'group.seeding.ratio.disable' 'group.seeding.ratio.enable' 'group.seeding.ratio.max' 'group.seeding.ratio.max.set' 'group.seeding.ratio.min' 'group.seeding.ratio.min.set' 'group.seeding.ratio.upload' 'group.seeding.ratio.upload.set' 'group.seeding.view' 'group.seeding.view.set' 'if' 'import' 'less' 'load' 'load_raw' 'load_raw_start' 'load_raw_verbose' 'load_start' 'load_start_verbose' 'load_verbose' 'not' 'on_close' 'on_erase' 'on_finished' 'on_hash_queued' 'on_hash_removed' 'on_insert' 'on_open' 'on_ratio' 'on_start' 'on_stop' 'or' 'print' 'ratio.disable' 'ratio.enable' 'ratio.max' 'ratio.max.set' 'ratio.min' 'ratio.min.set' 'ratio.upload' 'ratio.upload.set' 'remove_untied' 'scgi_local' 'scgi_port' 'schedule' 'schedule_remove' 'scheduler.max_active' 'scheduler.max_active.set' 'scheduler.simple.added' 'scheduler.simple.removed' 'scheduler.simple.update' 'session_save' 'set_bind' 'set_check_hash' 'set_connection_leech' 'set_connection_seed' 'set_dht_port' 'set_dht_throttle' 'set_directory' 'set_download_rate' 'set_handshake_log' 'set_hash_interval' 'set_hash_max_tries' 'set_hash_read_ahead' 'set_http_cacert' 'set_http_capath' 'set_http_proxy' 'set_ip' 'set_key_layout' 'set_max_downloads_div' 'set_max_downloads_global' 'set_max_file_size' 'set_max_memory_usage' 'set_max_open_files' 'set_max_open_http' 'set_max_open_sockets' 'set_max_peers' 'set_max_peers_seed' 'set_max_uploads' 'set_max_uploads_div' 'set_max_uploads_global' 'set_min_peers' 'set_min_peers_seed' 'set_name' 'set_peer_exchange' 'set_port_open' 'set_port_random' 'set_port_range' 'set_preload_min_size' 'set_preload_required_rate' 'set_preload_type' 'set_proxy_address' 'set_receive_buffer_size' 'set_safe_sync' 'set_scgi_dont_route' 'set_send_buffer_size' 'set_session' 'set_session_lock' 'set_session_on_completion' 'set_split_file_size' 'set_split_suffix' 'set_timeout_safe_sync' 'set_timeout_sync' 'set_tracker_dump' 'set_tracker_numwant' 'set_upload_rate' 'set_use_udp_trackers' 'set_xmlrpc_size_limit' 'start_tied' 'stop_on_ratio' 'stop_untied' 'system.client_version' 'system.file_allocate' 'system.file_allocate.set' 'system.file_status_cache.prune' 'system.file_status_cache.size' 'system.get_cwd' 'system.hostname' 'system.library_version' 'system.method.erase' 'system.method.get' 'system.method.has_key' 'system.method.insert' 'system.method.list_keys' 'system.method.set' 'system.method.set_key' 'system.pid' 'system.set_cwd' 'system.set_umask' 'system.time' 'system.time_seconds' 'system.time_usec' 'test.method.simple' 'throttle_down' 'throttle_ip' 'throttle_up' 'tos' 'try_import' 'ui.current_view.set' 'ui.unfocus_download' 'view.event_added' 'view.event_removed' 'view.filter_download' 'view.persistent' 'view.set_not_visible' 'view.set_visible' 'view.size' 'view.size_not_visible' 'view_add' 'view_filter' 'view_filter_on' 'view_list' 'view_set' 'view_sort' 'view_sort_current' 'view_sort_new' 'xmlrpc_dialect'