#!/usr/bin/python # coding=utf-8 ''' A script that creates an index for a folder. ''' import os,sys,time import urllib VERSION="20160116" def setup(): ''' Setup the command line options ''' from argparse import ArgumentParser parser=ArgumentParser() parser.add_argument("-f",action="store_true",dest="overwrite",default=False, help="Overwrite existing index file.") parser.add_argument("-H",action="store_true",dest="hidden",default=False, help="Show hidden files") parser.add_argument("-t",type=str,dest="title",default=None, help="Name for the title (Default: Folder name)") parser.add_argument("-o",type=str,dest="filename",default="index.html", help="Output filename (Default: index.html)") parser.add_argument("-p",action="store_false",dest="parent",default=True, help="Do no print .. link for parent folder.") parser.add_argument("--version",action='version', version=VERSION) parser.add_argument("path",type=str,action="store",default=os.path.abspath('.'),nargs='?', help="Root path of the index") options=parser.parse_args() options.path=os.path.abspath(options.path) if options.title==None: options.title=os.path.basename(options.path) return options def setup2HTML(opts): return ''%";".join([ 'hidden=%s'%opts.hidden, 'parent=%s'%opts.parent, 'title=%s'%urllib.quote(opts.title) ]) def HTML2setup(opts): f=open(os.path.join(opts.path,opts.filename), 'rt') try: for l in f.readlines(): if l.find('name="SimpleWebPageSetup"')>-1: content=l[l.find('name="SimpleWebPageSetup"'):] for s in content.split('"')[3].split(";"): (k,v)=s.split('=',1) if k=='hidden': opts.hidden=v=="True" if k=='parent': opts.parent=v=="True" if k=='title': opts.title=urllib.unquote(v) print("Reading options from existing "+opts.filename) break except: pass return opts def generate_index(opts): for path,dirs,files in os.walk(opts.path): if opts.filename in files: if not opts.overwrite: print(opts.filename+" exists") sys.exit(1) opts=HTML2setup(opts) files = [ f for f in files if f != opts.filename] if not opts.hidden: files = [ f for f in files if not f.startswith(".")] dirs = [ d for d in dirs if not d.startswith(".")] f=open(os.path.join(path,opts.filename),'wt') dirs.sort() files.sort() f.write(get_header(opts)) if opts.parent: f.write(get_pathlink(path,'..')) for di in dirs: f.write(get_pathlink(path,di)) for fi in files: f.write(get_filelink(path,fi)) f.write(get_footer()) f.close() return def get_filelink(path,fname): fsize=os.path.getsize(os.path.join(path,fname)) fsstr=sizeof(fsize) fsstrb=str(fsize) fdate=time.localtime(os.path.getmtime(os.path.join(path,fname))) fdstr=time.strftime("%Y/%m/%d %H:%M:%S",fdate) return '
| Name | Size | Size B | Modified |
|---|