]> git.plutz.net Git - serve0/blobdiff - list.sh
thumbnail and meta generation
[serve0] / list.sh
diff --git a/list.sh b/list.sh
index 61099e71450309411935e9158d2084bd22ca0c93..9abf0e9d9e27fc23af9a34b35405b3c6c9af7b3a 100644 (file)
--- a/list.sh
+++ b/list.sh
@@ -3,10 +3,23 @@
 list_item(){
   name="$(HTML "$1")"
   path="$(HTML "$ITEM/$1")"
+  meta="$_DATA/$ITEM/.index/meta"
 
   if [ -d "$_DATA/$ITEM/$1" ]; then
     printf '[a .list .dir href="%s" %s]' \
       "$path" "$name"
+  elif [ -f "$meta" ]; then
+    read -r length width height tags comment n <<-EOF
+       $(grep -m1 -F " $1" "$meta")
+       EOF
+     printf '[div .list .file
+               [a href="%s" [img src="%s?a=thumbnail"] %s]
+               [span .time %i:%imin] [span .dim %ix%i] %s
+             ]' \
+       "$path" "$path" "$name" \
+       "$((length / 60))" "$((length % 60))" \
+       "$width" "$height" \
+       "$(printf %s\\n "${tags#tags=}" |tr , ' ' |xargs printf '[span .tag %s]')"
   else
     printf '[div .list .file [a href="%s" [img src="%s?a=thumbnail"] %s]]' \
       "$path" "$path" "$name"
@@ -18,8 +31,8 @@ list_items(){
 
   [ "$mode" = browse -a "$ITEM" ] && printf '..\n'
   if [ "$mode" = browse ]; then
-    [ -d "$_DATA/$ITEM/.index" -a "$_DATA/$ITEM" -nt "$_DATA/$ITEM/.index/meta" ] \
-    && . "$_EXEC/update_meta.sh"
+    [ -d "$_DATA/$ITEM/.index" -a \! "$_DATA/$ITEM" -ot "$_DATA/$ITEM/.index/meta" ] \
+    && dir="$_DATA/$ITEM" . "$_EXEC/update_meta.sh"
     (cd "$_DATA/$ITEM";
      find ./ -type d \! -name .index -mindepth 1 -maxdepth 1 \
        -exec stat -c '%Y       %n' '{}' +
@@ -27,6 +40,11 @@ list_items(){
        -exec stat -c '%Y       %n' '{}' +
     )
   elif [ "$mode" = index ]; then
+    find "$_DATA/$ITEM" -type d -name .index \
+    | while d="$(line)"; do
+      [ ! "${d%/.index}" -ot "$d/meta" ] \
+      && dir="${d%/.index}" . "$_EXEC/update_meta.sh"
+    done
     (cd "$_DATA/$ITEM";
      find ./ -type f \
        -exec stat -c '%Y       %n' '{}' +