PDA

View Full Version : Pause/Restart VisualHub & Transmission for SD! backup


minckster
06-25-2007, 02:48 PM
I'd like to see if anyone has any comments or suggestions for the way that I went about pausing and restarting VisualHub and Transmission during SuperDuper's backups. It works, but seems a bit messy and convoluted. (If left running, VisualHub and Transmission muck up SD's backups because they create large files and run for a long time.)

The general idea is that I created an AppleScript using Script Editor to pause the two apps and another to restart them. Since SuperDuper! won't let me run an AppleScript before and after backups (and since I couldn't figure out how to translate them into shell scripts :o ), I saved the AppleScripts as applications (File -> Save As -> application from dropdown menu). Lo and behold! SD would let me run my newly created applications as scripts before and after my backup.

The AppleScripts follow. The shortcuts to pause the apps are cmd-. for ViusualHub and opt-cmd-. for Transmission. -- Pause VisualHub or Transmission, if running
tell application "System Events"
if ((count (every process whose name is "VisualHub")) > 0) then
tell application "VisualHub" to activate
tell application "System Events"
tell process "Visualhub"
-- Pause Conversion in VisualHub
keystroke "." using {command down}
end tell
end tell
end if

if ((count (every process whose name is "Transmission")) > 0) then
tell application "Transmission" to activate
tell application "System Events"
tell process "Transmission"
-- Pause all downloads in Transmission
keystroke "." using {option down, command down}
end tell
end tell
end if
end tell-- Resume VisualHub or Transmission, if running
tell application "System Events"
if ((count (every process whose name is "VisualHub")) > 0) then
tell application "VisualHub" to activate
tell application "System Events"
tell process "Visualhub"
-- Resume Conversion in VisualHub
keystroke "/" using {command down}
end tell
end tell
end if

if ((count (every process whose name is "Transmission")) > 0) then
tell application "Transmission" to activate
tell application "System Events"
tell process "Transmission"
-- Resume all downloads in Transmission
keystroke "/" using {option down, command down}
end tell
end tell
end if
end tell I should mention that I tried #!/bin/sh
exec osascript <<END
. . . (insert AppleScript here)
END but that caused the VirtualHub and Transmission to open before the script evaluated "count (every process ...", so the if-clause was always true.

Please be gentle! They're only my second and third AppleScripts, and are the result of much Googling, copying, pasting, trial and error.

minckster
07-05-2007, 08:00 AM
I simplified the scripts (below), so now I don't have to schedule my bittorrent downloading or video conversion around my SuperDuper backup schedule. -- Pauses VisualHub and Transmission, if running
-- So they won't muck up SuperDuper's scheduled backups

tell application "System Events"
if (exists process "VisualHub") then
tell process "VisualHub"
set frontmost to true
tell me to do shell script "/bin/sleep 5"
keystroke "." using command down
end tell
end if

if (exists process "Transmission") then
tell process "Transmission"
set frontmost to true
keystroke "." using {option down, command down}
end tell
end if
end tell The "sleep" line helps with those instances where I'd awake in the morning to find VisualHub as my frontmost app, but not paused, and SD! most distinctly unhappy with that situation.

dnanian
07-05-2007, 10:20 AM
Working well for you?

minckster
07-05-2007, 11:05 AM
The last three nights the script above worked fine.

The problem was (is?) that the "keystroke" for pausing VisualHub didn't seem to catch always. vh124ffmeg, which is the process that does the actual video conversion, takes 100% of my CPUs (nice'd), so there can be a delay getting VH to come to the foreground. That delay is what made me insert the sleep before the "keystroke". Could "delay" be a better choice for me than "/bin/sleep" in this instance?

I wish I could find a way of sending a pause command directly to either VisualHub or vh124ffmpeg instead of flailing around with "System Events" and "keystroke", but that seems more like a question for the VH forums than SD's.

Thanks for the great comments in your scripts! I guess you can recognize the sleep snippet above. I think I picked up "if exists process" from you too.

dnanian
07-05-2007, 11:11 AM
Yeah, I tried to document the script as completely as is practical, and I'm glad it proved useful to you... :)

gcoghill
08-05-2009, 02:50 PM
How does one run these from the Super Duper options? Using the shell script option and choosing the AppleScripts saved as applications?

gcoghill
08-05-2009, 03:07 PM
Also, this hint at MacOSXHints.com (http://www.macosxhints.com/article.php?story=2006080109510225) suggests saving scripts as Application Bundles if you are on an Intel Mac.

minckster
08-05-2009, 03:26 PM
How does one run these from the Super Duper options? Using the shell script option and choosing the AppleScripts saved as applications?
Yes.

Now a long answer, to avoid problems or gotchas.

From the main SuperDuper! screen, select Options > Advanced > check "Run shell script before copy starts" and enter the path to the script. See attached image.

Note that my newest Pause script makes SD! wait until Turbo.264 is done, because T.264 doesn't have a pause feature. The script then pauses VisualHub, Handbrake, and Transmission. The Resume script restarts VisualHub, Handbrake, and Transmission. Both scripts have worked great for many months without fail.

I saved both AppleScripts as "Applications" in Script Editor (File > Save As). Watch out for the options, in particular "Startup Screen" which should be off.

A silly gotcha: Once you've saved the script as an application, you have to open Script Editor and then go to File > Open to edit the application.

Also, my scripts use "GUI Scripting", so you'll need to enable that in the "AppleScript Utility" if your scripts use 'tell application "System Events"' and something that's -- well, GUI (keystroke,...).

minckster
08-05-2009, 03:31 PM
Also, this hint at MacOSXHints.com (http://www.macosxhints.com/article.php?story=2006080109510225) suggests saving scripts as Application Bundles if you are on an Intel Mac. Thanks!! I had no idea. I'll go switch to application bundles.

Edit to add: I just verified that on 10.5.7, my AppleScript-Applications were indeed PowerPC applications.

gcoghill
08-05-2009, 04:56 PM
Sounds great, thanks for the info!