可能であれば、Linuxファイルマネージャーの1つで選択したオーディオ/ビデオファイルの合計時間を知る方法を知りたいのですが。
私はUbuntu 18.04 LTSを使用しており、そのデフォルトのファイルマネージャーはFiles AKA Nautilus です。
これがNautilusスクリプトです
-nautilusでファイルを選択
-右クリック
-コンテキストメニューで、[スクリプト]>NameOfScriptを選択します
インストール:
存在しない場合はmediainfoプログラムをインストールしますSudo apt install mediainfo
スクリプトを~/.local/share/nautilus/scripts
のファイルに保存します
実行可能にしますchmod +x ~/.local/share/nautilus/scripts/scriptname
nautilus nautilus ~/.local/share/nautilus/scripts
を使用してスクリプトディレクトリに一度アクセスします
#!/bin/bash
# Selected fileslist to Array
OLDIFS=$IFS
IFS=$'\n'
fileArray=($NAUTILUS_SCRIPT_SELECTED_FILE_PATHS)
IFS=$OLDIFS
# Length of array: total num of selected files
NbFiles=${#fileArray[@]}
# The loop
for (( i=0; i < ${NbFiles}; i++ ));
do
# Get duration if file is media (audio or video)
buff=$(file -N -i "${fileArray[$i]}" | grep -E 'audio|video')
if [ ! -z "$buff" ]
then
# mediainfo gives duration in milliseconds, easy to sum up
MediaDuration=$(mediainfo --Output='General;%Duration%' "${fileArray[$i]}")
TotalDuration=$((TotalDuration + MediaDuration))
NbMedia=$((NbMedia + 1))
fi
done
# Format Duration: milliseconds to H:M:S
Seconds=$((TotalDuration / 1000))
FormattedDuration=$(printf '%02dh:%02dm:%02ds\n' $(($Seconds/3600)) $(($Seconds%3600/60)) $(($Seconds%60)))
# Build report
ReportText="${NbFiles} File"
test $NbFiles -gt 1 && ReportText="${ReportText}s"
ReportText="${ReportText} selected\n"
test $NbMedia -gt 0 && ReportText="${ReportText}${NbMedia} media file" || ReportText="${ReportText}No media file"
test $NbMedia -gt 1 && ReportText="${ReportText}s"
test $NbMedia -gt 0 && ReportText="${ReportText}\nTotal duration: ${FormattedDuration}"
zenity --info --no-wrap --text="${ReportText}"