From 59533990900f99034cc60d74b6c04bfa1fb8322e Mon Sep 17 00:00:00 2001 From: ed Date: Wed, 17 Jul 2024 23:06:01 +0000 Subject: [PATCH] add helptext exporters (html, txt) --- scripts/help2html.py | 81 ++++++++++++++++++++++++++++++++++++++++++++ scripts/help2txt.sh | 26 ++++++++++++++ 2 files changed, 107 insertions(+) create mode 100755 scripts/help2html.py create mode 100755 scripts/help2txt.sh diff --git a/scripts/help2html.py b/scripts/help2html.py new file mode 100755 index 00000000..314c17b8 --- /dev/null +++ b/scripts/help2html.py @@ -0,0 +1,81 @@ +#!/usr/bin/env python3 + +import re +import subprocess as sp + + +# to convert the copyparty --help to html, run this in xfce4-terminal @ 140x43: +_ = r"""" +echo; for a in '' -accounts -flags -handlers -hooks -urlform -exp -ls -dbd -pwhash -zm; do +./copyparty-sfx.py --help$a 2>/dev/null; printf '\n\n\n%0139d\n\n\n'; done # xfce4-terminal @ 140x43 +""" +# click [edit] => [select all] +# click [edit] => [copy as html] +# and then run this script + + +def readclip(): + cmds = [ + "xsel -ob", + "xclip -selection CLIPBOARD -o", + "pbpaste", + ] + for cmd in cmds: + try: + return sp.check_output(cmd.split()).decode("utf-8") + except: + pass + + +def cnv(src): + yield '' + skip_sfx = False + in_sfx = 0 + in_salt = 0 + + while True: + ln = next(src) + if ""): + ln = "
" + ln
+            yield ln
+            break
+
+    for ln in src:
+        ln = ln.rstrip()
+        if re.search(r"^]+>copyparty v[0-9]", ln):
+            in_sfx = 3
+        if in_sfx:
+            in_sfx -= 1
+            if not skip_sfx:
+                yield ln
+            continue
+        if '">uuid:' in ln:
+            ln = re.sub(r">uuid:[0-9a-f-]{36}<", ">autogenerated<", ln)
+        if "-salt SALT" in ln:
+            in_salt = 3
+        if in_salt:
+            in_salt -= 1
+            t = ln
+            ln = re.sub(r">[0-9a-zA-Z/+]{24}<", ">24-character-autogenerated<", ln)
+            ln = re.sub(r">[0-9a-zA-Z/+]{40}<", ">40-character-autogenerated<", ln)
+            if t != ln:
+                in_salt = 0
+        ln = ln.replace(">/home/ed/", ">~/")
+        if ln.startswith("0" * 20):
+            skip_sfx = True
+        yield ln
+
+    yield "
eof" + + +def main(): + src = readclip() + src = re.split("0{100,200}", src[::-1], 1)[1][::-1] + with open("helptext.html", "wb") as fo: + for ln in cnv(iter(src.split("\n")[:-3])): + fo.write(ln.encode("utf-8") + b"\r\n") + + +if __name__ == "__main__": + main() diff --git a/scripts/help2txt.sh b/scripts/help2txt.sh new file mode 100755 index 00000000..6c8ed8d0 --- /dev/null +++ b/scripts/help2txt.sh @@ -0,0 +1,26 @@ +#!/bin/bash +set -e + +( xsel -ob | sed -r ' +s`/home/ed/`~/`; +s/uuid:[0-9a-f-]{36}/autogenerated/; +s/(-salt SALT.*default: )[0-9a-zA-Z/+]{24}\)/\124-character-autogenerated)/; +s/(-salt SALT.*default: )[0-9a-zA-Z/+]{40}\)/\140-character-autogenerated)/; +' | awk ' +/^copyparty/{a=1} !a{next} +/^0{20}/{b=1} b&&/^copyparty v[0-9]+\./{s=3} +s{s-=1;next} 1' | +head -n-6; echo eof ) >helptext.txt +exit 0 + + +# ===================================================================== +# end of script; below is the explanation how to use this: + + +# first open an infinitely wide console (this is why you own an ultrawide) and copypaste this into it: +for a in '' -accounts -flags -handlers -hooks -urlform -exp -ls -dbd -pwhash -zm; do +./copyparty-sfx.py --help$a 2>/dev/null; printf '\n\n\n%0255d\n\n\n'; done + +# then copypaste all of the output by pressing ctrl-shift-a, ctrl-shift-c +# and finally actually run this script which should produce helptext.txt