努力在applescript工作流程中引用cliclick(存储在与脚本相同的位置)

时间:2015-04-02 15:40:35

标签: applescript finder alfred

我一直在为Alfred 2编写一个工作流程,在用户桌面上选择jpeg - 将其插入谷歌浏览器,然后使用cliclick右键单击并通过谷歌搜索反向搜索图像。

我似乎无法避免让用户将cliclick放在主文件夹中,任何尝试在其他地方引用该文件似乎都会在applescript中返回系统事件错误。

任何帮助将不胜感激! (我对applecript非常陌生,如果这是一个非常简单的问题,阿尔弗雷德道歉)

--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

我尝试使用

set UnixPath to POSIX path of ((path to me as text) & "::" & "cliclick")

取代

set uHome to get path to home folder
set locHome to POSIXpath of uHome

但是用

将其替换为shell脚本
do shell script "" & UnixHome & " m:" & x & "," & y & "w:100 kd:ctrl c:+2,+74 ku:ctrl w:1000 c:+66,+90 w:700"

使用系统事件错误

停止工作流程

The Script as it stands (cl.ly link)

1 个答案:

答案 0 :(得分:0)

您可以将cliclick放在应用的资源文件夹中,并按以下方式调用:

set pathtocc to quoted form of (POSIX path of (path to resource "cliclick"))
do shell script pathtocc & " -h"

或者让curl完成这项工作:

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将文件上传到反向搜索。输出是重定向,其中包含google结果页面的URL。