36 lines
579 B
Bash
Executable File
36 lines
579 B
Bash
Executable File
#!/bin/sh
|
|
|
|
set -e
|
|
|
|
get_duration() {
|
|
ffprobe -v error -show_entries format=duration -of default=noprint_wrappers=1:nokey=1 "$1" | awk '{print int($1+0.5)}'
|
|
}
|
|
|
|
[ -z "$1" ] && {
|
|
echo "usage: $0 FILENAME [FILENAME ...]"
|
|
echo " or: $0 *.mp4"
|
|
exit 1
|
|
}
|
|
|
|
total=0
|
|
while [ $# -gt 0 ]; do
|
|
if [ -f "$1" ]; then
|
|
dur=$(get_duration "$1")
|
|
total=$(( total+dur ))
|
|
else
|
|
>&2 echo "error: $1: no such file"
|
|
exit 1
|
|
fi
|
|
shift
|
|
done
|
|
|
|
echo "$total seconds"
|
|
|
|
days=$(( total / 86400 ))
|
|
if [ $days -gt 0 ]; then
|
|
echo -n "${days}d "
|
|
fi
|
|
|
|
human="$(date -d@$total -u +%H:%M:%S)"
|
|
echo "$human"
|