28 lines
701 B
Shell
Executable file
28 lines
701 B
Shell
Executable file
#!/bin/sh
|
|
set -e
|
|
|
|
for file
|
|
do
|
|
missing=false
|
|
for attr in duration-secs subtitle-languages
|
|
do
|
|
getextattr user "$attr" "$file" > /dev/null 2>&1 || missing=true
|
|
done
|
|
|
|
if "$missing"
|
|
then
|
|
printf 'probing: %s\n' "$file" >&2
|
|
data="$(
|
|
ffprobe -loglevel warning \
|
|
-select_streams s \
|
|
-show_entries stream_tags:format=duration \
|
|
-output_format json \
|
|
-- "$file" |
|
|
jq -r '.format.duration, .streams.[].tags.language // empty'
|
|
)"
|
|
duration="$(printf '%s' "$data" | head -n 1)"
|
|
subs="$(printf '%s' "$data" | tail -n +2 | sort | tr '\n' ' ' | sed -E 's/ +$//')"
|
|
setextattr user duration-secs "$duration" "$file"
|
|
setextattr user subtitle-languages "$subs" "$file"
|
|
fi
|
|
done
|