option to regex-exclude files in browser listings

This commit is contained in:
ed 2023-06-02 21:54:25 +00:00
parent 705b58c741
commit 9c28ba417e
5 changed files with 19 additions and 3 deletions

View file

@ -969,6 +969,7 @@ def add_ui(ap, retry):
ap2.add_argument("--lang", metavar="LANG", type=u, default="eng", help="language") ap2.add_argument("--lang", metavar="LANG", type=u, default="eng", help="language")
ap2.add_argument("--theme", metavar="NUM", type=int, default=0, help="default theme to use") ap2.add_argument("--theme", metavar="NUM", type=int, default=0, help="default theme to use")
ap2.add_argument("--themes", metavar="NUM", type=int, default=8, help="number of themes installed") ap2.add_argument("--themes", metavar="NUM", type=int, default=8, help="number of themes installed")
ap2.add_argument("--unlist", metavar="REGEX", type=u, default="", help="don't show files matching REGEX in file list. Purely cosmetic! Does not affect API calls, just the browser. Example: [\033[32m\.(js|css)$\033[0m] (volflag=unlist)")
ap2.add_argument("--favico", metavar="TXT", type=u, default="c 000 none" if retry else "🎉 000 none", help="\033[33mfavicon-text\033[0m [ \033[33mforeground\033[0m [ \033[33mbackground\033[0m ] ], set blank to disable") ap2.add_argument("--favico", metavar="TXT", type=u, default="c 000 none" if retry else "🎉 000 none", help="\033[33mfavicon-text\033[0m [ \033[33mforeground\033[0m [ \033[33mbackground\033[0m ] ], set blank to disable")
ap2.add_argument("--mpmc", metavar="URL", type=u, default="", help="change the mediaplayer-toggle mouse cursor; URL to a folder with {2..5}.png inside (or disable with [\033[32m.\033[0m])") ap2.add_argument("--mpmc", metavar="URL", type=u, default="", help="change the mediaplayer-toggle mouse cursor; URL to a folder with {2..5}.png inside (or disable with [\033[32m.\033[0m])")
ap2.add_argument("--js-browser", metavar="L", type=u, help="URL to additional JS to include") ap2.add_argument("--js-browser", metavar="L", type=u, help="URL to additional JS to include")

View file

@ -41,7 +41,7 @@ def vf_bmap() -> dict[str, str]:
def vf_vmap() -> dict[str, str]: def vf_vmap() -> dict[str, str]:
"""argv-to-volflag: simple values""" """argv-to-volflag: simple values"""
ret = {} ret = {}
for k in ("lg_sbf", "md_sbf"): for k in ("lg_sbf", "md_sbf", "unlist"):
ret[k] = k ret[k] = k
return ret return ret
@ -135,6 +135,7 @@ flagcats = {
}, },
"client and ux": { "client and ux": {
"grid": "show grid/thumbnails by default", "grid": "show grid/thumbnails by default",
"unlist": "dont list files matching REGEX",
"html_head=TXT": "includes TXT in the <head>", "html_head=TXT": "includes TXT in the <head>",
"robots": "allows indexing by search engines (default)", "robots": "allows indexing by search engines (default)",
"norobots": "kindly asks search engines to leave", "norobots": "kindly asks search engines to leave",

View file

@ -3459,6 +3459,7 @@ class HttpCli(object):
break break
vf = vn.flags vf = vn.flags
unlist = vf.get("unlist", "")
ls_ret = { ls_ret = {
"dirs": [], "dirs": [],
"files": [], "files": [],
@ -3469,6 +3470,7 @@ class HttpCli(object):
"itag": e2t, "itag": e2t,
"lifetime": vn.flags.get("lifetime") or 0, "lifetime": vn.flags.get("lifetime") or 0,
"frand": bool(vn.flags.get("rand")), "frand": bool(vn.flags.get("rand")),
"unlist": unlist,
"perms": perms, "perms": perms,
"logues": logues, "logues": logues,
"readme": readme, "readme": readme,
@ -3501,6 +3503,7 @@ class HttpCli(object):
"title": html_escape(self.vpath, crlf=True) or "💾🎉", "title": html_escape(self.vpath, crlf=True) or "💾🎉",
"srv_info": srv_infot, "srv_info": srv_infot,
"dgrid": "grid" in vf, "dgrid": "grid" in vf,
"unlist": unlist,
"dtheme": self.args.theme, "dtheme": self.args.theme,
"themes": self.args.themes, "themes": self.args.themes,
"turbolvl": self.args.turbo, "turbolvl": self.args.turbo,
@ -3730,7 +3733,12 @@ class HttpCli(object):
dirs.sort(key=itemgetter("name")) dirs.sort(key=itemgetter("name"))
if is_js: if is_js:
j2a["ls0"] = {"dirs": dirs, "files": files, "taglist": taglist} j2a["ls0"] = {
"dirs": dirs,
"files": files,
"taglist": taglist,
"unlist": unlist,
}
j2a["files"] = [] j2a["files"] = []
else: else:
j2a["files"] = dirs + files j2a["files"] = dirs + files

View file

@ -5726,6 +5726,12 @@ var treectl = (function () {
seen = {}; seen = {};
r.lsc = res; r.lsc = res;
if (res.unlist) {
var ptn = new RegExp(res.unlist);
for (var a = nodes.length - 1; a >= 0; a--)
if (ptn.exec(nodes[a].href.split('?')[0]))
nodes.splice(a, 1);
}
nodes = sortfiles(nodes); nodes = sortfiles(nodes);
window.removeEventListener('scroll', r.tscroll); window.removeEventListener('scroll', r.tscroll);
r.trunc = nodes.length > r.nvis && location.hash.length < 2; r.trunc = nodes.length > r.nvis && location.hash.length < 2;

View file

@ -113,7 +113,7 @@ class Cfg(Namespace):
ex = "df loris re_maxage rproxy rsp_jtr rsp_slp s_wr_slp theme themes turbo" ex = "df loris re_maxage rproxy rsp_jtr rsp_slp s_wr_slp theme themes turbo"
ka.update(**{k: 0 for k in ex.split()}) ka.update(**{k: 0 for k in ex.split()})
ex = "doctitle favico html_head lg_sbf log_fk md_sbf mth textfiles R RS SR" ex = "doctitle favico html_head lg_sbf log_fk md_sbf mth textfiles unlist R RS SR"
ka.update(**{k: "" for k in ex.split()}) ka.update(**{k: "" for k in ex.split()})
ex = "xad xar xau xbd xbr xbu xiu xm" ex = "xad xar xau xbd xbr xbu xiu xm"