【问题标题】:Apple automator & applescript : saving pictures from a web page if do not exist locallyApple automator & applescript:如果本地不存在,则从网页保存图片
【发布时间】:2014-01-16 03:23:44
【问题描述】:

我目前正在尝试将任务作为应用程序自动执行,但在“保存 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”,该步骤查看文件是否已经存在,然后如果不下载它们每个循环实例?

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

达米安

【问题讨论】:

  • 我终于找到了一种使用可选 WGET 命令的方法。但是我需要在许多 Mac 计算机上轻松安装此过程,并安装 xcode (2Go),然后是 HomeBrew,然后是 WGET 太长了。一行脚本安装 45 分钟是不行的。任何人都可以通过预装的 applescript cURL 命令帮助我实现这一目标?

标签: macos applescript automator autosave flashair


【解决方案1】:

这是您要查找的代码:

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. 操作:下载 URL
  5. 操作:暂停(可选)
  6. 动作:循环

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

另一种方法是将整个事情写成一个脚本并让它连续运行。

编辑2:

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

【讨论】:

  • 嗨,维克,感谢您的回答。这段代码是单独存在的还是我必须这样放置:1.定义网页网址,2.从此网页获取图片网址,3.您的应用程序,4.下载网址,5.循环?非常感谢。
  • 当然非常感谢 Vic 的帮助,它在整个步骤中都很有意义。我今晚试试。再次感谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多