Currently there’s no queue features in Transmission. Luckily we can improvise this with the help of transmission-remote, a command based client for transmission, and along with some Linux bash scripting.
Below I have created a simple bash script:
1. Install transmission remote:
sudo apt-get install transmission-cli
2. Copy the script below, and save as my_script_name.sh , (or whatever name you prefer, but note the .sh extension).
#!/bin/sh
# *************
# Configuration
REMOTE="/usr/bin/transmission-remote"
USERNAME="my_username"
PASSWORD="my_password"
MAXDOWN="max_number_of_torrent_to_download"
MAXACTIVE="max_active_torrent"
CONFIG="/my_location_to_transmission_config_file/settings.json"
TRANSOPTS="127.0.0.1:my_port_number"
# *************
# Set-up variables
CMD="$REMOTE $TRANSOPTS --auth $USERNAME:$PASSWORD"
LOGCMD="/usr/bin/logger -t transmission-queue "
MAXRATIO=$(cat $CONFIG | grep "ratio-limit":)
MAXRATIO=${MAXRATIO#*"ratio-limit": }
MAXRATIO=${MAXRATIO%*, }
# *************
# deal with downloads
DOWNACTIVE="$($CMD -l | tail --lines=+2 | grep -v 100% | grep -v Sum | grep -v Stopped | grep -v Verifying | grep -v Will Verify | wc -l)"
if [ $MAXDOWN -lt $DOWNACTIVE ]; then
DOWNTOSTOP="$($CMD -l | tail --lines=+2 | grep -v 100% | grep -v Sum | grep -v Stopped | grep -v Verifying | grep -v Will Verify | tail -n $(expr $DOWNACTIVE - $MAXDOWN) | awk '{ print $1; }')"
for ID in $DOWNTOSTOP; do
NAME="$($CMD --torrent $ID --info | grep Name:)"
$LOGCMD "< <> /dev/null 2>&1
done
else
[ $(expr $MAXDOWN - $DOWNACTIVE) -gt 0 ] && (
DOWNINACTIVE="$($CMD -l | tail --lines=+2 | grep -v 100% | grep Stopped | wc -l)"
[ $DOWNINACTIVE -gt 0 ] && (
DOWNTOSTART="$($CMD -l | tail --lines=+2 | grep -v 100% | grep Stopped | head -n $(expr $MAXDOWN - $DOWNACTIVE) | awk '{ print $1; }')"
for ID in $DOWNTOSTART; do
NAME="$($CMD --torrent $ID --info | grep Name:)"
$LOGCMD ">>> $ID: ${NAME#*Name: }"
$CMD --torrent $ID --start >> /dev/null 2>&1
done
)
)
fi
# Then deal with total active
ACTIVE="$($CMD -l | tail --lines=+2 | grep -v Sum | grep -v Stopped | grep -v Verifying | grep -v Will Verify | wc -l)"
if [ $MAXACTIVE -lt $ACTIVE ]; then
TOSTOP="$($CMD -l | tail --lines=+2 | grep 100% | grep -v Stopped | grep -v Verifying | grep -v Will Verify | tail -n $(expr $ACTIVE - $MAXACTIVE) | awk '{ print $1; }')"
for ID in $TOSTOP; do
NAME="$($CMD --torrent $ID --info | grep Name:)"
$LOGCMD "< <> /dev/null 2>&1
done
else
[ $(expr $MAXACTIVE - $ACTIVE) -gt 0 ] && (
SEEDINACTIVE="$($CMD -l | tail --lines=+2 | grep 100% | grep Stopped | awk -v ratio=$MAXRATIO '{ if (strtonum(substr($0,52,4)) < ratio) print $0 ;}' | wc -l)"
[ $SEEDINACTIVE -gt 0 ] && (
TOSTART="$($CMD -l | tail --lines=+2 | grep 100% | grep Stopped | awk -v ratio=$MAXRATIO '{ if (strtonum(substr($0,52,4)) >> $ID: ${NAME#*Name: }"
$CMD --torrent $ID --start >> /dev/null 2>&1
done
)
)
fi
Save the script on any location you prefer.
3. Create a cron job to run the script. Open the entry to crontab:
crontab -e
4. Let say you want to run the script 5 minutes, the entry on your cron job should be as below:
*/5 * * * * sh /location_to_my_script/my_script_name.sh
Script courtesy of www.4geeksfromnet.com
situs gacor
situs slot gacor
situs gacor
monperatoto
toto slot
rtp slot
kampungbet
situs toto
situs slot
toto slot
toto slot
toto slot
toto slot
rtp slot
kampungbet
slot gacor
toto slot
toto slot
toto slot
situs toto
pragmatic casino
rtp slot
situs slot gacor
situs gacor hari ini
kampungbet