Add immich-upload to screenshot tool
This commit is contained in:
		
							parent
							
								
									38d52ea4b3
								
							
						
					
					
						commit
						065953fdc7
					
				
					 2 changed files with 69 additions and 9 deletions
				
			
		|  | @ -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 | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue