skriptit/media-skriptit/libexec/probe-media.sh
Juhani Krekelä bd2729fdb7 media-skriptit
2026-08-19 23:37:23 +03:00

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