]> git.plutz.net Git - serve0/blob - update_meta.sh
04fc77ebfe166dd49943d27dc2c9127ef7dfdcd2
[serve0] / update_meta.sh
1 #!/bin/sh
2
3 file_pattern='^.*\.(mov|ts|mpg|mpeg|mp4|m4v|avi|mkv|flv|sfv|wmv|ogm|ogv|webm|iso|rmvb)$'
4 meta="${dir}/.index/meta"
5
6 meta_line() {
7   video="$1"
8
9   read l h w <<__EOF
10   $(printf '' \
11     | mplayer -input nodefault-bindings -nosound -vo null -identify -frames 0 "$video" 2>&- \
12     | sort | sed -rn '
13       s:ID_LENGTH=(.*)(\..*)$:\1:p;
14       s:ID_VIDEO_HEIGHT=(.*):\1:p;
15       s:ID_VIDEO_WIDTH=(.*):\1:p;' \
16     | tr '\n' ' '
17   )
18 __EOF
19   printf '%i\t%i\t%i\ttags=\tcomment=\t%s\n' \
20          "$l" "$w" "$h" "${video##*/}"
21 }
22
23
24 if [ \! -f "$meta" ]; then
25   find "$dir" -type f -mindepth 1 -maxdepth 1 \
26   | grep -E "$file_pattern" \
27   | while v="$(line)"; do
28     meta_line "$v"
29   done >"$meta"
30 else
31   find "$dir" -type f -mindepth 1 -maxdepth 1 \
32   | grep -E "$file_pattern" \
33   | while v="$(line)"; do
34     if [ "$v" -nt "$meta" ]; then
35       grep -qF "        ${v}" "$meta" \
36       || meta_line "$v"
37     fi
38   done >>"$meta"
39 fi