Working in bioinformatics can be seen as an infinite loop of: think, write a script, run script, analyze data. While I work on a Mac, most of the scripts run on a Linux server, and it would be nice to know when a script is done so that I can look at the data. In order to be notified when a script finishes, I now use Growl (see picture).
I downloaded netgrowl.py and wrote a quick and dirty wrapper package around it:
#!/usr/bin/env python
from netgrowl import *
import sys
def growlNotify(title = "Script Finished", message = ""):
addr = ("10.1.104.26", GROWL_UDP_PORT)
s = socket(AF_INET,SOCK_DGRAM)
#
# p = GrowlRegistrationPacket(application="Network Demo", password="?")
# p.addNotification("Script Finished", enabled=True)
#
# s.sendto(p.payload(), addr)
if not message:
message = sys.argv[0]
p = GrowlNotificationPacket(application="Network Demo",
notification="Script Finished", title=title,
description=message, priority=1,
sticky=True, password="?")
s.sendto(p.payload(),addr)
s.close()
if __name__ == '__main__':
growlNotify()
The registration is hidden in a comment, you only need to do that the very first time. So, in my scripts, I just insert the following right before the end of the script (using a Textmate snippet to save typing).
import growlnotify
growlnotify.growlNotify()
2 comments:
Ok. So, that was the coolest post I've seen today.
Wow. Thanks. =)
just fyi, i had to make 2 changes (gathered from looking closely at netgrowl.py) to make this script work:
addr = ("localhost", GROWL_UDP_PORT)
and
password=None (in a couple of places)
otherwise, great!
Post a Comment