diff --git a/py-packages/SimpleWebPage/simplewebpage/__init__.py b/py-packages/SimpleWebPage/simplewebpage/__init__.py index 6fbeec3..24c54c1 100755 --- a/py-packages/SimpleWebPage/simplewebpage/__init__.py +++ b/py-packages/SimpleWebPage/simplewebpage/__init__.py @@ -1,18 +1,17 @@ #!/usr/bin/env python3 # coding=utf-8 -""" A script that creates an index for a folder. - """ +"""A script that creates an index for a folder.""" +import base64 +import json import os +import random +import re +import string import sys import time -import string -import json -import re import urllib.parse from glob import fnmatch -import base64 -import random from pprint import pprint try: @@ -22,7 +21,7 @@ try: except ImportError: MARKDOWN_AVAILABLE = False -VERSION = "20240819" +VERSION = "20250827" IMAGE_EXTENSIONS = ["png", "gif", "jpg", "jpeg", "tif", "tiff"] AUDIO_EXTENSIONS = ["wav", "mp3", "ogg"] VIDEO_EXTENSIONS = ["mp4", "ogg", "webm"] @@ -247,20 +246,18 @@ def generate_index(opts): if opts.filename in files: opts, existing_config = HTML2setup(opts, opts.overwrite) if not existing_config and not opts.overwrite: - print( - opts.filename - + " exists, and not generated with SimpleWebPage. Exiting." - ) + print(opts.filename + " exists, and not generated with SimpleWebPage. Exiting.") sys.exit(1) # Re-read files, with probably changed opts dirs, files, path = get_files_and_folders(opts) print_setup(opts) files = [f for f in files if f != opts.filename] files = [f for f in files if f != opts.password_filename] + natsort = lambda s: [int(t) if t.isdigit() else t for t in re.split(r"(\d+)", s)] files = match_files(files, opts.includes, opts.excludes) dirs = match_files(dirs, opts.includes, opts.excludes) - dirs.sort(reverse=opts.reverse) - files.sort(reverse=opts.reverse) + dirs.sort(reverse=opts.reverse, key=natsort) + files.sort(reverse=opts.reverse, key=natsort) files.sort(key=lambda x: x.find("/") > 0) readme = get_readme(path, opts.no_readme) with open(os.path.join(path, opts.filename), "wt") as f: @@ -271,9 +268,7 @@ def generate_index(opts): f.write(get_pathlink(path, di)) for fi in files: f.write(get_filelink(path, fi, opts.images, opts.media)) - f.write(get_footer(readme, show_wget=not opts.no_wget)) - if not opts.no_wget: - f.write(get_download_lines(files, recursive=opts.recursive)) + f.write(get_footer(readme, show_wget=not opts.no_wget, recursive=opts.recursive, files=files)) f.close() return @@ -314,9 +309,7 @@ def generate_password_page(path, password_file, password): def get_filelink(path, fname, images=False, media=False): - if os.path.islink(os.path.join(path, fname)) and not os.path.exists( - os.path.join(path, fname) - ): + if os.path.islink(os.path.join(path, fname)) and not os.path.exists(os.path.join(path, fname)): (fsize, fsstr, fsstrb, fdstr) = (0, "NA", "NA", "NA") else: fsize = os.path.getsize(os.path.join(path, fname)) @@ -361,15 +354,11 @@ def get_imagestr(fname): def get_audiostr(fname): - return '' % ( - urllib.parse.quote(fname), - ) + return '' % (urllib.parse.quote(fname),) def get_videostr(fname): - return '' % ( - urllib.parse.quote(fname), - ) + return '' % (urllib.parse.quote(fname),) def get_pathlink(path, dname): @@ -383,7 +372,7 @@ def get_pathlink(path, dname): def get_password_page(secret, target_base, target_ext): return ( - """ + """ @@ -459,7 +448,7 @@ function newPass(password, target) { } //console.log("Use newPass('pass','page.html'); to get a new hash"); - """ header = ( - """ + """ - - - + + + {title} {css_style} @@ -1052,21 +1040,22 @@ function show_wget_magic() { return header -def get_footer(readme, show_wget=True): +def get_footer(readme, show_wget=True, recursive=False, files=[]): if show_wget: wget_str = """
wget?
-
-""" +""" + file_lines = get_download_lines(files, recursive=recursive) else: wget_str = "" - + file_lines = "" return """{README} {WGET_STR} +{FILE_LINES} """.format( - README=readme, WGET_STR=wget_str + README=readme, WGET_STR=wget_str, FILE_LINES=file_lines )