0

我目前正在尝试将任务作为应用程序自动化,但在“保存 URL”步骤时遇到困难,需要自定义 AppleScript 来替换它。

给你我项目的背景:我买了一张东芝 FlashAir SD WIFI 卡,用于无线网络照片拍摄。我想用 SD WIFI 卡(安装在我的相机中)从我的相机实时下载所有文件到我的 Mac 电脑。Toshiba FlashAir 运行您连接的自己的网络,您可以通过网络浏览器浏览 SD 内容(没有 ftp,没有 webdav...,所以只有 http 连接)。我准备了一个使用 FlashAir API 上传到 SD 的 html/Jquery 页面,这样当你点击页面http://flashair时,你会得到一个页面,其中所有图像链接每秒都会刷新。它几乎是实时的,并在浏览器中显示新拍摄的图像。

我想将这些图片下载到我的计算机上,以便 iPhoto 或任何其他照片应用程序可以像在联机模式下一样“观看”目录,并在需要时即时处理。

在我的电脑端,使用AUTOMATOR

  1. 我“获取特定 URL”> http : // flashair (到达 SD 卡微型服务器)。
  2. 然后从此特定 URL 和相关 URL 中“获取所有图像 URL”
  3. 然后下载我电脑上没有的图片(这是我缺乏applescript知识的地方)
  4. 然后循环 240 分钟......(观察远程页面并一次又一次地下载新文件

所以一切都很完美,但是当我启动自动化工作流程时,相同的图片会以文件名后缀-01-02,...一次又一次地保存。这意味着我有与循环实例相同数量的重复图片。

如果我只想将新的或修改过的文件从远程下载到本地,自动化进程“下载 URL”不允许我精确。

有没有人可以帮助我完成这个“applescript”步骤,以便我可以用一个特定的 Applescript 步骤替换自动程序“下载 URL”,该步骤查看文件是否已经存在,然后如果不下载它们每个循环实例?

非常感谢您的宝贵回答,我坚持这一点,一切都完美无瑕,但是重复文件的问题。

达米安

4

1 回答 1

0

这是您要查找的代码:

on run {input, parameters}
    set dLocation to POSIX path of (path to downloads folder) & "test/"

    set fileList to {}
    set AppleScript's text item delimiters to {"/"}
    repeat with i from 1 to (count of input)
        # With the delimeter to '/' last item is the filename!
        set urlStr to (get item i of input) as text
        set urlFile to last text item of urlStr

        set savedFile to (dLocation & urlFile) as POSIX file

        log "Saved file is: " & savedFile

        try
            savedFile as alias
            log "File exists: " & savedFile
        on error mMsg
            set end of fileList to urlStr
            log "Adding URL: " & urlStr
        end try
        #       delay 5
    end repeat
    return fileList
end run

以上所做的就是在链接末尾获取文件名。它检查文件是否存在,如果不存在,则将链接添加到要下载的链接列表中。然后它传递链接列表。

在 Applescript 操作之后添加一个Download URLs操作,您应该就完成了。

编辑:

所以工作流程将是这样的:

  1. 定义站点 URL
  2. 行动:从网页获取 URL 链接
  3. 行动:运行applescript(上面的代码)
  4. 行动:下载网址
  5. 动作:暂停(可选)
  6. 动作:循环

请注意,循环操作将您限制为 1000 分钟。因此,您有两个选择,1) 添加更多循环操作,或 2) 从具有无限循环的脚本启动工作流...

另一种方法是将整个内容编写为脚本并使其连续运行。

编辑2:

糟糕,只是重新阅读您的问题。它持续了 240 分钟,因此单个循环功能可以正常工作。

于 2014-07-08T19:17:47.613 回答