プルリクに動画を貼るときいちいちgifに変換して貼っていたが,いい加減めんどくさくなったのでなんとかすることにした.
やったこと
Automatorを使えばいいらしい
1. 新しいQuick Actionを作成する
Automatorの新規作成画面でQuick Actionを選択した
2. どのアプリで何を受け取るか設定する
今回はFinderから操作したいのでFinderで選択中のファイル/フォルダを受け取るように設定した
3. ワークフローを追加する
ffmpegで変換したいのでRun Shell Scriptを使った
4. スクリプトを書く
入力は引数でもらうようにした
ハマった箇所は以下の通り
- Security &Privacy > Privacy > Full Disk AccessにFinderを追加した
- Finderは
/System/Library/CoreServices
にある
- Finderは
- このスクリプトを実行するときは.zshrcは読まれないのでPATHを設定した
- エラーになったときはエラーメッセージを表示したいが,ffmpegさんは進捗状況もstderrに吐くので
-v error
でログレベルを指定した
export PATH=/opt/homebrew/bin:$PATH error_log_file="/tmp/ffmpeg_error_$(date +$s).log" out=$(ffmpeg -y -v error -i $1 -r 10 -vf scale=320:-1 $1.gif 2> $error_log_file) if [[ $? != 0 ]]; then cat $error_log_file && rm $error_log_file else echo $1 is successfully converted to gif fi
5. 結果を通知する
あとは結果を通知するフローを追加して終了
感想
実はこれをするまで例のメニューをコンテキストメニューと呼ぶことを知らなかった.
これで楽になったかというと手数的には変わってない気がする.まあ業務で使ったらわかるでしょ.