Friday, May 3, 2024
5
rated 0 times [  5] [ 0]  / answers: 1 / hits: 8321  / 1 Year ago, wed, february 22, 2023, 8:15:35

I have written a shutdown script for transmission. Transmission calls the script after a torrent download finishes. The script runs perfectly on my machine (Ubuntu 11.04 & 12.04).



#!/bin/bash
sleep 300s

# default display on current host
DISPLAY=:0.0

# find out if monitor is on. Default timeout can be configured from screensaver/Power configuration.

STATUS=`xset -display $DISPLAY -q | grep 'Monitor'`
echo $STATUS

if [ "$STATUS" == " Monitor is On" ]

### Then check if its still downloading a torrent. Couldn't figure out how.(May be) by monitoring network downstream activity?

then

notify-send "Downloads Complete" "Exiting transmisssion now"
pkill transmission

else
notify-send "Downloads Complete" "Shutting Down Computer"
dbus-send --session --type=method_call --print-reply --dest=org.gnome.SessionManager /org/gnome/SessionManager org.gnome.SessionManager.RequestShutdown

fi

exit 0


The problem is that when I'm downloading more than one file, when the first one finishes, transmission executes the script. I would like to do that but after all downloads are completed.



I want to put a 2nd check ( right after monitor check) if it is still downloading another torrent.



Is there any way to do this?


More From » command-line

 Answers
7

This information isn't passed to the scripts via environment variables, so you'll need to query Transmission's RPC interface. This is sometimes done by client libraries -- for example, a Python script could use python transmissionrpc. There are other interfaces like this listed at http://www.transmissionbt.com/resources/ .



Here's a quick approach that will use transmission-remote to count the number of non-idle downloads:



transmission-remote yourhost:yourport -tall --info | grep "^  State:" | grep "Down" | wc --lines


If you want to include idle downloads too, you could try this:



transmission-remote yourhost:yourport -l | grep -v -e " 100% " -e "^Sum" -e "^ID" -e " Stopped " | wc --lines


Where "^ID" and "^Sum" strips the header and footer; " 100% " strips completed torrents; and " Stopped " strips out the incomplete-but-paused torrents. This approach isn't foolproof -- for example, a torrent named " 100% Stopped " would break it.


[#34899] Wednesday, February 22, 2023, 1 Year  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
jectedrin

Total Points: 491
Total Questions: 105
Total Answers: 111

Location: Netherlands
Member since Mon, Jun 7, 2021
3 Years ago
;