#!/usr/bin/env python

import os
import sys
import datetime

image_list = []
image_dict = {}
html_page = ""


def print_usage():
	print "usage: %s destination_dir" % os.path.basename(sys.argv[0])



def create_thumbnail(image_path):
	thumbnail_path = image_path[:-4] + "_thumb.jpg"
	os.system("convert " + image_path + " -scale 20% " + thumbnail_path)
	return thumbnail_path



def get_exif_comments(image_path):
	comments = ""

	f = os.popen("rdjpgcom " + image_path)
	comments = f.read().strip()
	f.close()

	return comments



def fix_time(image_path):
	os.system("jhead -ft " + image_path)



if len(sys.argv) == 2:
	dest_dir = sys.argv[1]

	if os.path.isdir(dest_dir):
		dest_dir = os.path.abspath(dest_dir)

		# build image list
		for file in os.listdir(dest_dir):
			if file[-3:].lower() == "jpg" and file.count("thumb") == 0:
				image_list.append(os.path.join(dest_dir, file))

		# fix filesystem time from exif tag and build image dictionary for sorting
		for image in image_list:
			fix_time(image)
			image_dict[os.path.getmtime(image)] = image

		# build web page
		html_page += """
<html>
	<body>"""

		left_align_text = True

		keys = image_dict.keys()
		keys.sort()

		for key in keys:
			thumbnail = create_thumbnail(image_dict[key])

			if left_align_text:
				html_page += """
				<table border=1 align=center width=75%><tr><td>""" + get_exif_comments(image_dict[key]) + "</td><td><a href=" + os.path.basename(image_dict[key]) + "><img src=" + os.path.basename(thumbnail) + " title=" + os.path.basename(image_dict[key]) + "></a></td></tr></table>"
			else:
				html_page += """
				<table border=1 align=center width=75%><tr><td><a href=""" + os.path.basename(image_dict[key]) + "><img src=" + os.path.basename(thumbnail) + " title=" + os.path.basename(image_dict[key]) + "></a></td><td>" + get_exif_comments(image_dict[key]) + "</td></tr></table>"

			left_align_text = not left_align_text

		html_page += """
	</body>
</html>"""

		# write web page to disk
		f = open(os.path.join(dest_dir, "index.html"), "w")
		f.write(html_page)
		f.close()
	else:
		print "error: directory %s doesn't exist!" % dest_dir
else:
	print_usage()
