Linux で Cloudflare R2 などを使って Gyazo っぽい仕組みを作った
読了まで:約2分
私は
これ今の
使い方だと Gyazo を 使う 意味って なくね……?
と
今回再現した Gyazo っぽい仕組みとは?
大まかな
- いく
つかの 方法で スクリーンショットなどを 取る - それを
独自ドメインを 割当てた Cloudflare R2 に upload する - その
後 upload した 画像ファイルを ブラウザで 開く
どうやって再現したの?
具体的には
な
- coreutils + xdg-utils + bash
s5cmd
(Cloudflare R2 へのアップロードに 利用) op
(1passwod のcli) maim
+xdotool
(screenshot などを 撮る ために 利用)
と
とは
#!/usr/bin/env bash
set -euo pipefail
exec 2>&1 >$HOME/.cache/r2yazo.log
export S3_ENDPOINT_URL="op://Application/R2Yazo/S3_ENDPOINT_URL"
export AWS_ACCESS_KEY_ID="op://Application/R2Yazo/AWS_ACCESS_KEY_ID"
export AWS_SECRET_ACCESS_KEY="op://Application/R2Yazo/AWS_SECRET_ACCESS_KEY"
export R2YAZO_URL="https://zo.kalaclista.com"
export R2YAZO_DIR="${HOME}/Pictures/R2Yazo"
filename() {
echo $(date +%Y/%m/%d/%H-%M-%S).webp
return 0
}
push-to-r2() {
op run -- bash -c 'env s5cmd --endpoint-url $S3_ENDPOINT_URL sync --delete ${R2YAZO_DIR}/* s3://kalaclista-r2yazo/'
}
crop() {
maim -u -s -f webp "${1}"
}
capture() {
local wid="$(xdotool selectwindow)"
maim -u -f webp -i $wid "${1}"
}
screenshot() {
maim -u -f webp "${1}"
}
main() {
local action=$1 fn="$(filename)"
local fp="${R2YAZO_DIR}/${fn}"
mkdir -p "$(dirname "${fp}")"
case $action in
capture) capture "${fp}" ;;
crop) crop "${fp}" ;;
screenshot) screenshot "${fp}" ;;
push) push-to-r2 ; exit 0 ;;
*) exit 1 ;;
esac
push-to-r2 && xdg-open "${R2YAZO_URL}/${fn}"
}
main "${@:-}"
作ってみた感想
なんとも
ただ
また
その
とりあえず
スクリーンショートを 取って サクっと アップロードする
と
ちなみに
まぁ Gyazo が
以上
……と
とは