#!/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)