Say you want the name and infohash for the first torrent in Transmission:
>>> response = client('torrent-get', ids=1, fields=['name', 'hashString']
>>> response['torrents']
[{u'hashString': u'7c44acebe5828dc53f460c312454141aa3fd1317',
u'name': 'torrent 1'}]
You can also specify a list of IDs:
>>> response = client('torrent-get', ids=range(1,11), fields=['name', 'hashString']
>>> response['torrents']
[{u'hashString': u'7c44acebe5828dc53f460c312454141aa3fd1317',
u'name': 'torrent 1'},
{u'hashString': u'833e29014ed46e5ea05becc89aaaffb81d0ea9d0',
u'name': 'torrent 2'}, ... ]
ids can also accept infohashes, if you’re already working with them:
>>> infohash = '833e29014ed46e5ea05becc89aaaffb81d0ea9d0'
>>> response = client('torrent-get', ids=infohash, fields=['name']
>>> response['torrents']
[{u'name': 'torrent 2'}]
Add a torrent to Transmission by filename:
>>> client('torrent-add', filename='/path/to/file.torrent')
Say you wanted to remove all torrents that were added more than 30 days ago:
>>> import datetime
>>> def is_old(torrent):
... now = datetime.datetime.utcnow()
... elapsed = now - torrent['addedDate']
... return elapsed.days > 30
>>> # When no ids are given, grabs from all torrents
>>> torrents = client('torrent-get', fields=['id', 'addedDate'])['torrents']
>>> torrent_ids = [torrent['id'] for torrent in torrents if is_old(torrent)]
>>> client('torrent-remove', ids=torrent_ids)
Always try to structure your program to operate on a list of torrent IDs rather than looping through a list of torrents and making an RPC call for each torrent ID.
It’s the difference between making one HTTP request with all the torrents you want to operate on and N HTTP requests with one ID at a time. The overhead can get noticable quick.
Note
The IDs don’t have to be numeric, either. If you’re using infohashes already, you can use them as-is in any ids request argument.