From 84d6b299e7e799982abfb7fc839f96db7181cb6d Mon Sep 17 00:00:00 2001 From: Ville Rantanen Date: Mon, 27 Apr 2020 12:38:42 +0300 Subject: [PATCH 1/4] SimpleWbPage with recursive file listing --- web/SimpleWebPage.py | 79 +++++++++++++++++++++++++++++--------------- 1 file changed, 53 insertions(+), 26 deletions(-) diff --git a/web/SimpleWebPage.py b/web/SimpleWebPage.py index 88d841a..61ad243 100755 --- a/web/SimpleWebPage.py +++ b/web/SimpleWebPage.py @@ -7,7 +7,7 @@ import os,sys,time import urllib from glob import fnmatch -VERSION = "20181206" +VERSION = "20200427" IMAGE_EXTENSIONS = ['png', 'gif', 'jpg', 'jpeg', 'tif', 'tiff'] def setup(): @@ -26,6 +26,8 @@ def setup(): 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("-r",action="store_true",dest="recursive",default=False, + help="Include all files recursively in the list. Do not include any folders.") parser.add_argument("--images",action="store_true",dest="images",default=False, help="Show images with tags") parser.add_argument("--include","-i", @@ -80,32 +82,57 @@ def HTML2setup(opts): except: return (opts, False) +def get_files_and_folders(opts): + + if opts.recursive: + rdirs = [] + rfiles = [] + rpath = None + for path, dirs, files in os.walk(opts.path): + if rpath == None: + rpath = path + if not opts.hidden: + files = [ f for f in files if not f.startswith(".")] + dirs[:] = [ d for d in dirs if not d.startswith(".")] + files = [os.path.join(os.path.relpath(path, opts.path), f) for f in files] + files = [f[2:] if f.startswith("./") else f for f in files ] + rfiles.extend(files) + + return rdirs, rfiles, rpath + + else: + for path, dirs, files in os.walk(opts.path): + if not opts.hidden: + files = [ f for f in files if not f.startswith(".")] + dirs = [ d for d in dirs if not d.startswith(".")] + return dirs, files, path + + def generate_index(opts): - for path,dirs, files in os.walk(opts.path): - existing_config = False - if opts.filename in files: - opts, existing_config = HTML2setup(opts) - if not existing_config and not opts.overwrite: - print(opts.filename + " exists, and not generated with SimpleWebPage. Exiting.") - sys.exit(1) - files = [ f for f in files if f != opts.filename] - files = match_files(files, opts.includes) - if not opts.hidden: - files = [ f for f in files if not f.startswith(".")] - dirs = [ d for d in dirs if not d.startswith(".")] - dirs.sort() - files.sort() - with open(os.path.join(path,opts.filename), 'wt') as f: - 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, opts.images)) - f.write(get_footer()) - f.close() - return + dirs, files, path = get_files_and_folders(opts) + existing_config = False + if opts.filename in files: + opts, existing_config = HTML2setup(opts) + if not existing_config and not opts.overwrite: + print(opts.filename + " exists, and not generated with SimpleWebPage. Exiting.") + sys.exit(1) + files = [ f for f in files if f != opts.filename] + files = match_files(files, opts.includes) + dirs.sort() + files.sort() + files.sort(key = lambda x: x.find("/") > 0) + with open(os.path.join(path,opts.filename), 'wt') as f: + 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, opts.images)) + f.write(get_footer()) + f.close() + return + def get_filelink(path,fname,images=False): if os.path.islink(os.path.join(path, fname)) and not os.path.exists(os.path.join(path, fname)): From 618f97cc490ee8a130eb6e7d67e878cdf5005b49 Mon Sep 17 00:00:00 2001 From: Ville Rantanen Date: Mon, 27 Apr 2020 16:59:53 +0300 Subject: [PATCH 2/4] add a list of files for wget etc --- web/SimpleWebPage.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/web/SimpleWebPage.py b/web/SimpleWebPage.py index 61ad243..8517d7e 100755 --- a/web/SimpleWebPage.py +++ b/web/SimpleWebPage.py @@ -130,6 +130,7 @@ def generate_index(opts): for fi in files: f.write(get_filelink(path, fi, opts.images)) f.write(get_footer()) + f.write(get_wget_lines(files)) f.close() return @@ -155,6 +156,15 @@ def get_filelink(path,fname,images=False): fdstr ) + +def get_wget_lines(files): + wget = "\n\n" + return wget + + def get_imagestr(fname): return ''%( urllib.quote(fname), From 813f5621bec2e9ca79283228292a045204d2fdfd Mon Sep 17 00:00:00 2001 From: Ville Rantanen Date: Mon, 27 Apr 2020 17:05:45 +0300 Subject: [PATCH 3/4] add a list of files for wget etc --- web/SimpleWebPage.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/web/SimpleWebPage.py b/web/SimpleWebPage.py index 8517d7e..829f51a 100755 --- a/web/SimpleWebPage.py +++ b/web/SimpleWebPage.py @@ -160,7 +160,7 @@ def get_filelink(path,fname,images=False): def get_wget_lines(files): wget = "\n\n" return wget From 1eaa248eb5c131b983a20e116cfd660a229799ac Mon Sep 17 00:00:00 2001 From: Ville Rantanen Date: Mon, 27 Apr 2020 17:08:04 +0300 Subject: [PATCH 4/4] add a list of files for wget etc --- web/SimpleWebPage.py | 1 + 1 file changed, 1 insertion(+) diff --git a/web/SimpleWebPage.py b/web/SimpleWebPage.py index 829f51a..0610e56 100755 --- a/web/SimpleWebPage.py +++ b/web/SimpleWebPage.py @@ -161,6 +161,7 @@ def get_wget_lines(files): wget = "\n\n" return wget