#!/usr/bin/python import sys from optparse import OptionParser import os import fnmatch from urllib import quote def main(): parser = OptionParser(usage="usage: %prog [options] folder [folder2 ...]", version="%prog 0.1") parser.add_option("", "--names", dest="names", default="[Ff]older.jpg", help='specification to match image filenames [default: "%default"]') parser.add_option("-R", "--recursive", dest="recursive", action="store_true", default=False, help="set icons for folders recursively") (options, folders) = parser.parse_args(sys.argv) folders = folders[1:] if not folders: parser.error("no folders specified") nautilus_metafiles = os.path.join(os.environ["HOME"], ".nautilus", "metafiles") noquote = "()'*" for folder in folders: for root, dirs, files in os.walk(folder): print root, "..." subdirs = [] for d in dirs: images = fnmatch.filter(os.listdir(os.path.join(root, d)), options.names) if images: image = os.path.basename(images[0]) subdirs.append((quote(d, safe=noquote), quote(image, safe=noquote))) else: print "no image found for %s/%s" % (root, d) if subdirs: metafilename = "file:%2F%2F" + quote(quote(os.path.abspath(root), safe=noquote + "/"), safe=noquote) + ".xml" metafilepath = os.path.join(nautilus_metafiles, metafilename) metafile = open(metafilepath, "w") metafile.write('\n') for sd in subdirs: metafile.write('' % sd) metafile.write('\n') metafile.close() if not options.recursive: dirs[:] = [] print "done." if __name__ == "__main__": main()