ぜのぜ

しりとりしようぜのぜのぜのぜ

コンテキストメニューに動画をgifに変換するアクションを追加する

プルリクに動画を貼るときいちいちgifに変換して貼っていたが,いい加減めんどくさくなったのでなんとかすることにした.

やったこと

Automatorを使えばいいらしい

1. 新しいQuick Actionを作成する

Automatorの新規作成画面でQuick Actionを選択した

選択画面

2. どのアプリで何を受け取るか設定する

今回はFinderから操作したいのでFinderで選択中のファイル/フォルダを受け取るように設定した

設定

3. ワークフローを追加する

ffmpegで変換したいのでRun Shell Scriptを使った

shellワークフローの追加

4. スクリプトを書く

入力は引数でもらうようにした

ハマった箇所は以下の通り

  • Security &Privacy > Privacy > Full Disk AccessにFinderを追加した
    • Finderは/System/Library/CoreServicesにある
  • このスクリプトを実行するときは.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. 結果を通知する

あとは結果を通知するフローを追加して終了 結果を通知するフローを追加

感想

実はこれをするまで例のメニューをコンテキストメニューと呼ぶことを知らなかった.

これで楽になったかというと手数的には変わってない気がする.まあ業務で使ったらわかるでしょ.