这篇文章上次修改于 689 天前,可能其部分内容已经发生变化,如有疑问可询问作者。

在使用 aira2 的 rpc 下载功能时,默认没有下载完成提示,所以需要手动打开 webui 进行查看。

关于 aria2 的使用参考我的教程:https://blog.niekun.net/archives/1199.html

注意到配置文件里有一个:on-download-complete 选项,可以在下载完成后执行脚本,具体解释参考官方网页

可以利用这一点,编写一个脚本来触发系统通知,这样就可以知道文件下载完成了。

on-download-complete

在 aria2 下载完成后,执行 on-download-complete 脚本时会自动传递三个参数:

  • GID GID is an ID of a download which aria2c uses to identify a particular download
  • 下载文件个数
  • 文件路径

示例:

$ cat hook.sh
#!/bin/sh
echo "Called with [$1] [$2] [$3]"
$ aria2c --on-download-complete hook.sh http://example.org/file.iso
Called with [1] [1] [/path/to/file.iso]

osascript

这里使用 AppleScript 来编写简单的系统通知,使用 osascript 可以在 terminal 终端执行 AppleScript 脚本。

语法结构:

osascript [-l language] [-i] [-s flags] [-e statement | programfile] [argument ...]

这里主要使用 -e选项 来执行 AppleScript 脚本。

显示通知

显示一个简单的通知很简单:

osascript -e 'display notification "hello world!"'

引号内的就是纯 AppleScript 脚本,很简单。

显示带标题的通知

osascript -e 'display notification "hello world!" with title "This is the title"'

显示带主副标题的通知

osascript -e 'display notification "hello world!" with title "Greeting" subtitle "More text"'

显示带声音提醒的通知

系统内置的声音音频在:/System/Library/Sounds 目录:

$ ls /System/Library/Sounds
Basso.aiff    Frog.aiff    Hero.aiff    Pop.aiff    Submarine.aiff
Blow.aiff    Funk.aiff    Morse.aiff    Purr.aiff    Tink.aiff
Bottle.aiff    Glass.aiff    Ping.aiff    Sosumi.aif

Pop.aiff 这个声音就是默认的提示音。

osascript -e 'display notification "hello world!" with title "Greeting" subtitle "More text" sound name "Pop.aiff"'

显示需要点击确认的提示框

osascript -e 'display alert "Hello World!" message "longer text can be added in the message field."'

音频提示

除了显示系统通知外,也可以用音频提示,使用 say 命令来完成。

osascript -e 'say "Hello World!"'

提示信息将不显示而是语音播报出来。

aria2 下载完成提示脚本

download-complete.sh

#!/bin/sh
osascript -e 'display notification "download complete" sound name "Pop.aiff"'

参考连接:
https://code-maven.com/display-notification-from-the-mac-command-line