Saturday
Feb092008
Hotclock
Saturday, February 9, 2008 at 2:18PM
I use a program on my Macintosh during the radio show to remind me when to take a commercial break - the network is pretty finicky about getting out on time. The program warns me a minute before I need to break, then counts me down 10 seconds before and says "Break!" when I'm supposed to stop talking. It mostly works.
A number of people who noticed the alerts on my Ustream stream have asked me for the source, so here it is, one year to the day after I wrote it.
A couple of caveats: it's in Applescript, requires Quicksilver (for the really big text), and must be saved as a "Run On Idle" script. The main "on idle" loop needs to be called again and again - if the program quits after "on run" nothing will happen.
If you want to actually use this (instead of just looking at it and mocking me) you'll probably want to change the break times.
I'm posting this as is and without support, mostly so that I can point people here who want to know "how I do that?"
-- Application to warn host when it's time to take a break -- in the last minute before the break post word "wrap" -- do a ten second countdown to end then show "break" -- Requires Quicksilver! -- Leo Laporte, 8 February 2007 -- v 1.0 property wraps : {"16:35", "27:35", "44:35", "56:25"} property breaks : {"17:35", "28:35", "45:35", "57:25"} property countdown : {"10", "9", "8", "7", "6", "5", "4", "3", "2", "1", "Break!"} global currentSegment, breakTime, wrapTime on run -- find current segment set now to getTime() set currentSegment to 1 set wrapTime to item currentSegment of wraps repeat until now is less than wrapTime -- keep going until the next segment if currentSegment is greater than or equal to (length of wraps) then set currentSegment to 1 else set currentSegment to currentSegment + 1 end if set wrapTime to item currentSegment of wraps end repeat end run on idle -- runs until applet is quit set now to getTime() set wrapTime to item currentSegment of wraps if now is greater than or equal to wrapTime then -- there's a minute (or less) left tellHost("Wrap...") set breakTime to item currentSegment of breaks repeat until now is greater than or equal to breakTime set now to getTime() end repeat -- in final ten seconds, display countdown repeat with msg in countdown tellHost(msg) -- delay 1 end repeat -- go to next break time if currentSegment is greater than or equal to (length of breaks) then set currentSegment to 1 else set currentSegment to currentSegment + 1 end if set waitTime to (10 * minutes) -- don't come back for 10 minutes else set waitTime to 5 -- check every five seconds so as not to use cycles unnecessarily end if return waitTime end idle -- subroutines on tellHost(message) tell application "Quicksilver" show large type message as text end tell end tellHost on getTime() set timeStr to time string of (current date) -- Get the "hour" set Pos to offset of ":" in timeStr set theHour to characters 1 thru (Pos - 1) of timeStr as string set timeStr to characters (Pos + 1) through end of timeStr as string -- Get the "minute" set Pos to offset of ":" in timeStr set theMin to characters 1 thru (Pos - 1) of timeStr as string set timeStr to characters (Pos + 1) through end of timeStr as string --Get the "second" set Pos to offset of " " in timeStr set theSec to characters 1 thru (Pos - 1) of timeStr as string return (theMin & ":" & theSec) as string end getTime
Leoville | 6 Comments |
tagged Applescript, Hotclock, Programming, Radio in Blog