Welcome to transmission-rpc’s documentation!¶
transmission-rpc
is a python3 library
to help your control your transmission daemon remotely.
python2 has be deprecated in 1.0.0
quick start¶
from transmission_rpc import Client
torrent_url = 'http://releases.ubuntu.com/' + \
'18.04/ubuntu-18.04.1-desktop-amd64.iso.torrent'
c = Client(host='localhost', port=9091, user='transmission', password='password')
c.add_torrent(torrent_url)
########
from transmission_rpc import Client
c = Client(username='transmission', password='password')
torrent_url = 'magnet:?xt=urn:btih:e84213a794f3ccd890382a54' + \
'a64ca68b7e925433&dn=ubuntu-18.04.1-desktop-amd64.iso'
c.add_torrent(torrent_url)
########
from transmission_rpc import Client
import requests
torrent_url = 'http://releases.ubuntu.com/' + \
'18.04/ubuntu-18.04.1-desktop-amd64.iso.torrent'
r = requests.get(torrent_url)
with open('a', 'wb') as f:
f.write(r.content)
c = Client(username='trim21', password='123456')
with open('a', 'rb') as f:
c.add_torrent(f)
client.add_torrent
support a url string(could start with file:
),
file-like object(object with read()
method)
or base64 encoded torrent file content.
if torrent
starts with file
,
transmission-rpc
will read it from disk and base64 encode it.
Arguments¶
Each method has it own arguments. You can pass arguments as kwargs when you call methods.
But in python, -
can’t be used in a variable name,
so you need to replace -
with _
.
For example, torrent-add
method support arguments download-dir
,
you should call method like this.
from transmission_rpc import Client
Client().add_torrent(torrent_url, download_dir='/path/to/download/dir')
transmission-rpc
will put
{"download-dir": "/path/to/download/dir"}
in arguments.
helper¶
If you want to know what kwargs you can use for a method,
you can use transmission_rpc.utils.get_arguments()
to get support arguments.
For example, transmission 2.94 is rpc version 15,
so just call print(get_arguments('torrent-add', 15))
rpc method and class method are not same, but reversed
you can find rpc version by transmission version from transmission official rpc spec or mirror here
Client¶
Client is the class handling the Transmission JSON-RPC client protocol.
Torrent ids¶
Many functions in Client takes torrent id. You can find torrent-ids spec in official docs
Timeouts¶
Since most methods results in HTTP requests against Transmission, it is
possible to provide a argument called timeout
. Default timeout is 30 seconds.
-
class
transmission_rpc.client.
Client
(*, protocol: str = 'http', username: str = None, password: str = None, host: str = '127.0.0.1', port: int = 9091, path: str = '/transmission/', timeout: Union[int, float] = 30.0, logger=<Logger transmission-rpc (ERROR)>)[source]¶ -
add_torrent
(torrent, timeout=None, **kwargs)[source]¶ Add torrent to transfers list. Takes a uri to a torrent or base64 encoded torrent data in
torrent
. You can find examples in test code tests/test_client.pyAdditional arguments are:
Argument
RPC
Replaced by
Description
bandwidthPriority
8 -
Priority for this transfer.
cookies
13 -
One or more HTTP cookie(s).
download_dir
1 -
The directory where the downloaded contents will be saved in.
files_unwanted
1 -
A list of file id’s that shouldn’t be downloaded.
files_wanted
1 -
A list of file id’s that should be downloaded.
paused
1 -
If True, does not start the transfer when added.
peer_limit
1 -
Maximum number of peers allowed.
priority_high
1 -
A list of file id’s that should have high priority.
priority_low
1 -
A list of file id’s that should have low priority.
priority_normal
1 -
A list of file id’s that should have normal priority.
Returns a Torrent object with the fields.
-
change_torrent
(ids, timeout=None, **kwargs)[source]¶ Change torrent parameters for the torrent(s) with the supplied id’s. The parameters are:
Argument
RPC
Replaced by
Description
bandwidthPriority
5 -
Priority for this transfer.
downloadLimit
5 -
Set the speed limit for download in Kib/s.
downloadLimited
5 -
Enable download speed limiter.
files_unwanted
1 -
A list of file id’s that shouldn’t be downloaded.
files_wanted
1 -
A list of file id’s that should be downloaded.
honorsSessionLimits
5 -
- Enables or disables the transfer
to honour the upload limit set in the session.
location
1 -
Local download location.
peer_limit
1 -
The peer limit for the torrents.
priority_high
1 -
A list of file id’s that should have high priority.
priority_low
1 -
A list of file id’s that should have normal priority.
priority_normal
1 -
A list of file id’s that should have low priority.
queuePosition
14 -
Position of this transfer in its queue.
seedIdleLimit
10 -
Seed inactivity limit in minutes.
seedIdleMode
10 -
- Seed inactivity mode. 0 = Use session limit,
1 = Use transfer limit, 2 = Disable limit.
seedRatioLimit
5 -
Seeding ratio.
seedRatioMode
5 -
- Which ratio to use. 0 = Use session limit,
1 = Use transfer limit, 2 = Disable limit.
speed_limit_down
1 - 5
downloadLimit
Set the speed limit for download in Kib/s.
speed_limit_down_enabled
1 - 5
downloadLimited
Enable download speed limiter.
speed_limit_up
1 - 5
uploadLimit
Set the speed limit for upload in Kib/s.
speed_limit_up_enabled
1 - 5
uploadLimited
Enable upload speed limiter.
trackerAdd
10 -
Array of string with announce URLs to add.
trackerRemove
10 -
Array of ids of trackers to remove.
trackerReplace
10 -
- Array of (id, url) tuples
where the announce URL should be replaced.
uploadLimit
5 -
Set the speed limit for upload in Kib/s.
uploadLimited
5 -
Enable upload speed limiter.
Note
transmission_rpc will try to automatically fix argument errors.
-
free_space
(path, timeout=None)[source]¶ Get the amount of free space (in bytes) at the provided location.
-
get_files
(ids=None, timeout=None)[source]¶ Get list of files for provided torrent id(s). If ids is empty, information for all torrents are fetched. This function returns a dictionary for each requested torrent id holding the information about the files.
{ <torrent id>: { <file id>: { 'name': <file name>, 'size': <file size in bytes>, 'completed': <bytes completed>, 'priority': <priority ('high'|'normal'|'low')>, 'selected': <selected for download (True|False)> } ... } ... }
-
get_session
(timeout=None)[source]¶ Get session parameters. See the Session class for more information.
-
get_torrent
(torrent_id, arguments=None, timeout=None)[source]¶ Get information for torrent with provided id.
arguments
contains a list of field names to be returned, when None all fields are requested. See the Torrent class for more information.Returns a Torrent object with the requested fields.
-
get_torrents
(ids=None, arguments=None, timeout=None) → List[transmission_rpc.torrent.Torrent][source]¶ Get information for torrents with provided ids. For more information see get_torrent.
Returns a list of Torrent object. :type ids: Union[int, str] :rtype : list[Torrent]
-
locate_torrent_data
(ids, location, timeout=None)[source]¶ Locate torrent data at the provided location.
-
port_test
(timeout=None)[source]¶ Tests to see if your incoming peer port is accessible from the outside world.
-
remove_torrent
(ids, delete_data=False, timeout=None)[source]¶ remove torrent(s) with provided id(s). Local data is removed if delete_data is True, otherwise not.
-
rename_torrent_path
(torrent_id, location, name, timeout=None)[source]¶ Rename directory and/or files for torrent. Remember to use get_torrent or get_torrents to update your file information.
-
property
rpc_version
¶ Get the Transmission RPC version. Trying to deduct if the server don’t have a version value.
-
set_files
(items, timeout=None)[source]¶ Set file properties. Takes a dictionary with similar contents as the result of get_files.
{ <torrent id>: { <file id>: { 'priority': <priority ('high'|'normal'|'low')>, 'selected': <selected for download (True|False)> } ... } ... }
-
set_session
(timeout=None, **kwargs)[source]¶ Set session parameters. The parameters are:
Argument
RPC
Replaced by
Description
alt_speed_down
5 -
Alternate session download speed limit (in Kib/s).
alt_speed_enabled
5 -
Enables alternate global download speed limiter.
alt_speed_time_begin
5 -
Time when alternate speeds should be enabled. Minutes after midnight.
alt_speed_time_day
5 -
Enables alternate speeds scheduling these days.
alt_speed_time_enabled
5 -
Enables alternate speeds scheduling.
alt_speed_time_end
5 -
Time when alternate speeds should be disabled. Minutes after midnight.
alt_speed_up
5 -
Alternate session upload speed limit (in Kib/s).
blocklist_enabled
5 -
Enables the block list
blocklist_url
11 -
Location of the block list. Updated with blocklist-update.
cache_size_mb
10 -
The maximum size of the disk cache in MB
dht_enabled
6 -
Enables DHT.
download_dir
1 -
Set the session download directory.
download_queue_enabled
14 -
Enables download queue.
download_queue_size
14 -
Number of slots in the download queue.
encryption
1 -
Set the session encryption mode, one of
required
,preferred
ortolerated
.idle_seeding_limit
10 -
The default seed inactivity limit in minutes.
idle_seeding_limit_enabled
10 -
Enables the default seed inactivity limit
incomplete_dir
7 -
The path to the directory of incomplete transfer data.
incomplete_dir_enabled
7 -
Enables the incomplete transfer data directory. Otherwise data for incomplete transfers are stored in the download target.
lpd_enabled
9 -
Enables local peer discovery for public torrents.
peer_limit
1 - 5
peer-limit-global
Maximum number of peers.
peer_limit_global
5 -
Maximum number of peers.
peer_limit_per_torrent
5 -
Maximum number of peers per transfer.
peer_port
5 -
Peer port.
peer_port_random_on_start
5 -
Enables randomized peer port on start of Transmission.
pex_allowed
1 - 5
pex-enabled
Allowing PEX in public torrents.
pex_enabled
5 -
Allowing PEX in public torrents.
port
1 - 5
peer-port
Peer port.
port_forwarding_enabled
1 -
Enables port forwarding.
queue_stalled_enabled
14 -
Enable tracking of stalled transfers.
queue_stalled_minutes
14 -
Number of minutes of idle that marks a transfer as stalled.
rename_partial_files
8 -
Appends “.part” to incomplete files
script_torrent_done_enabled
9 -
Whether or not to call the “done” script.
script_torrent_done_filename
9 -
Filename of the script to run when the transfer is done.
seed_queue_enabled
14 -
Enables upload queue.
seed_queue_size
14 -
Number of slots in the upload queue.
seedRatioLimit
5 -
Seed ratio limit. 1.0 means 1:1 download and upload ratio.
seedRatioLimited
5 -
Enables seed ration limit.
speed_limit_down
1 -
Download speed limit (in Kib/s).
speed_limit_down_enabled
1 -
Enables download speed limiting.
speed_limit_up
1 -
Upload speed limit (in Kib/s).
speed_limit_up_enabled
1 -
Enables upload speed limiting.
start_added_torrents
9 -
Added torrents will be started right away.
trash_original_torrent_files
9 -
The .torrent file of added torrents will be deleted.
utp_enabled
13 -
Enables Micro Transport Protocol (UTP).
Note
transmission_rpc will try to automatically fix argument errors.
-
property
timeout
¶ Get current timeout for HTTP queries.
-
Torrent¶
-
class
transmission_rpc.torrent.
Torrent
(client, fields)[source]¶ Torrent is a class holding the data received from Transmission regarding a bittorrent transfer.
All fetched torrent fields are accessible through this class using attributes. This class has a few convenience properties using the torrent data.
-
property
date_active
¶ the attribute “activityDate” as datetime.datetime.
-
property
date_added
¶ the attribute “addedDate” as datetime.datetime.
-
property
date_done
¶ the attribute “doneDate” as datetime.datetime. returns None if “doneDate” is invalid.
-
property
date_started
¶ the attribute “startDate” as datetime.datetime.
-
property
download_limit
¶ The download limit.
Can be a number or None.
-
property
eta
¶ the “eta” as datetime.timedelta.
-
files
()[source]¶ Get list of files for this torrent.
This function returns a dictionary with file information for each file. The file information is has following fields:
{ <file id>: { 'name': <file name>, 'size': <file size in bytes>, 'completed': <bytes completed>, 'priority': <priority ('high'|'normal'|'low')>, 'selected': <selected for download> } ... }
-
format_eta
()[source]¶ Returns the attribute eta formatted as a string.
If eta is -1 the result is ‘not available’
If eta is -2 the result is ‘unknown’
Otherwise eta is formatted as <days> <hours>:<minutes>:<seconds>.
-
property
peer_limit
¶ the peer limit.
-
property
priority
¶ Bandwidth priority as string. Can be one of ‘low’, ‘normal’, ‘high’. This is a mutator.
-
property
progress
¶ download progress in percent.
-
property
queue_position
¶ queue position for this torrent.
-
property
ratio
¶ upload/download ratio.
-
property
seed_idle_limit
¶ seed idle limit in minutes.
-
property
seed_idle_mode
¶ Seed idle mode as string. Can be one of ‘global’, ‘single’ or ‘unlimited’.
global, use session seed idle limit.
single, use torrent seed idle limit. See seed_idle_limit.
unlimited, no seed idle limit.
-
property
seed_ratio_limit
¶ Torrent seed ratio limit as float. Also see seed_ratio_mode. This is a mutator.
-
property
seed_ratio_mode
¶ Seed ratio mode as string. Can be one of ‘global’, ‘single’ or ‘unlimited’.
global, use session seed ratio limit.
single, use torrent seed ratio limit. See seed_ratio_limit.
unlimited, no seed ratio limit.
This is a mutator.
-
property
status
¶ Returns the torrent status. Is either one of ‘check pending’, ‘checking’, ‘downloading’, ‘seeding’ or ‘stopped’. The first two is related to verification.
-
property
upload_limit
¶ upload limit. Can be a number or None.
-
property
Utils¶
-
class
transmission_rpc.utils.
Field
(value, dirty)[source]¶ -
property
dirty
¶ Alias for field number 1
-
property
value
¶ Alias for field number 0
-
property
-
transmission_rpc.utils.
argument_value_convert
(method, argument, value, rpc_version)[source]¶ Check and fix Transmission RPC issues with regards to methods, arguments and values.
-
transmission_rpc.utils.
format_size
(size: int) → Tuple[float, str][source]¶ Format byte size into IEC prefixes, B, KiB, MiB …
-
transmission_rpc.utils.
format_speed
(size: int) → Tuple[float, str][source]¶ Format bytes per second speed into IEC prefixes, B/s, KiB/s, MiB/s …
-
transmission_rpc.utils.
format_timedelta
(delta: datetime.timedelta) → str[source]¶ Format datetime.timedelta into <days> <hours>:<minutes>:<seconds>.
-
transmission_rpc.utils.
format_timestamp
(timestamp: int, utc=False) → str[source]¶ Format unix timestamp into ISO date format.
-
transmission_rpc.utils.
get_arguments
(method, rpc_version)[source]¶ Get arguments for method in specified Transmission RPC version.
-
transmission_rpc.utils.
make_python_name
(name)[source]¶ Convert Transmission RPC name to python compatible name.
-
transmission_rpc.utils.
make_rpc_name
(name)[source]¶ Convert python compatible name to Transmission RPC name.
-
transmission_rpc.utils.
rpc_bool
(arg: Any) → int[source]¶ Convert between Python boolean and Transmission RPC boolean.