画像をアップロードする手軽なスクリプト

投稿日: 2022-07-31 日
Program

オブジェクトストレージに画像をアップロードする便利スクリプトを書いたので公開します。 アップロードするときに画像の向きの修正とメタデータの削除をしています。

mktemp とか使って一時ファイルを作成していない雑な実装なので流用する場合には注意してください。 なお、ここでスクリプトを公開するときの著作者の名前は TojoQK とすることにしました。

#!/usr/bin/env bash
# upload-diary-image
#
# Copyright (C) 2022 TojoQK <tojoqk@tojo.tokyo>
#
# This software is released under the MIT License.
# http://opensource.org/licenses/mit-license.php
set -euo pipefail

s3prefix="<s3のURL>"

filename=
while getopts f: opt
do
  case "${opt}" in
    f) filename=${OPTARG};;
  esac
done

shift $((OPTIND - 1))
name="$1.jpg"

# ファイル名が指定されていない場合はクリップボードからアップロードする
if [ -z "$filename" ]
then
  targets="$(xclip -selection clipboard -t TARGETS -o)"
  if [ -n "$(grep 'image/jpeg' <<< "$targets")" ]
  then
    filename=/tmp/clipboard.jpg
    xclip -selection clipboard -t image/jpeg -o > "$filename"
  else
    echo クリップボードに画像が保存されていません 1>&2
    exit 1
  fi
fi

prefix="$(date '+%Y-%m-%d/%H%M-')"
s3url="s3://$s3prefix/$prefix$name"

convert -auto-orient -strip "$filename" "/tmp/uploadimage.jpg"

echo "確認してください"
display "/tmp/uploadimage.jpg"

echo -n "公開されるけどアップロードしていい?(yes/no): "
read line
echo "[$line]"

if [ "$line" != "yes" ]
then
    echo "アップロードを中断しました"
    exit 0;
fi

aws s3 cp --acl public-read --endpoint-url https://ewr1.vultrobjects.com "/tmp/uploadimage.jpg" "$s3url"

日記の一覧に戻る