Applescript - 下载脚本

时间:2015-07-31 18:32:31

标签: macos download applescript osx-yosemite downloading

我几天前制作了这个下载脚本:

do shell script "curl -L -o ~/Desktop/file.dmg 'https://download.mozilla.org/?product=firefox-27.0.1-SSL&os=osx&lang=en-GB' > ~/Desktop/status 2>&1 &"
set fileSize to 0
set curTransferred to 0
set curProgress to 0
repeat until curProgress = "100"
    try
        set lastLine to paragraph -1 of (do shell script "cat ~/Desktop/status")
        set curProgress to word 1 of lastLine
        set fileSize to word 2 of lastLine
        set curTransferred to word 4 of lastLine
        tell me
            display dialog "Downloading. Please wait...

Status: " & curTransferred & " of " & fileSize & " (" & curProgress & "%)" buttons {"Refresh", "cancel"} giving up after 4
            if the button returned of the result is "cancel" then return
        end tell
    on error
        display dialog "Something went wrong when downloading the file. If you would like to restart the download then press the button 'Retry'" buttons {"Quit", "Retry"} with icon 0
    end try
end repeat

它有效,但我仍然遇到了一些问题(确切地说是3个问题) 问题一:

有没有办法只显示CurTransferred,FileSize和Curprogress,而不是每隔4秒显示一个新窗口来显示/刷新(新)信息?

问题二:

AppleScript中有没有办法制作一种“暂停”按钮(在这个脚本中)?因此,当点击暂停时,下载将停止,并且将使用“继续”或“开始”按钮打开一个新对话框?

第三个问题:

有没有办法将~/Desktop/file.dmg更改为像这样的代码: set downloadlocation to (choose folder)然后在脚本中使用path to (downloadlocation)而不是~/Desktop/file.dmg

如果您知道某个问题(或所有问题)的答案,请随时回答这个问题!

感谢阅读,

Jort

PS:也许对Internet连接的检查会很酷但不是必需的。

1 个答案:

答案 0 :(得分:1)

第一个问题:

没有

问题二:

没有

第三个问题

set downloadLocation to choose folder with prompt "choose download location"
do shell script "curl -L -o " & quoted form of (POSIX path of downloadLocation & "file.dmg") & " 'https://download.mozilla.org/?product=firefox-27.0.1-SSL&os=osx&lang=en-GB' > ~/Desktop/status 2>&1 &"

使用纯AppleScript无法解决第一和第二个问题,因为AS在单个线程中同步工作。由于shell脚本设置为不等待完成,除了从状态文件中读取输出之外,无法控制进度。