I've been writing a workflow for Alfred 2 which takes a selected jpeg on the users desktop - inserts it to google chrome then use cliclick to right click and reverse search the image via google search.
I cant seem to avoid having the user to put the cliclick in there home folder any attempt to reference the file elsewhere seems to return a systems events error in applescript.
Any help would be appreciated! (I'm extremely new to applescript and alfred apologises if this is a very simple problem)
--get location of selected folder
tell application "Finder"
set sel to the selection as text
set the clipboard to POSIX path of sel
end tell
activate application "Google Chrome"
--open selected jpeg in google chrome
tell application "System Events" to tell process "Google Chrome"
delay 1
keystroke "t" using command down
keystroke "v" using command down
key code 36
delay 1
-- calculate the top left corner of the image
set myBounds to bounds of window 1 of application "Google Chrome"
set x to item 1 of myBounds
set y to item 2 of myBounds
--locate cliclick in users home
set uHome to get path to home folder
set locHome to POSIX path of uHome
--run the right click -> search by image mouse event
do shell script "" & locHome & "/cliclick m:" & x & "," & y & "w:100 kd:ctrl c:+2,+74 ku:ctrl w:1000 c:+66,+90 w:700"
end tell
--close "file://" tab
tell application "Google Chrome"
set windowList to every tab of every window whose URL starts with "file://"
repeat with tabList in windowList
set tabList to tabList as any
repeat with tabItr in tabList
set tabItr to tabItr as any
delete tabItr
end repeat
end repeat
end tell
I tried using
set UnixPath to POSIX path of ((path to me as text) & "::" & "cliclick")
in replacement of
set uHome to get path to home folder
set locHome to POSIXpath of uHome
but replacing it into the shell script with
do shell script "" & UnixHome & " m:" & x & "," & y & "w:100 kd:ctrl c:+2,+74 ku:ctrl w:1000 c:+66,+90 w:700"
stops the workflow with the System Event error
You could put cliclick in the resource folder of your app and call it like this:
set pathtocc to quoted form of (POSIX path of (path to resource "cliclick"))
do shell script pathtocc & " -h"
Or let curl do the job:
set imagefile to POSIX path of ¬
(choose file of type "public.image" default location path to desktop)
do shell script "
open -a 'Google Chrome' $(curl -F 'encoded_image=@" & imagefile & ¬
"' https://www.google.com/searchbyimage/upload | grep 'tbs=sbi' | sed 's/^.*http/http/;s/\".*$//')"
curl -F uploads the file to reverse search. The output is a redirect which includes the URL to the google result page.