]> git.plutz.net Git - serve0/blobdiff - update_meta.sh
thumbnail and meta generation
[serve0] / update_meta.sh
diff --git a/update_meta.sh b/update_meta.sh
new file mode 100644 (file)
index 0000000..04fc77e
--- /dev/null
@@ -0,0 +1,39 @@
+#!/bin/sh
+
+file_pattern='^.*\.(mov|ts|mpg|mpeg|mp4|m4v|avi|mkv|flv|sfv|wmv|ogm|ogv|webm|iso|rmvb)$'
+meta="${dir}/.index/meta"
+
+meta_line() {
+  video="$1"
+
+  read l h w <<__EOF
+  $(printf '' \
+    | mplayer -input nodefault-bindings -nosound -vo null -identify -frames 0 "$video" 2>&- \
+    | sort | sed -rn '
+      s:ID_LENGTH=(.*)(\..*)$:\1:p;
+      s:ID_VIDEO_HEIGHT=(.*):\1:p;
+      s:ID_VIDEO_WIDTH=(.*):\1:p;' \
+    | tr '\n' ' '
+  )
+__EOF
+  printf '%i\t%i\t%i\ttags=\tcomment=\t%s\n' \
+         "$l" "$w" "$h" "${video##*/}"
+}
+
+
+if [ \! -f "$meta" ]; then
+  find "$dir" -type f -mindepth 1 -maxdepth 1 \
+  | grep -E "$file_pattern" \
+  | while v="$(line)"; do
+    meta_line "$v"
+  done >"$meta"
+else
+  find "$dir" -type f -mindepth 1 -maxdepth 1 \
+  | grep -E "$file_pattern" \
+  | while v="$(line)"; do
+    if [ "$v" -nt "$meta" ]; then
+      grep -qF "       ${v}" "$meta" \
+      || meta_line "$v"
+    fi
+  done >>"$meta"
+fi