遥控器,原本是一个简单、趁手的工具。但是用上了电脑和手机之后,遥控器这种基于红外线的古旧装置便慢慢淡出了我们的视线。
试试用 Automator 找回来。
原理
本文提到的几个动作作用各不相同,但通用原理一样,核心都是 Automator 的文件夹操作,同时把 iOS 上的 Shortcuts 作为“扳机”:
- iOS 端发送触发文件。
- macOS 端监控指定的文件夹。
- 一旦有新文件,就触发 macOS 上的预设动作。
就这么简洁,文件起到了扳机的关键作用。为了达到“遥控”效果,我将需要监控的文件夹放在 iCloud 中,这样通过 iOS 设备也可以创建触发文件。
当然,工具不是唯一的,你喜欢用 Dropbox 也没问题——Dropbox 用户还可以拿 Launch Center Pro 当遥控器。你也可以选择 Keyboard Maestro 或者 Hazel 来代替文件夹操作,但不要忘了 Automator 是免费的。
搞明白基本原理之后,我们就从简单到进阶来看几个例子。
入门玩法:一键休眠
如果你接触 macOS 自动化比较早,可能听说过用邮件让 Mac 一键休眠的用法。但邮件客户端需要一直后台运行才能触发各种动作,何况人家又不是专门干自动化的营生,所以这类邮件偏门玩法一直都没有火起来。
时过境迁,现在的 iCloud 无缝集成在 macOS 中,足以担当更自然的触发机制。第一个文件夹操作就从“一键休眠 Mac”开始。要达到远程控制的目的,需要分 iOS 端和 macOS 端两部分进行配置。
- iOS 端:相当于遥控器,发送触发文件。
- macOS 端:相当于接收器,接收到触发文件后就会执行动作。
iOS 端设置
在 iOS 端创建文件,压根用不着打开 Files,我们可以直接在 Shortcuts App 里进行。用到的两个操作是
- 文本:用于设置触发文件的标题和内容1
- 存储文件:把文件发送到需监控的文件夹中。
文本框中填入“当日日期”,这样可以把运行 Shortcuts 那一刻的时间设为文件名,即使文件夹里有上次遗留的文本文件,Shortcuts 也能创建一个新的文件、照常工作。
考虑到以后可能还要创建其他的文件夹操作,为避免相互影响,可以为每个远程控制的动作设置专用文件夹,比如上图中的存储目的路径就是 Shortcuts/一键休眠
2。
以上,用于触发的 Shortcuts 就做好了,基础版的遥控器只有这两步。现在换到接收器——macOS 部分的设置。
macOS 端设置
我们先在 iCloud 创建需要监控的文件夹。由于文件夹操作只能监测“有,或没有新文件”,但是不能再进行进一步的判断,所以我们需要为每个遥控动作设置一个文件夹,防止互相乱触发。需要监控的文件夹都收纳在 Shortcuts 路径下,和 iOS 端的配置保持一致。
紧接着就是文件夹操作的设置。在 Automator 里创建一个监控“一键休眠”文件夹的动作。这里有个小技巧,你可以把 iCloud 里的文件夹直接拖进 Automator,比手动点选要快。
随后就来添加 Automator 模块。先得加上“查找访达项目”和“将访达项目移到废纸篓”俩模块,把 Shortcuts/一键休眠
文件夹下的文本文件清理一下。这事儿得在休眠前,不然 Mac 睡过去就没法清理了——从中可见,工作流的顺序直接决定了动作运行的效果。说回我们的主要目的:休眠。接上一个 Shell 模块,填入命令 pmset sleepnow
就搞定。
换回 iOS 设备,戳一下一键休眠的 Shortcuts 看看效果:
实验成功。
知识点:如何使用别人提供的文件夹操作?
从网上下载的文件夹操作,解压并安装会提示你选取一个需要监控的文件夹。
安装后可以再找到目标文件夹,右键查看“Folder Action Setup…”,确认一下动作有没有安装成功,或者有没有重复和冲突。如图有两个版本的远程下载动作,只需勾选一个,两个都启用的话就要打架了。
注:以往讲自动化操作时,我都会在文章开头给出动作下载,以便大家装好后边玩边看文章。但是这篇涉及的具体配置较多,并非下载完动作就能马上用,贸然安上容易遇到各种小问题。所以这回直到把入门动作讲完了,我才提供动作下载,还请各位读者担待。进阶玩法:远程下载
最后,我们来看一个比较秀的玩法:远程下载。
场景很好想象:在茶水间和同事聊天,忽然发现自己漏追了整整两季《飞出个未来》,于是马上掏出手机、按下远程下载的按钮,家中的电脑立刻会意,开始下载视频;等你回家冲完澡、陷进沙发里,躺平了就能开始补番。
**远程下载,难点在于如何远程控制电脑。**一般来说无非软硬件两套方案,傻瓜一点的有各种视频会员、智能路由器,高阶玩家则可以选自搭 Aria2——等等,难道为了看个电影,还必须先掌握端口设置、内网穿透这些复杂的操作,甚至去租服务器、买路由器?
实际上,文件夹操作就是更简单实惠的方案:
- 不需要任何网络部署知识
- 不需要任何额外软硬件开销
下面介绍难易两种方法,当然难点那个学会后用起来更爽,诸位丰俭由人。
下载的原理
下载动作的高级之处就在于,我们不仅是靠文件来触发动作,还要把下载链接嵌入文本文件,直接远程传递给电脑。先不管后续怎么下载,两个下载动作的大致工作流程都是相同的:
- 手机发送带链接的触发文件到 iCloud
- 文件夹操作检测文件夹,有新文件就触发
- Automator 提取新文本文件中的链接
- Automator 删除文本文件
- Automator 执行下载动作
至于如何获得链接,不要问我,我相信你拿这些动作是为了下载手机上下不下来的大型软件、长篇文档。
iOS 端设置
还是先从 iOS 端开始。这回用的也是 Shortcuts,但需要接收 URL 作为输入,操作步骤也稍有不同:
- 获取文件、删除文件:删除
Shortcuts/远程下载
文件夹及其中的文件,等于事先进行一遍清空工作,避免文件夹里产生多个文件,发生冲突。 - 文本:将 Shortcuts 输入(即想下载的链接)作为内容。
- 存储文件:将包含下载链接的触发文件放到待监控文件夹。
做好后的“遥控器”通用于下面难易两种方案。
macOS 端版本一:使用现成模块
第一个方案完全使用 Automator 自带模块,也不需要太多自定义,只是把一串动作连起来就行。比较关键的,是如何获取 Shortcuts 传过来的链接?稍微理一下思路,会发现只需获取文本文件的内容就好了。另外,这回由于要用到文件中的链接,所以还不能贸然删除文件,要把链接暂存到变量里面。这么一捋,文件夹操作的流程就有了:
- 过滤访达项目:过滤出文件夹中的 txt 文件。其实 Shortcuts 已经清理过一遍文件夹,再用 Automator 过滤是上一道双保险。
- 设定变量的值:将过滤出来的文化设为“文件”变量,便于随后灵活取用。
- 打开访达项目:用脚文本编辑器3打开“文件”。
- 暂停:停顿 2 秒,等文本编辑器完全打开。在配置好的电脑上也许可以不用花这几秒时间。
- 获得文本编辑文稿的内容:获取文本文件“文件”中的下载链接。
- 设定变量的值:将下载链接设为变量“链接”,留待稍后取用。
- 退出应用程序:退出脚本编辑器。
- 获得变量的值:获取“文件”。
- 将访达项目移到废纸篓:将“文件”删除。
- 获得变量的值:获取“链接”。
- 下载 URL:下载刚刚获取的链接。
为了在一场串的工作流中随时调用文件和链接,整个文件夹操作用了两次变量,但跟着上面的步骤看下来,总体比较易懂的。细心的读者可能会问,能不能先下载再删除文本文件,这样不是就能减少变量的使用了吗?如果这么做,一旦下面的模块执行识别,后续的清理清理模块也就不能执行,等你回家时就留下一个烂摊子等你收拾了。所以,下载这一步充满未知性的一步还是要留到最后再进行。
这个动作使用的是 HTTP 直接下载(和你用 Safari 浏览器下载是同一个道理),遇上大文件4速度慢、容易崩,更适合下下小东西。
下一节会再介绍一个更靠谱的动作。
macOS 端版本二:使用脚本
这次我们使用 AppleScript 脚本来下载,以便调用 Aria2 这一下载利器。读到这里,如果原先就有条件配置 Aria2 远程下载的读者可以不用再照着本文折腾了。
你首先要装上 Aria2,命令可以用 brew install aria2
(不认识 brew
命令?你可需要稍稍学一点 HomeBrew 的知识,以后用它来管理软件会非常惬意)。本文使用的是 Aria2 的命令行模式,可以跳过具体的配置文件。
我们沿用上一小节的动作,只把最后一步改成**“运行 AppleScript”**,替换原来的 HTTP 下载方式。其中的脚本如下:
on run {input, parameters}
tell application "Terminal"
activate
do script "aria2c " & input
end tell
end run
懂 AppleScript 的人,大可把 AppleScript 模块前的步骤删个精光,完全用脚本来实现下载和文件清理。但这样对于多数读者来说不怎么友好,何况这篇文章的重点也不在于介绍 AppleScript 语法,所以我们只在最必要的地方用一下脚本。
另外,高手们可能要纳闷了,Automator 不是自带 Shell 模块吗,何必麻烦 AppleScript 来调用 Shell?原因在于内置的 Shell 模块是在后台默默执行的,看不到进度、也控制不了它,一般人回家发现出错了,咋修都不知道。
所以,要用 AppleScript 打开终端,直接在里面运行 Aria2 的下载命令。