See the hint at the start of this chapter regarding the (sometimes implicit) target argument.

d.multicall2

d.multicall.filtered

download_list

‘d.multicall.filtered’ is rTorrent-PS 1.1+ only d.multicall2 = ‹view›, [‹cmd1›=[‹args›][, ‹cmd2›=…]] ≫ list of lists of results ‹rows of results› d.multicall.filtered = ‹view›, ‹predicate›, [‹cmd1›=[‹args›][, ‹cmd2›=…]] ≫ same as 'multicall2' download_list = ‹view› ≫ list of strings ‹info hashes› These commands iterate over the content of a given view, or default when the view is omitted or empty. download_list always just returns a list of the contained infohashes. d.multicall2 iterates over all items in view and calls the given commands on each, assembling the results of those calls in a row per item. Typically, the given commands either just have a side effect (e.g. d.stop), or return some item attribute (e.g. d.name). d.multicall.filtered is only available in rTorrent-PS, and evaluates the predicate condition as a filter for each item, only calling the commands for items that match it. See elapsed.greater for an example. If you request a lot of attribute values on all items, make sure you set a big enough value for network.xmlrpc.size_limit to hold all the returned data serialized to XML. It is also valid to pass no commands at all to d.multicall2 , but all you get from that is a list of empty lists. Example $ rtxmlrpc --repr d.multicall2 '' tagged d.hash = d.name = d.custom = category [['91C588B9A9B5A71F0462343BC74E2A88C1E0947D', 'sparkylinux-4.0-x86_64-lxde.iso', 'Software'], ['17C14214B60B92FFDEBFB550380ED3866BF49691', 'sparkylinux-4.0-x86_64-xfce.iso', 'Software']] $ rtxmlrpc --repr download_list '' tagged ['91C588B9A9B5A71F0462343BC74E2A88C1E0947D', '17C14214B60B92FFDEBFB550380ED3866BF49691']

d.name

d.base_filename

d.base_path

d.directory

d.directory.set

d.directory_base

d.directory_base.set

d.name = ‹hash› ≫ string ‹name› d.base_filename = ‹hash› ≫ string ‹basename› d.base_path = ‹hash› ≫ string ‹path› d.directory = ‹hash› ≫ string ‹path› d.directory_base = ‹hash› ≫ string ‹path› d.directory.set = ‹hash›, ‹path› ≫ 0 d.directory_base.set = ‹hash›, ‹path› ≫ 0 These commands return various forms of an item’s data path and name, and the last two can change the path, and sometimes the name in the file system. Note that rTorrent-PS can also change the displayed name, by setting the displayname custom attribute using d.custom.set. Basics: d.base_filename is always the basename of d.base_path .

d.directory_base and d.directory are always the same.

d.base_filename and d.base_path are empty on closed items, after a restart, i.e. not too useful (since 0.9.1 or so). Behaviour when d.directory.set + d.directory_base.set are used (tested with 0.9.4): d.base_path always remains unchanged, and item gets closed.

d.start sets d.base_path if resume data is OK.

‘single’ file items (no containing folder, see d.is_multi_file): d.directory[_base].set → d.name is never appended (only in d.base_path ). after start, d.base_path := d.directory/d.name .

‘multi’ items (and yes, they can contain just one file): d.directory.set → d.name is appended. d.directory_base.set → d.name is not appended (i.e. item renamed to last path part). after start, d.base_path := d.directory .

Making sense of it (trying to at least): d.directory is always a directory (thus, single items auto-append d.name in d.base_path and cannot be renamed).

d.directory_base.set means set path plus basename together for a multi item (thus allowing a rename).

only d.directory.set behaves consistently for single+multi, regarding the end result in d.base_path . The definition below is useful, since it always contains a valid path to an item’s data, and can be used in place of the unreliable d.base_path . # Return path to item data (never empty, unlike `d.base_path`); # multi-file items return a path ending with a '/'. method.insert = d.data_path, simple,\ "if=(d.is_multi_file),\ (cat, (d.directory), /),\ (cat, (d.directory), /, (d.name))"

d.state

d.state_changed

d.state_counter

d.is_open

d.is_active

d.state = ‹hash› ≫ bool (0 or 1) d.state_changed = ‹hash› ≫ value ‹timestamp› d.state_counter = ‹hash› ≫ value ‹count› d.is_open = ‹hash› ≫ bool (0 or 1) d.is_active = ‹hash› ≫ bool (0 or 1) These commands return the item’s state (1 = started or paused, 0 = stopped), when that changed the last time, and how often it did change. Note that although pausing / resuming a started item does not change state , the timestamp and counter are. In summary: Closed items are not open , with state=0 .

Paused items are open , but not active , with state=1 .

Started items are both open and active , with state=1 . The three state values are persisted to the session, while active (paused) is not. See How Can I Stop All Torrents From a Shell? on how you can use that to influence the startup behaviour of rTorrent.

d.open

d.close

d.pause

d.resume

d.close.directly

d.try_close

TODO

d.start

d.stop

d.try_start

d.try_stop

Starts or stops an item, including everything that needs to be done for that. For starting, that includes hashing the data if it already exists. On stop, incomplete chunks are discarded as part of the stop. The try variants look at the d.ignore_commands flag and thus only conditionally start/stop the item.

d.loaded_file

d.tied_to_file

d.tied_to_file.set

d.loaded_file is the metafile from which this item was created. After loading from a watch directory, this points to that watch directory, but after a client restart it is the session file (since the item is then loaded from there). d.tied_to_file also starts out as the file the item is initially created from, but can be set to arbitrary values, and an item can be untied using d.delete_tied, leading to an empty value and the deletion of the tied file. One of the stop_untied, close_untied, or remove_untied commands can then be used in a schedule to stop, close, or remove an item that lost its tied file, including when you delete or move it from the outside in a shell or cron job.

d.accepting_seeders

d.accepting_seeders.disable

d.accepting_seeders.enable

d.accepting_seeders = ‹hash› ≫ bool (0 or 1) d.accepting_seeders.disable = ‹hash› ≫ 0 d.accepting_seeders.enable = ‹hash› ≫ 0 Controls whether or not new connections to seeders are sought out. Existing connections are not effected.

d.bitfield

d.bitfield = ‹hash› ≫ string ‹bitfield› Returns the bitfield represented by a string of hexadecimal digits, with each character representing the “completeness” of each field. Note that due to rounding inaccuracies, the number of fields with likely neither align exactly with the number of chunks nor number of bytes.

d.bytes_done

d.bytes_done = ‹hash› ≫ value ‹bytes› This tracks the amount of bytes for a torrent which has been accepted from peers. Note that bytes aren’t considered to be “completed” until the full chunk is downloaded and verified. See d.completed_bytes for that value. See also d.left_bytes for the number of bytes yet to be accepted.

d.check_hash

d.check_hash = ‹hash› ≫ 0 Checks the piece hashes of an item against its data. Started items are paused during the rehashing.

d.chunk_size

d.chunk_size = ‹hash› ≫ value ‹size› Returns the item’s chunk size in bytes (also known as the “piece size”).

d.chunks_hashed

d.chunks_hashed = ‹hash› ≫ value ‹chunks› While a torrent is hash checking, this tracks the number of chunks that have successfully hashed.

d.chunks_seen

TODO

d.complete

d.incomplete

d.complete = ‹hash› ≫ bool (0 or 1) d.incomplete = ‹hash› ≫ bool (0 or 1) Indicates whether an item is complete (100% done) or not.

d.completed_bytes

d.completed_chunks

d.completed_bytes = ‹hash› ≫ value ‹bytes› d.completed_chunks = ‹hash› ≫ value ‹chunks› Returns the number of completed bytes and chunks, respectively. “Completed” means the bytes/chunk has been downloaded and verified against the hash.

d.connection_current

d.connection_current.set

d.connection_leech

d.connection_seed

TODO

d.create_link

d.delete_link

d.create_link = ‹type›, ‹path›, ‹suffix› ≫ 0 d.delete_link = ‹type›, ‹path›, ‹suffix› ≫ 0 These can be used to reflect an item’s state in the file system. Creates or deletes a symbolic link. The link path is the concatenation of path, a value depending on the selected type, and suffix. Available types are: base_path uses the base path of the item,

base_filename uses the base filename of the item,

tied uses the path of the file the item is tied to, see d.tied_to_file.

d.delete_tied

d.delete_tied = ‹hash› ≫ 0 Delete the d.tied_to_file, which obviously also unties the item. This command is bound to the U key by default, and also called whenever an item is erased. Example # Delete metafile from a watch dir directly after loading it # (note that a copy still remains in the session directory) schedule2 = watch_cleaned, 29, 10, \ ((load.normal, (cat,(cfg.watch),"cleaned/*.torrent"), "d.delete_tied="))

d.creation_date = ‹hash› ≫ value ‹timestamp› Returns a timestamp reflecting the .torrent file creation date (i.e. separate from the date the item was loaded into the client). This value can be inspected with tools like lstor: $ lstor -o 'creation date' file.torrent 1480229112 TODO What does this return for magnet files?

d.custom

d.custom.set

d.custom_throw

d.custom1

d.custom1.set

d.custom2…5

d.custom2…5.set

d.custom[_throw] = ‹hash›, string ‹key› ≫ string ‹value› d.custom.set = ‹hash›, string ‹key›, string ‹value› ≫ 0 d.custom1 = ‹hash› ≫ string ‹value› d.custom1.set = ‹hash›, string ‹value› ≫ 0 Set and return custom values using either arbitrary keys, or a limited set of 5 numbered slots. Note that d.custom1 is not the same as d.custom=1 or d.custom=custom1 , and can only be accessed by its assigned commands. If d.custom is called for a key that doesn’t exist, it will return an empty string, unlike d.custom_throw which throws a No such custom value error. Try to avoid the numbered versions, they’re obviously limited, and collisions with other uses are quite likely. ruTorrent for example uses #1 for its label, and the other slots for various other purposes. Warning Never add spaces after the key when using new syntax, i.e. (d.custom, bugfest ) will look for the bugfest␣␣ key.

d.custom.if_z

rTorrent-PS 1.1+ only d.custom.if_z = ‹hash›, string ‹key›, string ‹default› ≫ string ‹value› Just like d.custom, but returns the ‹default› value if the ‹key› does not exist, or if its value is empty. Examples

d.custom.set_if_z

rTorrent-PS 1.1+ only d.custom.set_if_z = ‹hash›, string ‹key›, string ‹value› ≫ 0 This is a companion to d.custom.if_z and sets a custom value only once, if it was missing or empty previously. Examples

d.custom.erase

rTorrent-PS 1.1+ only d.custom.erase = ‹hash›, string ‹key›[, …] ≫ 0 Removes the given custom key(s) – erasing non-existent keys is not an error. Examples

d.custom.toggle

rTorrent-PS 1.1+ only d.custom.toggle = ‹hash›, string ‹key› ≫ value ‹negated› Inverts the truthiness of a custom attribute using 0 or 1 as the only results. Empty strings and 0 become 1 , and any other string becomes 0 . It also returns the current value that was set (as in the value type, i.e. as an integer). Examples

d.custom.as_value

rTorrent-PS 1.1+ only d.custom.as_value = ‹hash›, string ‹key› ≫ value ‹number› Returns a custom attribute as a value (base 10 integer). Missing keys and empty strings are 0 , while non-numbers raise an exception. Major use-cases of this are custom timestamp fields, and querying toggles (see d.custom.toggle). Examples

d.custom.keys

rTorrent-PS 1.1+ only d.custom.keys = ‹hash› ≫ list of string ‹defined keys› Returns a list of custom keys that are defined for an item. Example $ rtxmlrpc --repr d.custom.keys $( rtxmlrpc download_list | head -n1 ) | tr -d \\ n [… 'tm_downloaded', 'tm_last_scrape', 'tm_loaded', 'tm_started']

d.custom.items

rTorrent-PS 1.1+ only d.custom.items = ‹hash› ≫ map of key / value strings ‹defined items› Returns keys and their associated values, for all custom values of an item. Example $ rtxmlrpc --repr d.custom.items $( rtxmlrpc download_list | head -n1 ) {… 'tm_downloaded': '1522406424', 'tm_last_scrape': '1527931151', 'tm_loaded': '1522406432', 'tm_started': '1522406432'}

d.disconnect.seeders

d.disconnect.seeders = ‹hash› ≫ 0 Cleanly drop all connections to seeders. This does not prevent them from reconnecting later on.

d.down.choke_heuristics

d.down.choke_heuristics.leech

d.down.choke_heuristics.seed

d.down.choke_heuristics.set

TODO

d.down.rate

d.down.total

d.down.rate = ‹hash› ≫ value ‹rate [bytes/s]› d.down.total = ‹hash› ≫ value ‹total [bytes]› The total amount and current rate of download traffic for this item. It’s possible for the total download to be greater than d.size_bytes, due to error correction or discarded data.

d.downloads_max

d.downloads_max.set

d.downloads_min

d.downloads_min.set

d.downloads_max = ‹hash› ≫ value ‹max› d.downloads_max.set = ‹hash›, value ‹max› ≫ 0 d.downloads_min = ‹hash› ≫ value ‹max› d.downloads_min.set = ‹hash›, value ‹max› ≫ 0 Control the maximum and minimum download slots that should be used per item. rTorrent will attempt to balance the number of active connections so that the number of unchoked connections is between the minimum and maximum, which means that these are not hard limits, but are instead goals that rTorrent will try to reach. 0 means unlimited, and while d.downloads_max can be set to less than d.downloads_min , rTorrent will then use d.downloads_min as the maximum instead.

d.erase

d.erase = ‹hash› ≫ 0 The item is marked as hash-failed (to invalidate it until it is totally gone) and closed. Any associated session files are removed. The event.download.erased event is fired, and the item is removed from all views it is listed on. The data stored for the item is not touched in any way. See also d.close, event.download.erased.

d.free_diskspace

d.free_diskspace = ‹hash› ≫ value ‹bytes› Return the minimum free space of devices where files of the item reside on. In the usual case without symlinks and the like, it’s the free space of the drive holding d.directory. See also close_low_diskspace.

d.group

d.group.name

d.group.set

TODO

d.hash

d.hash = ‹hash› ≫ string ‹hash› Returns the hash of the torrent in hexadecimal form, with uppercase letters. The most common use is in the command list of a d.multicall2, to return the hash in a list of results. It can also be used to check if a hash already exists in the client – while most other getters can serve the same purpose, this is the obvious one to use for that. If you are looking to cause a hash check, see d.check_hash.

d.hashing

d.hashing = ‹hash› ≫ value ‹hash_status› Returns an integer denoting the state of the hash process. The possible values are: 0 – No hashing is happening.

1 – The very first hash check is occurring.

2 – If pieces.hash.on_completion is enabled, the torrent is in the middle of hashing due to the finish event, and at the end, will be checked for completeness.

3 – A rehash is occurring (i.e. the torrent has already been marked as complete once). See also d.is_hash_checking.

d.hashing_failed

d.hashing_failed.set

d.hashing_failed = ‹hash› ≫ bool (0 or 1) d.hashing_failed.set = ‹hash›, bool (0 or 1) ≫ 0 Checks to see if the hashing has failed or not. This flag is primarily used to determine whether or not a torrent should be marked for hashing when it’s started/resumed.

d.ignore_commands

d.ignore_commands.set

d.ignore_commands = ‹hash› ≫ bool (0 or 1) d.ignore_commands.set = ‹hash›, bool (0 or 1) ≫ 0 The ignore flag controls the d.try_close, d.try_start, and d.try_stop commands, and if set to true exclude the item at hand from reacting to those commands. One use of that is being able to exclude items from ratio control, if you use the try versions in group.seeding.ratio.command definitions.

d.is_hash_checked

d.is_hash_checking

d.is_hash_checked = ‹hash› ≫ bool (0 or 1) d.is_hash_checking = ‹hash› ≫ bool (0 or 1) These mark the hashing state of a torrent. d.is_hash_checked is counter-intuitive in that regardless of how much the torrent has successfully completed hash checking, if a torrent is active and is not in the middle of hashing (i.e. d.is_hash_checking returns 0 ), it will always return 1 .

since rTorrent-PS 1.1 / rTorrent 0.9.7 d.is_meta = ‹hash› ≫ bool (0 or 1) Meta torrents refer to magnet torrents which are still in the process of gathering data from trackers/peers. Once enough data is collected, the meta torrent is removed and a “regular” torrent is created. Since meta torrents lack certain data fields, this is useful for filtering them out of commands that don’t play well with them.

d.is_multi_file

d.is_multi_file = ‹hash› ≫ bool (0 or 1) Returns 1 if the torrents is marked as having multiple files, 0 if it’s a single file. Note that multifile-marked torrents are able to only have 1 actual file in them. See d.size_files for returning the number of files in an item.

d.is_not_partially_done

d.is_partially_done

TODO

d.is_pex_active

d.is_pex_active = ‹hash› ≫ bool (0 or 1) Return whether PEX is active for this item. See protocol.pex to determine if PEX is active globally.

d.is_private

d.is_private = ‹hash› ≫ bool (0 or 1) Indicates if the private flag is set. If it is, the client will not attempt to find new peers in addition to what a tracker returned (i.e. PEX and DHT are inactive).

d.left_bytes

d.left_bytes = ‹hash› ≫ value ‹bytes› Tracks the number of bytes that have yet to be downloaded. See d.bytes_done for the inverse value, e.g. d.left_bytes plus d.bytes_done will always equal d.size_bytes.

d.load_date = ‹hash› ≫ value ‹time› Returns the timestamp of when the torrent was loaded into the client. This is the value used when comparing fast-resume data against the actual files. Note that all torrents are considered to be newly loaded when pulled from the session directory, so this value will update every time rTorrent is restarted.

d.local_id

d.local_id_html

d.local_id = ‹hash› ≫ string ‹ID› d.local_id_html = ‹hash› ≫ string ‹ID› Returns the peer ID assigned to this item. This is the same value that is sent to the tracker when announces are done. d.local_id returns a hex string, while d.local_id_html returns the value percent encoded. See p.id to find this value for remote peers.

d.max_file_size

d.max_file_size.set

d.max_file_size = ‹hash› ≫ value ‹bytes› d.max_file_size.set = ‹hash›, value ‹bytes› ≫ 0 Controls the maximum size of any file in the item. If a file exceeds this amount, the torrent cannot be opened and an error will be shown. Defaults to the value of system.file.max_size at the time the torrent is added.

d.max_size_pex

TODO

d.message

d.message.set

d.message.alert

d.message.alert is rTorrent-PS 1.1+ only d.message = ‹hash› ≫ string ‹message› d.message.set = ‹hash›, string ‹message› ≫ 0 d.message.alert = ‹hash› ≫ value ‹category› Used to store messages relating to the item, such as errors in communicating with the tracker or a hash check failure. The d.message.alert command returns an enum categorizing messages into classes, used for the configurable canvas of rTorrent-PS : ␣ 0 ALERT_NORMAL

♺ 1 ALERT_NORMAL_CYCLING (Tried all trackers)

ʘ 2 ALERT_NORMAL_GHOST (No data)

⚠ 3 ALERT_GENERIC

◔ 4 ALERT_TIMEOUT

⚡ 5 ALERT_CONNECT

↯ 6 ALERT_REQUEST

¿? 7 ALERT_GONE

⨂ 8 ALERT_PERMS (Unauthorized etc.)

⋫ 9 ALERT_DOWN (Tracker is down)

☡ 10 ALERT_DNS (DNS resolving problems)

d.mode

TODO: Does not appear to be functional, only throws Object operator [mode] could not find element .

d.peer_exchange

d.peer_exchange.set

d.peer_exchange = ‹hash› ≫ bool (0 or 1) d.peer_exchange.set = ‹hash›, bool (0 or 1) ≫ 0 Determines if PEX is enabled for this item. By default this is set to the value of protocol.pex.

d.peers_accounted

d.peers_complete

d.peers_connected

TODO

d.peers_max

d.peers_max.set

d.peers_min

d.peers_min.set

d.peers_not_connected

TODO

d.priority

d.priority.set

d.priority_str

d.priority = ‹hash› ≫ value ‹prio› d.priority.set = ‹hash›, value ‹prio› ≫ 0 d.priority_str = ‹hash› ≫ string ‹name› Controls the priority of the item. The possible settings (and the associated value) are as follows: 0 – off

1 – low

2 – normal

3 – high

d.ratio

Returns the current upload/download ratio of the torrent. This is the amount of uploaded data divided by the completed bytes multiplied by 1000. If no bytes have been downloaded, the ratio is considered to be 0 .

d.save_full_session

Flushes the item’s state to files in the session directory (if enabled). This writes all files that contribute to an item’s state, i.e. the ‘full’ state. See also session.save and d.save_resume below.

d.save_resume

Similar to d.save_full_session, but skips writing the original metafile, only flushing the data in the *.libtorrent_resume and *.rtorrent files. The new data is written to *.new files and afterwards renamed, if writing those files succeeded.

d.size_bytes

d.size_chunks

d.size_files

d.size_pex

d.size_bytes = ‹hash› ≫ value ‹bytes› d.size_chunks = ‹hash› ≫ value ‹chunks› d.size_files = ‹hash› ≫ value ‹files› d.size_pex = ‹hash› ≫ value ‹peers› Returns the various size attributes of an item. bytes – The total number of bytes in the item’s files.

chunks – The number of chunks, including the trailing chunk.

files – The number of files (does not include directories).

pex – The number of peers that were reported via the PEX extension. If d.is_pex_active is false, this will be always be 0.

d.skip.rate

d.skip.total

d.skip.rate = ‹hash› ≫ value ‹rate› d.skip.total = ‹hash› ≫ value ‹total› Skipped pieces are ones that were received from peers, but weren’t needed and thus ignored. These values are part of the main download statistics, i.e. d.down.rate and d.down.total.

d.throttle_name

d.throttle_name.set

TODO

d.timestamp.finished = ‹hash› ≫ value ‹epoch› d.timestamp.started = ‹hash› ≫ value ‹epoch› Returns the time (as an epoch integer) the item was finished or started. These values are set when event.download.finished and event.download.resumed are triggered, respectively. If event.download.finished has not triggered yet, d.timestamp.finished will return 0.

d.tracker.insert

d.tracker.insert = ‹hash›, value ‹group›, string ‹url› ≫ 0 Inserts a tracker into a tracker group. A tracker group can be numbered from 0-32, and consists of multiple URLs.

d.tracker.send_scrape

d.tracker.send_scrape = ‹hash›, value ‹delay› ≫ 0 Manually triggers a scrape request after delay seconds. See auto-scrape.rc for an automated rTorrent scraping system.

d.tracker_announce

d.tracker_announce = ‹hash› ≫ 0 Manually triggers a tracker announce.

d.tracker_focus

d.tracker_size

d.tracker_focus = ‹hash› ≫ value ‹num› d.tracker_size = ‹hash› ≫ value ‹num› Returns the number of trackers assigned to the torrent.

d.tracker_numwant

d.tracker_numwant.set

d.tracker_numwant = ‹hash› ≫ value ‹numwant› d.tracker_numwant.set = ‹hash›, value ‹numwant› ≫ 0 Controls the optional numwant parameter sent to the tracker. By default it’s set to -1 , and rTorrent only sends numwant if it is greater than 0.

d.up.choke_heuristics

d.up.choke_heuristics.set

d.up.choke_heuristics.leech

d.up.choke_heuristics.seed

d.up.choke_heuristics.leech.set

d.up.choke_heuristics.seed.set

TODO d.up.choke_heuristics.leech.set and d.up.choke_heuristics.seed.set are private.

d.up.rate

d.up.total

d.up.rate = ‹hash› ≫ value ‹rate [bytes/s]› d.up.total = ‹hash› ≫ value ‹total [bytes]› The total amount and current rate of upload traffic for this item.

d.update_priorities = ‹hash› ≫ 0 After a scripted change to priorities using f.priority.set, this command must be called. It updates the internal state of a download item based on the new priority settings.

d.uploads_max

d.uploads_max.set

d.uploads_min

d.uploads_min.set

d.uploads_max = ‹hash› ≫ value ‹max› d.uploads_max.set = ‹hash›, value ‹max› ≫ 0 d.uploads_min = ‹hash› ≫ value ‹min› d.uploads_min.set = ‹hash›, value ‹min› ≫ 0 Control the maximum and minimum upload slots that should be used. rTorrent will attempt to balance the number of active connections so that the number of unchoked connections is between the given minimum and maximum. 0 means unlimited, and when d.uploads_max is less than d.uploads_min , rTorrent will use d.uploads_min as the maximum instead.

d.views

d.views.has

d.views.push_back

d.views.push_back_unique

d.views.remove

TODO

d.wanted_chunks

d.wanted_chunks = ‹hash› ≫ value ‹chunks› The number of chunks rTorrent wants to download. Contrast with d.completed_chunks, although d.wanted_chunks will not count chunks from files prioritized as “off” as wanted. See f.priority for commands relating to file prioritization.

d.tracker_alias

d.tracker_domain

rTorrent-PS only d.tracker_domain returns a shortened version of the domain in the tracker’s URL, for a given download item. The chosen tracker is the first HTTP one with active peers (seeders or leechers), or else the first one. d.tracker_alias (1.1+ only) is basically the same, but uses the mappings defined by trackers.alias.set_key to transform its return value. The main use-case for that is to be able to sort the rTorrent-PS trackers view by the same values as shown to the very right of the terminal. But you can also use it in a d.multicall.filtered command together with string.equals, to easily select items of one or more specified tracker(s). Examples # Trackers view (all items, sorted by tracker domain and then name). # This will ONLY work if you use rTorrent-PS! view.add = trackers view.sort_new = trackers, "compare=,d.tracker_alias=,d.name=" view.sort_current = trackers, "compare=,d.tracker_alias=,d.name=" $ rtxmlrpc d.multicall.filtered '' 'string.equals=(d.tracker_alias),Linux,Debian' \ d.tracker_domain = d.name = ['linuxtracker.org', 'Container Linux 1745.7.0.iso'] ['linuxtracker.org', 'robolinux64-mate3d-v9.3.iso'] ['bttracker.debian.org', 'debian-9.4.0-amd64-netinst.iso']

d.tracker_scrape.downloaded

d.tracker_scrape.complete

d.tracker_scrape.incomplete