A little helper for making calls to the Transmission Daemon RPC interface Edit
Open Issues: 0
This package is auto-updated.
Last update: 2023-03-12 18:29:10 UTC
You can use this package to communicate with your transmission installation's web/RPC server.
You can set up transmission by going into preferences > remote > enable remote access.
This package was written against Transmission's RPC spec, if you ever need more info on what each call does or what data it returns, that's the best place to start.
First you'll need to pull in the library
composer require happydemon/transmission
Next you'll need to set up the
$transmission = new \HappyDemon\Transmission\Transmission();
By not defining any config, the object will use sensible defaults to connect to transmission.
Let's retrieve the list of torrents we have in Transmission
When initialising a
Transmission object you can pass an array with several config options;
Is the transmission web server served over https?
The host/IP the transmission web server is running on (defaults to 127.0.0.1).
What port is the transmission web server running on (defaults to 9091).
What endpoint is the transmission web server running on (defaults to /transmission/rpc).
What username is used to authenticate? (empty by default)
What password is used to authenticate? (empty by default)
Main torrent methods
Retrieves the list of torrents you see in transmission.
This will always return an array with
You can check out the class to see what properties are available to it.
You could also use it to retrieve a single or multiple torrents that you have the ID of:
// Get the torrent with id 1 $transmission->torrents()->get(1); // Get a few torrents $transmission->torrents()->get([1,6,12]);
$torrent = $transmission->torrents()->addFromUrl($urlToTorrent); $torrent = $transmission->torrents()->addFile($filePath); $torrent = $transmission->torrents()->addFromBase64($fileBlob);
Using any of these methods will let you add new torrents.
Each time it will return a
The catch is, only 3 properties will be set though: id, hashString & name.
You can also add some extra options that would overwrite Transmission's own default settings:
$torrent = $transmission->torrents()->addFromUrl($urlToTorrent, ['uploadLimit' => 512]);
You could also overwrite Transmission's defaults 'globally'
$torrents = $transmission->torrents()->defaults(['uploadLimit' => 512]); $torrent = $torrents->addFromUrl($urlToTorrent);
Torrent entity methods
These are the methods that are available on a
Starts the specific torrent.
Stops the specific torrent.
Verifies the specific torrent.
Reannounces the specific torrent.
Removes the specific torrent.
Moves the specific torrent to a different location on your file system.
Allows you to update some torrent-specific settings.
You could also update a singular torrent-setting like this:
// remove the download limit $torrent->setDownloadLimited(false);
// set the bandwidth priority $torrent->setBandwidthPriority(1);
// set the download limit (in K/s) $torrent->setDownloadLimit(1024*3);
// Mark files as wanted // Use an empty array for all files, use an array of ids to be more selective [0,2] // In this case we only want to download the second file $torrent->setFilesWanted();
// Mark files as unwanted // Use an empty array for all files, use an array of ids to be more selective [0,2] // In this case we don't want to download the first file $torrent->setFilesUnwanted();
// true if session upload limits are honored $torrent->setHonorsSessionLimits(true);
// Set a new directory for the torrent's contents $torrent->setLocation('c:/downloads');
// Set the peer limit (max amount of peer) $torrent->setPeerLimit(40);
// Set the priority for files to high // Use en empty array to update priority for all files // or use the file ids [0,2] $torrent->setPriorityHigh();
// Set the priority for files to low // Use en empty array to update priority for all files // or use the file ids [0,2] $torrent->setPriorityLow(false);
// Set the priority for files to normall // Use en empty array to update priority for all files // or use the file ids [0,2] $torrent->setPriorityNormal(false);
// Set the seed ratio limit $torrent->setSeedRatioLimit(1.2);
// Set the seed ratio mode // 0 = global, 1 = see seedRatioLimit, 2 = unlimitted $torrent->setSeedRatioMode(1);
// Change the upload limit (in K/s) $torrent->setUploadLimit(512);
// Should the torrent's upload be limitted? $torrent->setUploadLimited(false);
The entity has a lot of properties, however I've added a few getters for ease-of-use:
Will return the torrents status as a string, whereas
$torrent->status only returns a number.
Will return a
DateTime object, representing the last time torrent activity happened
Will return a
DateTime object, representing the date/time the torrent was added.
Will return a
DateTime object, representing time the torrent was completed.
Will return the percentage that the torrent is completed whereas
$torrent->percentDone would return this as a float.