From 58aea282f6a4d479558213e8be76b98dcde8ec4a Mon Sep 17 00:00:00 2001 From: =?utf8?q?Paul=20H=C3=A4nsch?= Date: Wed, 22 Dec 2021 00:08:44 +0100 Subject: [PATCH] ordering for manual groups --- db_meta.sh | 32 ++++++++++++++++++++++++-------- view.sh | 1 + 2 files changed, 25 insertions(+), 8 deletions(-) diff --git a/db_meta.sh b/db_meta.sh index e3a5c5f..9dfbe4c 100755 --- a/db_meta.sh +++ b/db_meta.sh @@ -166,25 +166,41 @@ list_meta(){ dbmeta_autogroup(){ sed -E ' + h; # save original dataset + + # strip common suffixes of web video sites + s;-([0-9a-zA-Z_-]{11}|ph[0-9a-f]{13}|xh[0-9a-zA-Z]{5}|[0-9]{6,})\r;-\r;; + + # clear branching status + tBRANCH; :BRANCH + # perform auto grouping if group id is missing or empty /\r$/bAUTOGROUP; s;\r \\$;\r;; tAUTOGROUP; - # skip auto grouping if manual group id is present - /\r .+$/b; + # only perform ordering if manual group id is present + /\r .+$/bAUTOORDER; + + b; + + :AUTOORDER + # strip all fields but the name + s;^([^\t]+ [^\t]+ [^\t]+ [^\t]+ [^\t]+ )([^\r]+)\r (.+)$;\2; + + # reduce to numerals + s;[^0-9]+;;g; + + # append ordering field to dataset + H; g; s;\n;\t;; + b; :AUTOGROUP - # save original dataset - h; - # strip all fields but the name s;^[^\t]+ [^\t]+ [^\t]+ [^\t]+ [^\t]+ ;; - # strip common suffixes of web video sites - s;-([0-9a-zA-Z_-]{11}|ph[0-9a-f]{13}|[0-9]{6,})\r$;-\r;; # replace all numeric parts and append numerals to an ordering field # the group id will be made up of only the non-numeric character frame # the ordering field will hold all numbers from the name - :X s;^([^\r0-9]*)([0-9]+)([^\r0-9]*)\r\t?([0-9]*)$;\1\r\3\r \4\2;; tX; + :X s;^([^0-9]*)([0-9]+)([^\r]*)\r\t?([0-9]*)$;\1\r\3\r \4\2;; tX; # append group id and ordering field to dataset H; g; s;\n;\t;; diff --git a/view.sh b/view.sh index 1566a82..c7f030e 100755 --- a/view.sh +++ b/view.sh @@ -41,6 +41,7 @@ printf 'Content-Type: text/html;charset=utf-8\r\n\r\n' printf '[div .itemlist' list_meta "$_DATA/${ITEM%/*}/.index/meta" \ | grep -F "${CR} ${META_GROUP}" \ + | sort -n -k8 -k6,6 \ | while read_meta; do file="$(printf %s\\n "$_DATA/${META_NAME}".*)" [ "/${file#${_DATA}/}" = "$ITEM" ] && continue -- 2.39.2