Seeking ambient screen recorder

I am a work-from-home developer that gets paid by the hour.

I am seeking an app that runs in the background and records my screen(s) and uploads it (every 20 seconds or so) through FTP to my webserver.

That way, I can set up a simple website for my clients, and they can "watch me work" and be assured that I am really working for them, and not just goofing around or playing games.

It will have to be a ambient app, meaning that it should be very discreete and not interfere in my work (xcode/unity stuff mainly)

Im willing to pay a fair shareware fee, but not anything subscription-based.


Solution 1:

You could use Automator to build a workflow to do this. Automator can take screenshots and you need to use a shell script to upload the screenshot unless you have an FTP client which is compatible with Automator. Bear in mind that uploading a screenshot might take longer than 20 seconds depending on screen size and your internet connection speed. A 5-minute interval might be more appropriate.

Here is an Automator workflow which I just tested successfully to take a screenshot and upload it to an ftp server.

NB: you need to set the shell script step to ignore input from the previous step or it will fail when trying to convert the image to text. Automator Workflow You can save this workflow as a .workflow file and then you need to schedule it to run on whatever interval you think is appropriate. You could do this through iCal but I think iCal would only allow you to run it daily or less frequently. So you need something else. You could do it by writing a launchd script or you could use a utility like lingon to create the script for you. This way you could set it to run on whatever interval you like.

Solution 2:

/3/ftp_screenshots.sh:

#!/bin/sh

tmp=${TMPDIR}`uuidgen`.png
screencapture $tmp
fn=`date '+%m-%d-%H-%M'`.png
ftp -in ftp.server.tld<<FTP
user username pa55word
binary
cd www
put $tmp $fn
bye
FTP
rm $tmp

I'd prefer SSH (ssh - Upload file with SCP bash script - Stack Overflow), but I still haven't figured out how to set up SSH keys.


~/Library/Preferences/ftp_screenshots.plist:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Disabled</key>
    <false/>
    <key>Label</key>
    <string>ftp_screenshots</string>
    <key>ProgramArguments</key>
    <array>
        <string>sh</string>
        <string>/3/ftp_screenshots.sh</string>
    </array>
    <key>StartInterval</key>
    <integer>1800</integer>
    <key>RunAtLoad</key>
    <true/>
    <key>ExitTimeOut</key>
    <integer>60</integer>
</dict>
</plist>

These functions could be helpful:

laload() { launchctl load ~/Library/LaunchAgents/"$1".plist; }
launload() { launchctl unload ~/Library/LaunchAgents/"$1".plist; }