This is transmissionrpc. This module helps using Python to connect to a Transmission JSON-RPC service. transmissionrpc is compatible with Transmission 1.31 and later.
transmissionrpc is licensed under the MIT license.
Transmission is available at Python Package Index. To install the transmissionrpc python module use easy_install or pip.
$ easy_install transmissionrpc
Note
You might need administrator privileges to install python modules.
You may also download the tarball from Python Package Index. Untar and install.
$ tar -xzf transmissionrpc-0.11.tar.gz
$ cd transmissionrpc-0.11
$ python setup.py install
transmissionrpc has the following dependencies.
- Python >= 2.6
- Six >= 1.1.0, https://pypi.python.org/pypi/six/
Problems with transmissionrpc should be reported through the issue tracker at bitbucket. Please look through the existing issues before opening a new issue.
Transmission is hosted at bitbucket using mercurial. To get a working copy, run
$ hg clone http://www.bitbucket.org/blueluna/transmissionrpc/
The source code will be fetched and stored the directory transmissionrpc.
Then install the module using
$ python setup.py install
Or if you wish to further develop transmissionrpc itself use
$ python setup.py develop
This will link this directory to the library as transmissionrpc.
Now that transmissionrpc has been installed, run python and start to poke around. Following will create a RPC client and list all torrents.
>>> import transmissionrpc
>>> tc = transmissionrpc.Client('localhost', port=9091)
>>> tc.get_torrents()
List will return a dictionary of Torrent object indexed by their id. You might not have any torrents yet. This can be remedied by adding an torrent.
>>> tc.add_torrent('http://releases.ubuntu.com/8.10/ubuntu-8.10-desktop-i386.iso.torrent')
{1: <Torrent 1 "ubuntu-8.10-desktop-i386.iso">}
>>> tc.get_torrent(1)
{1: <Torrent 1 "ubuntu-8.10-desktop-i386.iso">}
As you saw, the add_url and info calls also returns a dictionary with {<id>: <Torrent>, ...}. More information about a torrent transfer can be found in the Torrent object.
>>> torrent = tc.get_torrent(1)[1]
>>> torrent.name
'ubuntu-8.10-desktop-i386.iso'
>>> torrent.hashString
'33820db6dd5e5928d23bc811bbac2f4ae94cb882'
>>> torrent.status
'downloading'
>>> torrent.eta
datetime.timedelta(0, 750)
Well, we weren’t that interested in Ubuntu so lets stop the transfer and the remove it.
>>> tc.stop_torrent(1)
>>> tc.remove_torrent('33820db6dd5e5928d23bc811bbac2f4ae94cb882')
See what we did there? most methods in transmissionrpc can take both torrent id and torrent hash when referring to a torrent. lists and sequences are also supported.
>>> tc.get_torrents([2, 'caff87b88f50f46bc22da3a2712a6a4e9a98d91e'])
{2: <Torrent 2 "ubuntu-8.10-server-amd64.iso">, 3: <Torrent 3 "ubuntu-8.10-alternate-amd64.iso">}
>>> tc.get_torrents('1:3')
{2: <Torrent 2 "ubuntu-8.10-server-amd64.iso">, 3: <Torrent 3 "ubuntu-8.10-alternate-amd64.iso">}
Continue to explore and have fun! For more in depth information read the module reference.
If you ever need to see what’s going on inside transmissionrpc, you can change the logging level of transmissionrpc. This is done with these easy steps
>>> import logging
>>> logging.getLogger('transmissionrpc').setLevel(logging.DEBUG)
Note that this will produce a whole lot of output! Other levels are (listed by severity)
- logging.ERROR
- logging.WARNING
- logging.INFO
- logging.DEBUG
The default logging level of transmissionrpc is logging.ERROR.