迅雷有时候会出现刚开始下载的时候速度很快,但是过几十秒,速度就只有几十 kb 的情况。正常下载太慢,循环暂停启动方法倒是可以,但是我总不能什么都不做就光坐电脑前不停点开始任务,暂停任务吧?况且我一般都是睡觉的时候挂着迅雷。

想起以前在用 windows 的时候接触过按键精灵这类模拟键鼠操作的软件,我觉得 Mac OS 平台应该也有类似的软件,但是一圈搜下来并没有找到,倒是找到了官方的脚本语言 AppleScript。它倒是可以模拟键鼠操作,只是得自己折腾。

那我能怕折腾么?于是直接开干,边在脚本编辑器测试边 Google,没多久折腾出来了个能将就用的。后来我又

优化了一下,并且集成到了 Alfred 中。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
// 如果直接用脚本编辑器执行,不需要第一行与最后行,这是要在 Alfred 中执行才需要的。
on alfred_script(q)
tell application "System Events"
tell application "Thunder"
--激活主窗口
activate
end tell
--暂停一秒
delay 1
--全选任务,因只有选中才能暂停开始任务
key code 0 using {command down}
tell process "Thunder"
tell window "迅雷"
entire contents
--q 是传进来的参数,表示循环次数
--本代码中一次循环用时 20 + 2 秒,可根据实际情况调整
--q 的次数根据每次循环的时长来计算
repeat q times
--等待20秒后暂停任务
delay 20
click button 7
--暂停2秒后重新开始任务
delay 2
click button 6
end repeat
end tell
end tell
end tell
end alfred_script

在集成到 Alfred 的过程中踩了个坑,就是传参问题,我之前一直用 {query} 来获取传过来的参数,但是一直不成功,查了后原来这要直接用 q 就行了。其实在脚本第一行已经说明,但我一直以为是固定格式。

之后我发现使用 AppleScript 还有个好处就是脚本执行的时候可以不保持窗口最前:

由于 AppleScript 的资料太少了,官方文档也很简单,没有实现我想要的效果。其实我本来的逻辑是每次循环前先判断下载列表中有没有任务,有的话就执行,没有就退出循环。但是目前还没找到获取的方法,所以只能先将就一下。