Hack 15 Photo Blog Automatically with the Nokia 3650

figs/expert.giffigs/hack15.gif

Instantly publish your photos from the road, without even logging in.

To me, digital photography is something of a mixed blessing. The instant gratification of being able to view your photos immediately is many times offset by two small details: you need to have your camera with you and it has to be charged. My camera is much too large and fragile to carry with me all of the time, and I'd hate to have yet another device to keep track of and plug in at night. This means that I end up with lots of "event-style" photos, but relatively few impromptu snapshots of daily life. All too often, by the time I run to grab the camera, the moment has passed, and the perfect photo is gone forever.

A number of manufacturers have realized that there is a device that people habitually carry with them and nearly always keep well charged: their cell phones. Nokia has managed to merge a whole slew of nifty technologies into their 3650 phone, including Bluetooth, GPRS, GSM, and of course, a digital camera. This leads to all sorts of fascinating possibilities. Not only is it simple to upload photos to a laptop using Bluetooth, but the interface for sending photos via email is also dead simple. As if IM spam weren't bad enough, mankind is now developing the ability to spam each other with video.

Rather than throw photo bits at your friends and relatives, it is much more efficient to publish your photo album to a web page, and IM your friends and family the link to it. With a little bit of scripting fu, it is straightforward to have a script that will accept an email and publish it to a web page.

The Code

First, you need to have your script accept email. This is easily done with a procmail recipe. Add this to your .procmailrc on your mail server:

:0  * ^TO yoursecretaddress@yourdomain.com | /home/username/bin/phonecam.sh

Of course, change yoursecretaddress@yourdomain.com to the email address that your photo server will use, and fix the path to the following script to point to a real directory. Keep this address private, because any images sent to it will automatically be published! If you're not running procmail on your mail server, consult your friendly neighborhood sysadmin for assistance.

Next, save the following code to a file called phonecam.sh in the directory you specified in your .procmailrc. You can download the original from http://freenetworks.org/~mattw/badsoftware/phonecam/ (this copy has been edited slightly for size). Edit the variables at the top to suit your system.

#!/bin/sh #phonecam.sh filepath="/home/username/public_html/phonecam" imgdir="img" html="html" time=`date +%s` baseref="http://yoursite.com/~username/phonecam" title="Phonecam v.3" arcdate=`date +%D |sed '''s/\//./g'''` perpage="16" umask 062 if [ ! -f $filepath/count ]; then   echo "0" > $filepath/count fi if [ ! -f $filepath/arc.txt ]; then    touch $filepath/arc.txt fi if [ ! -d $filepath/archive ]; then    mkdir $filepath/archive fi if [ ! -d $filepath/$html ]; then    mkdir $filepath/$html fi if [ ! -d $filepath/$imgdir ]; then    mkdir $filepath/$imgdir fi count=`head -1 $filepath/count` mkdir ~/.$$ cd ~/.$$ munpack for i in *.jpg; do   a=`basename $i .jpg`   mv $i $filepath/$imgdir/$time.jpg   convert -resize 320x240 \     $filepath/$imgdir/$time.jpg $filepath/$imgdir/$time.thumb.jpg   convert -resize 150x90 $filepath/$imgdir/$time.jpg $filepath/latest.jpg   # make the new page    cat $filepath/new.txt > $filepath/new.tmp   echo "<a href=\"$baseref/$html/$time.html\">      <img src=\"$baseref/$imgdir/$time.thumb.jpg\"     width=\"320\" height=\"240\" border=0></a>"        > $filepath/new.txt   cat $filepath/new.tmp >> $filepath/new.txt   rm $filepath/new.tmp   # make the individual photo page    echo "<html>   <head><title>$title</title></head><body bgcolor=000000>   <center><img src=\"$baseref/$imgdir/$time.jpg\" border=1></center><p>"      > $filepath/$html/$time.html   cat $a.desc >> $filepath/$html/$time.html   echo "</body></html>" >> $filepath/$html/$time.html   count=`expr $count + 1` done echo $count > $filepath/count if [ $count = 1 ]; then    echo "There is 1 image in the queue" > $filepath/notify else   echo "There are $count images in the queue" > $filepath/notify fi if [ $count = $perpage ]; then    echo "<html><head><title>$title</title></head><body bgcolor=000000><center>"      > $filepath/archive/$time.html   cat $filepath/index.txt >> $filepath/archive/$time.html   cp $filepath/new.txt $filepath/index.txt   rm $filepath/count   rm $filepath/new.txt   cat $filepath/arc.txt > $filepath/arc.tmp   echo "<li><a href=\"$baseref/archive/$time.html\">$arcdate</a></li>"      >> $filepath/arcn.txt   cat $filepath/arc.tmp >> $filepath/arcn.txt   rm $filepath/arc.tmp   mv $filepath/arcn.txt $filepath/arc.txt   echo "There are no new images in the queue" > $filepath/notify fi rm -rf ~/.$$

In addition to this script, you need a copy of munpack (to decode mime attachments) and convert (part of the Image Magick suite). These tools are available in all standard Linux distributions.

Finally, create an index.shtml file in your web server's document root that contains a line like this:

<!--#include virtual="index.txt"-->

For a more advanced example of what you can do with the index.shtml file, take a look at the example available at http://freenetworks.org/~mattw/badsoftware/phonecam/index.shtml.txt.

Running the Hack

With all of the above in place, simply send a photo via email to your secret photo email address. The script automatically decodes the email, creates a thumbnail, and puts the photo into a queue. When the queue accumulates perpage photos, it rotates in the page full of photos, and moves the old page into an archive. You can always access the latest photo at http://server/~yourname/phonecam/latest.jpg, and see the entire pending queue at http://server/~yourname/phonecam/new.txt. The script manages the queue and archives without any intervention, and will even post an optional description of your photos. Just add a text body to the email and it will be inserted as the photo's description.

This script could probably be simplified and improved, but this simple shell script should run on just about any server. It creates a simple but powerful archiving web interface that is easily integrated into a weblog or other existing web page. And it pushes the instant gratification of digital photos even further, into the realm of instant publication.

See Also

  • Matt Westervelt's phonecam project (http://freenetworks.org/~mattw/badsoftware/phonecam/)

  • Image Magick (http://www.imagemagick.org/)



Wireless Hacks. 100 Industrial-Strength Tips and Techniques
Wireless Hacks. 100 Industrial-Strength Tips and Techniques
ISBN: N/A
EAN: N/A
Year: 2003
Pages: 158

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net