2014-07-27 00:39:57 +00:00
# -*- coding: utf-8 -*-
# Copyright (c) 2008-2013 Erik Svensson <erik.public@gmail.com>
# Licensed under the MIT license.
import logging
from six import iteritems
LOGGER = logging . getLogger ( ' transmissionrpc ' )
LOGGER . setLevel ( logging . ERROR )
def mirror_dict ( source ) :
"""
Creates a dictionary with all values as keys and all keys as values .
"""
source . update ( dict ( ( value , key ) for key , value in iteritems ( source ) ) )
return source
DEFAULT_PORT = 9091
DEFAULT_TIMEOUT = 30.0
TR_PRI_LOW = - 1
TR_PRI_NORMAL = 0
TR_PRI_HIGH = 1
PRIORITY = mirror_dict ( {
' low ' : TR_PRI_LOW ,
' normal ' : TR_PRI_NORMAL ,
' high ' : TR_PRI_HIGH
} )
TR_RATIOLIMIT_GLOBAL = 0 # follow the global settings
TR_RATIOLIMIT_SINGLE = 1 # override the global settings, seeding until a certain ratio
TR_RATIOLIMIT_UNLIMITED = 2 # override the global settings, seeding regardless of ratio
RATIO_LIMIT = mirror_dict ( {
' global ' : TR_RATIOLIMIT_GLOBAL ,
' single ' : TR_RATIOLIMIT_SINGLE ,
' unlimited ' : TR_RATIOLIMIT_UNLIMITED
} )
TR_IDLELIMIT_GLOBAL = 0 # follow the global settings
TR_IDLELIMIT_SINGLE = 1 # override the global settings, seeding until a certain idle time
TR_IDLELIMIT_UNLIMITED = 2 # override the global settings, seeding regardless of activity
IDLE_LIMIT = mirror_dict ( {
' global ' : TR_RATIOLIMIT_GLOBAL ,
' single ' : TR_RATIOLIMIT_SINGLE ,
' unlimited ' : TR_RATIOLIMIT_UNLIMITED
} )
# A note on argument maps
# These maps are used to verify *-set methods. The information is structured in
# a tree.
# set +- <argument1> - [<type>, <added version>, <removed version>, <previous argument name>, <next argument name>, <description>]
# | +- <argument2> - [<type>, <added version>, <removed version>, <previous argument name>, <next argument name>, <description>]
# |
# get +- <argument1> - [<type>, <added version>, <removed version>, <previous argument name>, <next argument name>, <description>]
# +- <argument2> - [<type>, <added version>, <removed version>, <previous argument name>, <next argument name>, <description>]
# Arguments for torrent methods
TORRENT_ARGS = {
' get ' : {
' activityDate ' : ( ' number ' , 1 , None , None , None , ' Last time of upload or download activity. ' ) ,
' addedDate ' : ( ' number ' , 1 , None , None , None , ' The date when this torrent was first added. ' ) ,
' announceResponse ' : ( ' string ' , 1 , 7 , None , None , ' The announce message from the tracker. ' ) ,
' announceURL ' : ( ' string ' , 1 , 7 , None , None , ' Current announce URL. ' ) ,
' bandwidthPriority ' : ( ' number ' , 5 , None , None , None , ' Bandwidth priority. Low (-1), Normal (0) or High (1). ' ) ,
' comment ' : ( ' string ' , 1 , None , None , None , ' Torrent comment. ' ) ,
' corruptEver ' : ( ' number ' , 1 , None , None , None , ' Number of bytes of corrupt data downloaded. ' ) ,
' creator ' : ( ' string ' , 1 , None , None , None , ' Torrent creator. ' ) ,
' dateCreated ' : ( ' number ' , 1 , None , None , None , ' Torrent creation date. ' ) ,
' desiredAvailable ' : ( ' number ' , 1 , None , None , None , ' Number of bytes avalable and left to be downloaded. ' ) ,
' doneDate ' : ( ' number ' , 1 , None , None , None , ' The date when the torrent finished downloading. ' ) ,
' downloadDir ' : ( ' string ' , 4 , None , None , None , ' The directory path where the torrent is downloaded to. ' ) ,
' downloadedEver ' : ( ' number ' , 1 , None , None , None , ' Number of bytes of good data downloaded. ' ) ,
' downloaders ' : ( ' number ' , 4 , 7 , None , None , ' Number of downloaders. ' ) ,
' downloadLimit ' : ( ' number ' , 1 , None , None , None , ' Download limit in Kbps. ' ) ,
' downloadLimited ' : ( ' boolean ' , 5 , None , None , None , ' Download limit is enabled ' ) ,
' downloadLimitMode ' : ( ' number ' , 1 , 5 , None , None , ' Download limit mode. 0 means global, 1 means signle, 2 unlimited. ' ) ,
' error ' : ( ' number ' , 1 , None , None , None , ' Kind of error. 0 means OK, 1 means tracker warning, 2 means tracker error, 3 means local error. ' ) ,
' errorString ' : ( ' number ' , 1 , None , None , None , ' Error message. ' ) ,
' eta ' : ( ' number ' , 1 , None , None , None , ' Estimated number of seconds left when downloading or seeding. -1 means not available and -2 means unknown. ' ) ,
' etaIdle ' : ( ' number ' , 15 , None , None , None , ' Estimated number of seconds left until the idle time limit is reached. -1 means not available and -2 means unknown. ' ) ,
' files ' : ( ' array ' , 1 , None , None , None , ' Array of file object containing key, bytesCompleted, length and name. ' ) ,
' fileStats ' : ( ' array ' , 5 , None , None , None , ' Aray of file statistics containing bytesCompleted, wanted and priority. ' ) ,
' hashString ' : ( ' string ' , 1 , None , None , None , ' Hashstring unique for the torrent even between sessions. ' ) ,
' haveUnchecked ' : ( ' number ' , 1 , None , None , None , ' Number of bytes of partial pieces. ' ) ,
' haveValid ' : ( ' number ' , 1 , None , None , None , ' Number of bytes of checksum verified data. ' ) ,
' honorsSessionLimits ' : ( ' boolean ' , 5 , None , None , None , ' True if session upload limits are honored ' ) ,
' id ' : ( ' number ' , 1 , None , None , None , ' Session unique torrent id. ' ) ,
' isFinished ' : ( ' boolean ' , 9 , None , None , None , ' True if the torrent is finished. Downloaded and seeded. ' ) ,
' isPrivate ' : ( ' boolean ' , 1 , None , None , None , ' True if the torrent is private. ' ) ,
' isStalled ' : ( ' boolean ' , 14 , None , None , None , ' True if the torrent has stalled (been idle for a long time). ' ) ,
' lastAnnounceTime ' : ( ' number ' , 1 , 7 , None , None , ' The time of the last announcement. ' ) ,
' lastScrapeTime ' : ( ' number ' , 1 , 7 , None , None , ' The time af the last successful scrape. ' ) ,
' leechers ' : ( ' number ' , 1 , 7 , None , None , ' Number of leechers. ' ) ,
' leftUntilDone ' : ( ' number ' , 1 , None , None , None , ' Number of bytes left until the download is done. ' ) ,
' magnetLink ' : ( ' string ' , 7 , None , None , None , ' The magnet link for this torrent. ' ) ,
' manualAnnounceTime ' : ( ' number ' , 1 , None , None , None , ' The time until you manually ask for more peers. ' ) ,
' maxConnectedPeers ' : ( ' number ' , 1 , None , None , None , ' Maximum of connected peers. ' ) ,
' metadataPercentComplete ' : ( ' number ' , 7 , None , None , None , ' Download progress of metadata. 0.0 to 1.0. ' ) ,
' name ' : ( ' string ' , 1 , None , None , None , ' Torrent name. ' ) ,
' nextAnnounceTime ' : ( ' number ' , 1 , 7 , None , None , ' Next announce time. ' ) ,
' nextScrapeTime ' : ( ' number ' , 1 , 7 , None , None , ' Next scrape time. ' ) ,
' peer-limit ' : ( ' number ' , 5 , None , None , None , ' Maximum number of peers. ' ) ,
' peers ' : ( ' array ' , 2 , None , None , None , ' Array of peer objects. ' ) ,
' peersConnected ' : ( ' number ' , 1 , None , None , None , ' Number of peers we are connected to. ' ) ,
' peersFrom ' : ( ' object ' , 1 , None , None , None , ' Object containing download peers counts for different peer types. ' ) ,
' peersGettingFromUs ' : ( ' number ' , 1 , None , None , None , ' Number of peers we are sending data to. ' ) ,
' peersKnown ' : ( ' number ' , 1 , 13 , None , None , ' Number of peers that the tracker knows. ' ) ,
' peersSendingToUs ' : ( ' number ' , 1 , None , None , None , ' Number of peers sending to us ' ) ,
' percentDone ' : ( ' double ' , 5 , None , None , None , ' Download progress of selected files. 0.0 to 1.0. ' ) ,
' pieces ' : ( ' string ' , 5 , None , None , None , ' String with base64 encoded bitfield indicating finished pieces. ' ) ,
' pieceCount ' : ( ' number ' , 1 , None , None , None , ' Number of pieces. ' ) ,
' pieceSize ' : ( ' number ' , 1 , None , None , None , ' Number of bytes in a piece. ' ) ,
' priorities ' : ( ' array ' , 1 , None , None , None , ' Array of file priorities. ' ) ,
' queuePosition ' : ( ' number ' , 14 , None , None , None , ' The queue position. ' ) ,
' rateDownload ' : ( ' number ' , 1 , None , None , None , ' Download rate in bps. ' ) ,
' rateUpload ' : ( ' number ' , 1 , None , None , None , ' Upload rate in bps. ' ) ,
' recheckProgress ' : ( ' double ' , 1 , None , None , None , ' Progress of recheck. 0.0 to 1.0. ' ) ,
' secondsDownloading ' : ( ' number ' , 15 , None , None , None , ' ' ) ,
' secondsSeeding ' : ( ' number ' , 15 , None , None , None , ' ' ) ,
' scrapeResponse ' : ( ' string ' , 1 , 7 , None , None , ' Scrape response message. ' ) ,
' scrapeURL ' : ( ' string ' , 1 , 7 , None , None , ' Current scrape URL ' ) ,
' seeders ' : ( ' number ' , 1 , 7 , None , None , ' Number of seeders reported by the tracker. ' ) ,
' seedIdleLimit ' : ( ' number ' , 10 , None , None , None , ' Idle limit in minutes. ' ) ,
' seedIdleMode ' : ( ' number ' , 10 , None , None , None , ' Use global (0), torrent (1), or unlimited (2) limit. ' ) ,
' seedRatioLimit ' : ( ' double ' , 5 , None , None , None , ' Seed ratio limit. ' ) ,
' seedRatioMode ' : ( ' number ' , 5 , None , None , None , ' Use global (0), torrent (1), or unlimited (2) limit. ' ) ,
' sizeWhenDone ' : ( ' number ' , 1 , None , None , None , ' Size of the torrent download in bytes. ' ) ,
' startDate ' : ( ' number ' , 1 , None , None , None , ' The date when the torrent was last started. ' ) ,
' status ' : ( ' number ' , 1 , None , None , None , ' Current status, see source ' ) ,
' swarmSpeed ' : ( ' number ' , 1 , 7 , None , None , ' Estimated speed in Kbps in the swarm. ' ) ,
' timesCompleted ' : ( ' number ' , 1 , 7 , None , None , ' Number of successful downloads reported by the tracker. ' ) ,
' trackers ' : ( ' array ' , 1 , None , None , None , ' Array of tracker objects. ' ) ,
' trackerStats ' : ( ' object ' , 7 , None , None , None , ' Array of object containing tracker statistics. ' ) ,
' totalSize ' : ( ' number ' , 1 , None , None , None , ' Total size of the torrent in bytes ' ) ,
' torrentFile ' : ( ' string ' , 5 , None , None , None , ' Path to .torrent file. ' ) ,
' uploadedEver ' : ( ' number ' , 1 , None , None , None , ' Number of bytes uploaded, ever. ' ) ,
' uploadLimit ' : ( ' number ' , 1 , None , None , None , ' Upload limit in Kbps ' ) ,
' uploadLimitMode ' : ( ' number ' , 1 , 5 , None , None , ' Upload limit mode. 0 means global, 1 means signle, 2 unlimited. ' ) ,
' uploadLimited ' : ( ' boolean ' , 5 , None , None , None , ' Upload limit enabled. ' ) ,
' uploadRatio ' : ( ' double ' , 1 , None , None , None , ' Seed ratio. ' ) ,
' wanted ' : ( ' array ' , 1 , None , None , None , ' Array of booleans indicated wanted files. ' ) ,
' webseeds ' : ( ' array ' , 1 , None , None , None , ' Array of webseeds objects ' ) ,
' webseedsSendingToUs ' : ( ' number ' , 1 , None , None , None , ' Number of webseeds seeding to us. ' ) ,
} ,
' set ' : {
' bandwidthPriority ' : ( ' number ' , 5 , None , None , None , ' Priority for this transfer. ' ) ,
' downloadLimit ' : ( ' number ' , 5 , None , ' speed-limit-down ' , None , ' Set the speed limit for download in Kib/s. ' ) ,
' downloadLimited ' : ( ' boolean ' , 5 , None , ' speed-limit-down-enabled ' , None , ' Enable download speed limiter. ' ) ,
' files-wanted ' : ( ' array ' , 1 , None , None , None , " A list of file id ' s that should be downloaded. " ) ,
' files-unwanted ' : ( ' array ' , 1 , None , None , None , " A list of file id ' s that shouldn ' t be downloaded. " ) ,
' honorsSessionLimits ' : ( ' boolean ' , 5 , None , None , None , " Enables or disables the transfer to honour the upload limit set in the session. " ) ,
' location ' : ( ' array ' , 1 , None , None , None , ' Local download location. ' ) ,
' peer-limit ' : ( ' number ' , 1 , None , None , None , ' The peer limit for the torrents. ' ) ,
' priority-high ' : ( ' array ' , 1 , None , None , None , " A list of file id ' s that should have high priority. " ) ,
' priority-low ' : ( ' array ' , 1 , None , None , None , " A list of file id ' s that should have normal priority. " ) ,
' priority-normal ' : ( ' array ' , 1 , None , None , None , " A list of file id ' s that should have low priority. " ) ,
' queuePosition ' : ( ' number ' , 14 , None , None , None , ' Position of this transfer in its queue. ' ) ,
' seedIdleLimit ' : ( ' number ' , 10 , None , None , None , ' Seed inactivity limit in minutes. ' ) ,
' seedIdleMode ' : ( ' number ' , 10 , None , None , None , ' Seed inactivity mode. 0 = Use session limit, 1 = Use transfer limit, 2 = Disable limit. ' ) ,
' seedRatioLimit ' : ( ' double ' , 5 , None , None , None , ' Seeding ratio. ' ) ,
' seedRatioMode ' : ( ' number ' , 5 , None , None , None , ' Which ratio to use. 0 = Use session limit, 1 = Use transfer limit, 2 = Disable limit. ' ) ,
' speed-limit-down ' : ( ' number ' , 1 , 5 , None , ' downloadLimit ' , ' Set the speed limit for download in Kib/s. ' ) ,
' speed-limit-down-enabled ' : ( ' boolean ' , 1 , 5 , None , ' downloadLimited ' , ' Enable download speed limiter. ' ) ,
' speed-limit-up ' : ( ' number ' , 1 , 5 , None , ' uploadLimit ' , ' Set the speed limit for upload in Kib/s. ' ) ,
' speed-limit-up-enabled ' : ( ' boolean ' , 1 , 5 , None , ' uploadLimited ' , ' Enable upload speed limiter. ' ) ,
' trackerAdd ' : ( ' array ' , 10 , None , None , None , ' Array of string with announce URLs to add. ' ) ,
' trackerRemove ' : ( ' array ' , 10 , None , None , None , ' Array of ids of trackers to remove. ' ) ,
' trackerReplace ' : ( ' array ' , 10 , None , None , None , ' Array of (id, url) tuples where the announce URL should be replaced. ' ) ,
' uploadLimit ' : ( ' number ' , 5 , None , ' speed-limit-up ' , None , ' Set the speed limit for upload in Kib/s. ' ) ,
' uploadLimited ' : ( ' boolean ' , 5 , None , ' speed-limit-up-enabled ' , None , ' Enable upload speed limiter. ' ) ,
} ,
' add ' : {
' bandwidthPriority ' : ( ' number ' , 8 , None , None , None , ' Priority for this transfer. ' ) ,
' download-dir ' : ( ' string ' , 1 , None , None , None , ' The directory where the downloaded contents will be saved in. ' ) ,
' cookies ' : ( ' string ' , 13 , None , None , None , ' One or more HTTP cookie(s). ' ) ,
' filename ' : ( ' string ' , 1 , None , None , None , " A file path or URL to a torrent file or a magnet link. " ) ,
' files-wanted ' : ( ' array ' , 1 , None , None , None , " A list of file id ' s that should be downloaded. " ) ,
' files-unwanted ' : ( ' array ' , 1 , None , None , None , " A list of file id ' s that shouldn ' t be downloaded. " ) ,
' metainfo ' : ( ' string ' , 1 , None , None , None , ' The content of a torrent file, base64 encoded. ' ) ,
' paused ' : ( ' boolean ' , 1 , None , None , None , ' If True, does not start the transfer when added. ' ) ,
' peer-limit ' : ( ' number ' , 1 , None , None , None , ' Maximum number of peers allowed. ' ) ,
' priority-high ' : ( ' array ' , 1 , None , None , None , " A list of file id ' s that should have high priority. " ) ,
' priority-low ' : ( ' array ' , 1 , None , None , None , " A list of file id ' s that should have low priority. " ) ,
' priority-normal ' : ( ' array ' , 1 , None , None , None , " A list of file id ' s that should have normal priority. " ) ,
}
}
# Arguments for session methods
SESSION_ARGS = {
' get ' : {
" alt-speed-down " : ( ' number ' , 5 , None , None , None , ' Alternate session download speed limit (in Kib/s). ' ) ,
" alt-speed-enabled " : ( ' boolean ' , 5 , None , None , None , ' True if alternate global download speed limiter is ebabled. ' ) ,
" alt-speed-time-begin " : ( ' number ' , 5 , None , None , None , ' Time when alternate speeds should be enabled. Minutes after midnight. ' ) ,
" alt-speed-time-enabled " : ( ' boolean ' , 5 , None , None , None , ' True if alternate speeds scheduling is enabled. ' ) ,
" alt-speed-time-end " : ( ' number ' , 5 , None , None , None , ' Time when alternate speeds should be disabled. Minutes after midnight. ' ) ,
" alt-speed-time-day " : ( ' number ' , 5 , None , None , None , ' Days alternate speeds scheduling is enabled. ' ) ,
" alt-speed-up " : ( ' number ' , 5 , None , None , None , ' Alternate session upload speed limit (in Kib/s) ' ) ,
" blocklist-enabled " : ( ' boolean ' , 5 , None , None , None , ' True when blocklist is enabled. ' ) ,
" blocklist-size " : ( ' number ' , 5 , None , None , None , ' Number of rules in the blocklist ' ) ,
" blocklist-url " : ( ' string ' , 11 , None , None , None , ' Location of the block list. Updated with blocklist-update. ' ) ,
" cache-size-mb " : ( ' number ' , 10 , None , None , None , ' The maximum size of the disk cache in MB ' ) ,
" config-dir " : ( ' string ' , 8 , None , None , None , ' location of transmissions configuration directory ' ) ,
" dht-enabled " : ( ' boolean ' , 6 , None , None , None , ' True if DHT enabled. ' ) ,
" download-dir " : ( ' string ' , 1 , None , None , None , ' The download directory. ' ) ,
" download-dir-free-space " : ( ' number ' , 12 , None , None , None , ' Free space in the download directory, in bytes ' ) ,
" download-queue-size " : ( ' number ' , 14 , None , None , None , ' Number of slots in the download queue. ' ) ,
" download-queue-enabled " : ( ' boolean ' , 14 , None , None , None , ' True if the download queue is enabled. ' ) ,
" encryption " : ( ' string ' , 1 , None , None , None , ' Encryption mode, one of ``required``, ``preferred`` or ``tolerated``. ' ) ,
" idle-seeding-limit " : ( ' number ' , 10 , None , None , None , ' Seed inactivity limit in minutes. ' ) ,
" idle-seeding-limit-enabled " : ( ' boolean ' , 10 , None , None , None , ' True if the seed activity limit is enabled. ' ) ,
" incomplete-dir " : ( ' string ' , 7 , None , None , None , ' The path to the directory for incomplete torrent transfer data. ' ) ,
" incomplete-dir-enabled " : ( ' boolean ' , 7 , None , None , None , ' True if the incomplete dir is enabled. ' ) ,
" lpd-enabled " : ( ' boolean ' , 9 , None , None , None , ' True if local peer discovery is enabled. ' ) ,
" peer-limit " : ( ' number ' , 1 , 5 , None , ' peer-limit-global ' , ' Maximum number of peers. ' ) ,
" peer-limit-global " : ( ' number ' , 5 , None , ' peer-limit ' , None , ' Maximum number of peers. ' ) ,
" peer-limit-per-torrent " : ( ' number ' , 5 , None , None , None , ' Maximum number of peers per transfer. ' ) ,
" pex-allowed " : ( ' boolean ' , 1 , 5 , None , ' pex-enabled ' , ' True if PEX is allowed. ' ) ,
" pex-enabled " : ( ' boolean ' , 5 , None , ' pex-allowed ' , None , ' True if PEX is enabled. ' ) ,
" port " : ( ' number ' , 1 , 5 , None , ' peer-port ' , ' Peer port. ' ) ,
" peer-port " : ( ' number ' , 5 , None , ' port ' , None , ' Peer port. ' ) ,
" peer-port-random-on-start " : ( ' boolean ' , 5 , None , None , None , ' Enables randomized peer port on start of Transmission. ' ) ,
" port-forwarding-enabled " : ( ' boolean ' , 1 , None , None , None , ' True if port forwarding is enabled. ' ) ,
" queue-stalled-minutes " : ( ' number ' , 14 , None , None , None , ' Number of minutes of idle that marks a transfer as stalled. ' ) ,
" queue-stalled-enabled " : ( ' boolean ' , 14 , None , None , None , ' True if stalled tracking of transfers is enabled. ' ) ,
" rename-partial-files " : ( ' boolean ' , 8 , None , None , None , ' True if " .part " is appended to incomplete files ' ) ,
" rpc-version " : ( ' number ' , 4 , None , None , None , ' Transmission RPC API Version. ' ) ,
" rpc-version-minimum " : ( ' number ' , 4 , None , None , None , ' Minimum accepted RPC API Version. ' ) ,
" script-torrent-done-enabled " : ( ' boolean ' , 9 , None , None , None , ' True if the done script is enabled. ' ) ,
" script-torrent-done-filename " : ( ' string ' , 9 , None , None , None , ' Filename of the script to run when the transfer is done. ' ) ,
" seedRatioLimit " : ( ' double ' , 5 , None , None , None , ' Seed ratio limit. 1.0 means 1:1 download and upload ratio. ' ) ,
" seedRatioLimited " : ( ' boolean ' , 5 , None , None , None , ' True if seed ration limit is enabled. ' ) ,
" seed-queue-size " : ( ' number ' , 14 , None , None , None , ' Number of slots in the upload queue. ' ) ,
" seed-queue-enabled " : ( ' boolean ' , 14 , None , None , None , ' True if upload queue is enabled. ' ) ,
" speed-limit-down " : ( ' number ' , 1 , None , None , None , ' Download speed limit (in Kib/s). ' ) ,
" speed-limit-down-enabled " : ( ' boolean ' , 1 , None , None , None , ' True if the download speed is limited. ' ) ,
" speed-limit-up " : ( ' number ' , 1 , None , None , None , ' Upload speed limit (in Kib/s). ' ) ,
" speed-limit-up-enabled " : ( ' boolean ' , 1 , None , None , None , ' True if the upload speed is limited. ' ) ,
" start-added-torrents " : ( ' boolean ' , 9 , None , None , None , ' When true uploaded torrents will start right away. ' ) ,
" trash-original-torrent-files " : ( ' boolean ' , 9 , None , None , None , ' When true added .torrent files will be deleted. ' ) ,
' units ' : ( ' object ' , 10 , None , None , None , ' An object containing units for size and speed. ' ) ,
' utp-enabled ' : ( ' boolean ' , 13 , None , None , None , ' True if Micro Transport Protocol (UTP) is enabled. ' ) ,
" version " : ( ' string ' , 3 , None , None , None , ' Transmission version. ' ) ,
} ,
' set ' : {
" alt-speed-down " : ( ' number ' , 5 , None , None , None , ' Alternate session download speed limit (in Kib/s). ' ) ,
" alt-speed-enabled " : ( ' boolean ' , 5 , None , None , None , ' Enables alternate global download speed limiter. ' ) ,
" alt-speed-time-begin " : ( ' number ' , 5 , None , None , None , ' Time when alternate speeds should be enabled. Minutes after midnight. ' ) ,
" alt-speed-time-enabled " : ( ' boolean ' , 5 , None , None , None , ' Enables alternate speeds scheduling. ' ) ,
" alt-speed-time-end " : ( ' number ' , 5 , None , None , None , ' Time when alternate speeds should be disabled. Minutes after midnight. ' ) ,
" alt-speed-time-day " : ( ' number ' , 5 , None , None , None , ' Enables alternate speeds scheduling these days. ' ) ,
" alt-speed-up " : ( ' number ' , 5 , None , None , None , ' Alternate session upload speed limit (in Kib/s). ' ) ,
" blocklist-enabled " : ( ' boolean ' , 5 , None , None , None , ' Enables the block list ' ) ,
" blocklist-url " : ( ' string ' , 11 , None , None , None , ' Location of the block list. Updated with blocklist-update. ' ) ,
" cache-size-mb " : ( ' number ' , 10 , None , None , None , ' The maximum size of the disk cache in MB ' ) ,
" dht-enabled " : ( ' boolean ' , 6 , None , None , None , ' Enables DHT. ' ) ,
" download-dir " : ( ' string ' , 1 , None , None , None , ' Set the session download directory. ' ) ,
" download-queue-size " : ( ' number ' , 14 , None , None , None , ' Number of slots in the download queue. ' ) ,
" download-queue-enabled " : ( ' boolean ' , 14 , None , None , None , ' Enables download queue. ' ) ,
" encryption " : ( ' string ' , 1 , None , None , None , ' Set the session encryption mode, one of ``required``, ``preferred`` or ``tolerated``. ' ) ,
" idle-seeding-limit " : ( ' number ' , 10 , None , None , None , ' The default seed inactivity limit in minutes. ' ) ,
" idle-seeding-limit-enabled " : ( ' boolean ' , 10 , None , None , None , ' Enables the default seed inactivity limit ' ) ,
" incomplete-dir " : ( ' string ' , 7 , None , None , None , ' The path to the directory of incomplete transfer data. ' ) ,
" incomplete-dir-enabled " : ( ' boolean ' , 7 , None , None , None , ' Enables the incomplete transfer data directory. Otherwise data for incomplete transfers are stored in the download target. ' ) ,
" lpd-enabled " : ( ' boolean ' , 9 , None , None , None , ' Enables local peer discovery for public torrents. ' ) ,
" peer-limit " : ( ' number ' , 1 , 5 , None , ' peer-limit-global ' , ' Maximum number of peers. ' ) ,
" peer-limit-global " : ( ' number ' , 5 , None , ' peer-limit ' , None , ' Maximum number of peers. ' ) ,
" peer-limit-per-torrent " : ( ' number ' , 5 , None , None , None , ' Maximum number of peers per transfer. ' ) ,
" pex-allowed " : ( ' boolean ' , 1 , 5 , None , ' pex-enabled ' , ' Allowing PEX in public torrents. ' ) ,
" pex-enabled " : ( ' boolean ' , 5 , None , ' pex-allowed ' , None , ' Allowing PEX in public torrents. ' ) ,
" port " : ( ' number ' , 1 , 5 , None , ' peer-port ' , ' Peer port. ' ) ,
" peer-port " : ( ' number ' , 5 , None , ' port ' , None , ' Peer port. ' ) ,
" peer-port-random-on-start " : ( ' boolean ' , 5 , None , None , None , ' Enables randomized peer port on start of Transmission. ' ) ,
" port-forwarding-enabled " : ( ' boolean ' , 1 , None , None , None , ' Enables port forwarding. ' ) ,
" rename-partial-files " : ( ' boolean ' , 8 , None , None , None , ' Appends " .part " to incomplete files ' ) ,
" queue-stalled-minutes " : ( ' number ' , 14 , None , None , None , ' Number of minutes of idle that marks a transfer as stalled. ' ) ,
" queue-stalled-enabled " : ( ' boolean ' , 14 , None , None , None , ' Enable tracking of stalled transfers. ' ) ,
" script-torrent-done-enabled " : ( ' boolean ' , 9 , None , None , None , ' Whether or not to call the " done " script. ' ) ,
" script-torrent-done-filename " : ( ' string ' , 9 , None , None , None , ' Filename of the script to run when the transfer is done. ' ) ,
" seed-queue-size " : ( ' number ' , 14 , None , None , None , ' Number of slots in the upload queue. ' ) ,
" seed-queue-enabled " : ( ' boolean ' , 14 , None , None , None , ' Enables upload queue. ' ) ,
" seedRatioLimit " : ( ' double ' , 5 , None , None , None , ' Seed ratio limit. 1.0 means 1:1 download and upload ratio. ' ) ,
" seedRatioLimited " : ( ' boolean ' , 5 , None , None , None , ' Enables seed ration limit. ' ) ,
" speed-limit-down " : ( ' number ' , 1 , None , None , None , ' Download speed limit (in Kib/s). ' ) ,
" speed-limit-down-enabled " : ( ' boolean ' , 1 , None , None , None , ' Enables download speed limiting. ' ) ,
" speed-limit-up " : ( ' number ' , 1 , None , None , None , ' Upload speed limit (in Kib/s). ' ) ,
" speed-limit-up-enabled " : ( ' boolean ' , 1 , None , None , None , ' Enables upload speed limiting. ' ) ,
" start-added-torrents " : ( ' boolean ' , 9 , None , None , None , ' Added torrents will be started right away. ' ) ,
" trash-original-torrent-files " : ( ' boolean ' , 9 , None , None , None , ' The .torrent file of added torrents will be deleted. ' ) ,
' utp-enabled ' : ( ' boolean ' , 13 , None , None , None , ' Enables Micro Transport Protocol (UTP). ' ) ,
} ,
}