Add immich-upload to screenshot tool

This commit is contained in:
Tobias Reisinger 2024-09-26 01:32:25 +02:00
parent 38d52ea4b3
commit 065953fdc7
Signed by: serguzim
GPG key ID: 13AD60C237A28DFE
2 changed files with 69 additions and 9 deletions

View file

@ -2,10 +2,13 @@
tool="grim"
now=$(date '+%F_%H-%M-%S')
now_iso=$(date -Is)
expire_date=$(date -Is -d "+1hour")
rclone_remote="s3-serguzim-me:public/screenshots"
screenshot_host="https://s3.serguzim.me/public/screenshots"
screenshot_path="/tmp/screenshot.webp"
file="$(date '+%F_%H-%M-%S').webp"
screenshot_path="/tmp/screenshot_$now.webp"
file="$now.webp"
clip_image()
{
@ -19,18 +22,73 @@ clip_image()
upload_image()
{
share_url=$(upload_image_immich)
echo "$share_url"
if [ -n "$share_url" ]
then
notify-send "Screenshot" "Uploaded screenshot"
else
notify-send "Screenshot" "Failed to upload screenshot"
fi
xdg-open "$share_url"
# to have link available in clipboard manager
if [ -n "$WAYLAND_DISPLAY" ]
then
wl-copy "$screenshot_host/$file"
wl-copy -p "$screenshot_host/$file"
wl-copy "$share_url"
wl-copy -p "$share_url"
else
printf '%s' "$screenshot_host/$file" | xclip -selection clipboard
printf '%s' "$screenshot_host/$file" | xclip -selection primary
printf '%s' "$share_url" | xclip -selection clipboard
printf '%s' "$share_url" | xclip -selection primary
fi
}
rclone copyto "$screenshot_path" "$rclone_remote/$file"
notify-send -a "Screenshot" "Uploaded screenshot to s3"
upload_image_rclone()
{
set -e
rclone copyto "$screenshot_path" "$rclone_remote/$file" >/dev/null
echo "$screenshot_host/$file"
}
# Immich url to get api key for service account (skip oauth)
# https://my.immich.app/auth/login?autoLaunch=0
upload_image_immich()
{
set -e
result_upload=$(curl -sSfL "$IMMICH_INSTANCE_URL/api/assets" \
-H 'Content-Type: multipart/form-data' \
-H 'Accept: application/json' \
-H "x-api-key: $IMMICH_API_KEY_SCREENSHOTS" \
-F 'deviceId="screenshots"' \
-F "deviceAssetId=\"screenshots-$screenshot_path\"" \
-F "fileModifiedAt=\"$now_iso\"" \
-F "fileCreatedAt=\"$now_iso\"" \
-F "assetData=@\"$screenshot_path\"")
asset_id=$(echo "$result_upload" | jq -r '.id')
result_share=$(curl -sSfL "$IMMICH_INSTANCE_URL/api/shared-links" \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H "x-api-key: $IMMICH_API_KEY_SCREENSHOTS" \
-d "{
\"allowDownload\": true,
\"allowUpload\": false,
\"assetIds\": [
\"$asset_id\"
],
\"expiresAt\": \"$expire_date\",
\"showMetadata\": true,
\"type\": \"INDIVIDUAL\"
}")
share_key=$(echo "$result_share" | jq -r '.key')
#share_url="$IMMICH_INSTANCE_URL/share/$share_key/photos/$asset_id"
share_url="$IMMICH_INSTANCE_URL/api/assets/$asset_id/original?key=$share_key"
echo "$share_url"
}
call_screenshot_tool() {
@ -64,7 +122,7 @@ main()
{
if [ -n "$1" ] && [ -e "$1" ]
then
convert "$1" "$screenshot_path"
magick "$1" "$screenshot_path"
upload_image
clip_image
else

View file

@ -4,6 +4,8 @@ export DRONE_SERVER="https://ci.serguzim.me"
export HASTE_SERVER="https://haste.snrd.eu"
export IMMICH_INSTANCE_URL="https://gallery.serguzim.me"
export LINKWARDEN_URL="https://bookmarks.serguzim.me"
export OPENFAAS_URL="https://faas.serguzim.me"