import os.path,sys,re,string
import Image

ss = ['jpg'] # acceptable image suffixes
sizes = [(640, "-medium"), (128, "-small")] # scales we want to generate



l = []
for i in ss:
    l.append(reduce(lambda a,b:a+b, map(lambda a,b:"["+a+b+"]", i, string.upper(i))))

matcher = re.compile("(.*)\.("+reduce(lambda a,b:a+"|"+b, l)+")")

def foreachimage(arg, dirname, names):
    print dirname, ":"
    try:
        names.remove(".thumbnails")
    finally:pass
    try:
        names.remove(".xvpics")
    finally:pass
    for n in names:
        fname = dirname+n
        if os.path.isfile(fname):
            picture = matcher.match(fname)
            if picture:
                print "\t", fname
                im = Image.open(fname)
                for size in sizes:
                    scale = size[0] /  max(im.size)
                    out = im.resize(tuple(map(lambda a, scale=scale: a*scale, im.size)))
                    out.save(picture.group(1) + size[1] + string.lower(picture.group(2)))

print sys.argv
os.path.walk(sys.argv[1], foreachimage, "")
