MOVのファイル名変換スクリプトをmkvのファイル名変換に流用

#!/bin/bash

if [ ! "${1##*\.}" = "mkv" ] && [ ! "${1##*\.}" = "MKV" ]; then
	echo "movではありません。"
	exit 1
fi

filename=`echo $1 |sed -e 's/\ /_/g'`
filename=`echo $filename |sed -e 's/\://g'`
mv "`pwd`/$1" "`pwd`/${filename}"
#fdate=`ffmpeg -i "$1" 2>&1 |grep '.*creation_time.*' | head -1|sed "s/.*\([0-9]\{4\}\)-\([0-9]\{2\}\)-\([0-9]\{2\}\)[ _]\([0-9]\{2\}\).\([0-9]\{2\}\).\([0-9]\{2\}\)\.*/\1-\2-\3 \4:\5:\6/"`
#fdate=`ffprobe -i $filename -show_streams -print_format json |jq '.streams[].tags.creation_time' |ruby -ne 'require "time"; puts Time.parse($_).getlocal.strftime("%Y/%m/%d/%H%M")'|head -1`
fdate=`echo $1|sed -E 's/(vokoscreenNG-)([0-9]{4})-([0-9]{2})-([0-9]{2})_([0-9]{2})-([0-9]{2})-([0-9]{2}).mkv/\2/\3/\4_\5\6\7/'`

#rename=`date --date "${fdate} 9 hours" "+%Y-%m-%d_%H%S分:記録_.mp4"`
echo "ファイル名に使う文字列を指定して下さい。:"
read name

name=`echo $name|sed -e 's/ //g'`

name=`h-sanitize-text-name-arg.rb $name`

rename="${fdate}_${name}.mkv"

#rename=`ffmpeg -i "$1" 2>&1 |grep '.*creation_time.*' | head -1|sed "s/.*\([0-9]\{4\}\)-\([0-9]\{2\}\)-\([0-9]\{2\}\)[ _]\([0-9]\{2\}\).\([0-9]\{2\}\).\([0-9]\{2\}\)\.*/\1年\2月\3日\4時\5分\6秒の記録_${name}\.mp4/"`

mv "`pwd`/$filename" "`pwd`/${rename}"
echo "${1} ---> $rename"

 #ffmpeg -i $1 |grep '.*creation_time.*' | head -1 > n

 MOVのファイルではffmpegコマンドで撮影日時の取得ができていましたが、mkvでは変換がされず、元のファイル名にある日時のテキストを取得し使いました。

この記事が気に入ったらサポートをしてみませんか?