#!/usr/bin/python import Image import re import cgi import cgitb; cgitb.enable() import os import sys css = "http://iki.fi/hendry/css/bluegold.css" debug = 0 l = [] imagelist = [] thumbsize = "" def thumbnailsize(image, thumbnailwidth = 200): im = Image.open(image) width, height = im.size ratio = float(thumbnailwidth) / float(width) if debug: print "ratio:", ratio thumbnailheight = ratio * height thumbnailheight = int(thumbnailheight) if debug: print "thumbnailheight:",thumbnailheight im = None return 'x'.join([str(thumbnailwidth), str(thumbnailheight)]) print "Content-Type: text/html" print if debug: print "
"
req = os.environ.get("REQUEST_URI", "")
host = "http://" + os.environ.get("HTTP_HOST", "")
currentdir = "/".join([os.environ.get("PIC_CGI", ""), req])
currentdir = os.path.normpath(currentdir)
if debug: print currentdir
for i in os.listdir(currentdir):
if debug: print "i:", i
fullpath = os.path.join(currentdir, i)
if re.search(r'^\d\d\:\d\d\:\d\d$', i):
if debug: print "Image endpath detected!"
if debug: print "i:", i
if debug: print "fullpath:", fullpath
for j in os.listdir(fullpath):
if debug: print "j:", j
jfull = os.path.join(fullpath, j)
if debug: print "Jfull:", jfull
if os.path.isdir(jfull):
if not thumbsize:
thumbsize = j
width, height = thumbsize.split('x')
jwidth, jheight = j.split('x')
if int(width) > int(jwidth) and int(height) > int(jheight):
thumbsize = j
if debug: print "Thumbsize:", thumbsize
imagepath = os.path.join(fullpath, "index.jpg")
if debug: print "Imagepath:", imagepath
realimage = os.path.realpath(imagepath)
if debug: print "Realimage:", realimage
if not thumbsize:
thumbsize = thumbnailsize(jfull)
if debug: print "Thumbsize:", thumbsize
thumbpath = '/'.join([i, thumbsize])
if debug: print "thumbpath:", thumbpath
if debug: print "imageuri:", host, req, i
screensize = thumbnailsize(realimage, 1000)
if debug: print realimage
imagelist.append({"thumbpath": host + req + thumbpath, "realimage": realimage, "imageuri": host + req + i + "/" + screensize})
thumbsize = ""
if debug: print fullpath
if os.path.isdir(fullpath):
l.append({"dir": i})
else:
if debug: print "Not dir", i
if debug: print l
l.sort(lambda x, y: cmp(x["dir"], y["dir"]))
if debug: print l
if debug: print ""
from htmltmpl import TemplateManager, TemplateProcessor
template = TemplateManager().prepare("basic.tmpl")
tproc = TemplateProcessor()
tproc.set("host", os.environ.get("HTTP_HOST", ""))
tproc.set("Directories", l)
tproc.set("Listing", imagelist)
parent = os.path.normpath(req)
parent = parent.split('/')
if len(parent) < 3:
parent = "/"
else:
parent = "/".join(parent[:-1])
tproc.set("parent", parent)
tproc.set("css", css)
if debug:
l = []
for key in os.environ.keys():
value = os.environ.get(key)
l.append({"key": key, "value": value})
tproc.set("Environ", l)
print tproc.process(template)