w_str_s="$(STRING "$SEARCH")"
w_str_f="$(STRING "$FILTER")"
-c_tags="$_DATA/.index/tags.cache"; c_tagcategories="$_DATA/.index/tagcategories.cache"
-if [ ! -s "$c_tags" -o ! -s "$c_tagcategories" ] \
- || [ "$(find "$_DATA/" -path '*/.index/meta' -newer "$c_tags")" ]
- then
- w_tags="$(
- list_meta |sed -E '
- s;^.*\ttags=([^\t]*)\t.*$;\1;;
- s;,;\n;g;
- ' \
- | sort |uniq -c |sort -rn |sed -E 's;^ *[0-9]+ ;;;' \
- | UNSTRING | HTML \
- | sed -E 's;
\;;\n;g; s;\n+;\n;g;'
- )"
- w_tagcategories="$(printf %s "$w_tags" | sed -rn '/:/s;^-?([^:]+):.*$;\1;p' |sort -u )"
- printf %s "$w_tags" >"$c_tags"
- printf %s "$w_tagcategories" >"$c_tagcategories"
-else
- w_tags="$(cat "$c_tags")"
- w_tagcategories="$(cat "$c_tagcategories")"
-fi
+taglist(){
+ list_meta |sed -E '
+ s;^.*\ttags=([^\t]*)\t.*$;\1;;
+ s;,;\n;g;
+ ' \
+ | sort |uniq -c |sort -rn |sed -E 's;^ *[0-9]+ ;;;' \
+ | UNSTRING | HTML \
+ | sed -E 's;
\;;\n;g; s;\n+;\n;g;'
+}
+tagorder(){
+ printf '*\n%s\n$\n' "$w_tagcategories" \
+ | while read -r category; do
+ printf '%s\n' "$w_tags" \
+ | { [ "$category" = '*' ] && grep -avF ':' || grep -awF "${category}"; } \
+ | { sed -u 10q; sort; }
+ done
+}
+c_tags="$_DATA/.index/tags.cache";
+if [ ! -s "$c_tags" ]; then
+ taglist >"$c_tags.$$"
+ mv "$c_tags.$$" "$c_tags"
+fi
+w_tags="$(cat "$c_tags")"
+w_tagcategories="$(
+ printf %s "$w_tags" \
+ | sed -rn '/:/s;^-?([^:]+):.*$;\1;p' \
+ |sort -u
+)"
+w_tags="$(tagorder)"
[ "$ORDER" = Name ] && w_coname=checked
[ "$ORDER" = Date ] && w_codate=checked
w_prefs(){
local tm tf td
- tm=''; [ "$(COOKIE mode)" = index ] && tm=' '
+ tm=''; [ "$(COOKIE mode)" = browse ] && tm=' '
tf=''; [ "$(COOKIE fakemp4)" = yes ] && tf=checked
td=''; [ "$(COOKIE downscale)" = yes ] && td=checked
[hidden "ref" "${w_refuri}"]
[label for=prefs_ps Pagesize]
[input #prefs_ps type=number name=pagesize value="${LISTSIZE}"][br]
- [radio "mode" "browse" ${tm:-checked=checked} #prefs_modebrowse] [label for=prefs_modebrowse Browse Folders][br]
- [radio "mode" "index" ${tm:+checked=checked} #prefs_modeindex ] [label for=prefs_modeindex View Full Index][br]
+ [radio "mode" "browse" ${tm:+checked=checked} #prefs_modebrowse] [label for=prefs_modebrowse Browse Folders][br]
+ [radio "mode" "index" ${tm:-checked=checked} #prefs_modeindex ] [label for=prefs_modeindex View Full Index][br]
[checkbox "fakemp4" "yes" ${tf} #prefs_fmp4] [label for=prefs_fmp4 Fake .MP4 file type][br]
[checkbox "downscale" "yes" ${td} #prefs_downscale] [label for=prefs_downscale Prefer downscale to 480p][br]
[submit "index" "update" Force Index Update][br]
printf '%s\n' "$w_tags" \
| { [ "$category" = '*' ] && grep -avF ':' || grep -awF "${category}"; } \
- | { sed -u 10q; sort; } \
| while read -r tag; do
[ "$tag" ] || continue
t=''; [ ! "${f%%*|${tag}|*}" ] && t=checked
printf '[fieldset [legend %s:][div .tagselect\n' "$category"
printf %s "$w_tags" \
| { [ "$category" = 'Tags' ] && grep -avF ':' || grep -awF "${category}"; } \
- | { sed -u 10q; sort; } \
| while read -r tag; do
[ "$tag" ] || continue
d="${tag#-}"; d="${d#*:}"