I wanted to relieve the night watchmen with an automated capture. The method I used is outlined below.
Note: This method is Macintosh-specific, though the principles could be applied in Linux or Windows. If you craft a solution for other platforms, please include it in a comment on this post.
My plan was to capture the image (or the whole web page) into a file four times per hour, since the web-available images are updated every fifteen minutes. I figured I needed a capture program, and a way to call it at intervals.
Capture the Page
The first step was easy: Googling "mac webcam capture" lead me to Paul Hammond's excellent script, "webkit2png". The script requires the "python" programming language and the "PyObjC bridge" software, both included in Mac OS X 10.5 and later, but you don't have to know a thing about python or PyObjC to use webkit2png. When you run from the command line, it accepts a URL, fetches the web page, and converts the entire page to a "png" image file, which is widely supported by browsers and other graphics programs.
To run this in an automated way, each file generated needs a unique file name. webkit2png offers an option to append the date to the output filename. Looking at the script, it wasn't hard to find the function that fetches the date. I googled that function in python and found out how to modify it to include the time as well as the date. With that one six-character mod, webkit2png was good to go for me. [Note that this was simplified for me by the fact that webkit32png is a script, not a compiled program. It is often takes less knowledge to modify a script than a program.]
The command I ended up with is:
python ~/bin/paulhammond-webkit2png-9c4265a/webkit2png -Fd -o Lolo -D ~/Desktop/+Lolo http://rwis.mdt.mt.gov/scanweb/lolo.shtml
- python is the program which will "interpret" (run) the script
- ~/bin/....webkit2png is the script to run
- -Fd tells webkit2png to append the date-time to the output filenale
- -o Lolo gives the "stem" (first part) of the output filename
- -D /Desktop/+Lolo is the directory into which to put the output file
- http://...lolo.shtml is the URL to capture.
Launch At Intervals
The classic way to launch a command at certain times in Unix-derived systems like Mac OS X is to use the built-in program cron. [Though Apple now uses and recommends their "launchctl" program, citing extended features, I'm an old Unix hand, and I don't need extended features, so I went with what I know.] cron "wakes up" once per minute, and reads a control file (called crontab) that tells it what commands to run at specific times.
crontab has a somewhat arcane syntax, so rather than relearn it, I downloaded Cronnix, which provides a convenient dialog box (in a "simple" or "advanced" mode) to create the entries. In Cronnix I use:
- min: 8,23,38,53 - one minute after the image is updated by the webcam
- hour: 0-6, 18-23 - only record from midnight to 6am and 6pm to midnight (the megaloads only roll at night)
- mday: * - any day of the month
- month: * - any month
- Wday: * - any day of the week
- Command: - as above
I clicked Cronnix's "Save" button, and that was it!
- The particular webcam I am logging uses a static URL for the actual image, so I could have fed the img "src=" URL to webkit2png instead of the web page URL. In fact, any URL that return a file type that can be interpreted by webkit could be used.
- There are many other ways to accomplish the same thing. This one was pretty simple for me to put up. YMMV.