如果你遇到过以下若干情形,那么请继续阅读
首先你是Mac用户
有一些非常耗时但是又不能随便走开的等待操作,例如大量的拷贝或备份
白天有别的任务,只想晚上挂机走人,可是又不放心
先偷摸下楼吃个夜宵,但是如果任务完成就得赶紧继续工作
拷贝/备份因为奇怪的原因容易中断/崩掉
如果戳中了你的痒点,那么你可以和我一起去做出以下尝试
用一个工具帮你关注一行状态信息,并定时把内容发到你的手机上

听上去似乎还不错?如果你有兴趣,那么就可以继续阅读下文
首先你需要准备
大约半小时的第一次准备时间,取决于你的网速
之后熟练的话应该只需要3分钟
基础/简单的 终端 使用能力
一个邮箱
一个正常的网络环境
一杯茶
接下来要做的Sao操作思路如下
识别屏幕一块区域内的一行文本;
将文本和其他信息定时发送至一个网络服务商;
推送到你的手机上;
摸出手机阅读你想看到的内容
执行步骤
> 安装准备
首先我们需要一个文本识别(OCR)工具:Tesseract。要获得它,你需要 Homebrew 这个超好用的工具;获得 Homebrew 请将以下命令粘贴至 终端中,按回车执行安装
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
复制代码太麻烦?访问官网 brew.sh 首页就有这行命令,复制到终端执行即可

安装完毕后,输入以下命令安装
brew install tesseract
等待安装期间,我们先把邮箱绑定到系统自带的邮件app吧

随后我们需要一个在国外炒鸡NB的网络服务,ifttt.com,的账号。免费注册即可。为了将消息推送到手机上,请掏出你的手机,在手机上安装ifttt的app,iOS与安卓都有。
ifttt是啥?
全称为 if this then that
旨在帮助人们利用各网站的开放API,将Facebook、Twitter等各个网站
或应用衔接,完成任务,使“每个人都可以成为整个互联网不用编程的程序员”
不过是在国外炒鸡NB,国内由于许多互联网企业并没有对其开放接口
因此ifttt暂时还是处于墙外开花的阶段
这里我们借助ifttt最基本的
if 收到带特定tag的邮件 这部分叫做 trigger
then 推送消息提醒至移动端 这部分叫做 action
这一自定义功能,官方称其为 applet,来实现我们推送消息的目的,当然稍后会讲解具体操作方式
> 简单地配置
各种安装完成后,我们来开始准备一套 workflow 吧
macOS为我们提供了一个超级强大的自动化工具,Automator。通过它可以将一系列动作串联起来,实现自动化执行的目的。

首先新建一个 工作流程

界面左侧为需要添加的动作,拖放到右侧即可将各种动作连起来。

将以下动作按顺序串起来
运行Shell脚本
设定变量值
新建邮件信息
发送待发邮件
暂停
循环
在 运行Shell脚本 中,粘贴以下命令
screencapture -R 42,640,212,30 ~/Desktop/capture.png
cd /usr/local/Cellar/tesseract/4.0.0_1/bin/
./tesseract ~/Desktop/capture.png ~/Desktop/ocr_output
cat ~/Desktop/ocr_output.txt
screencapture 为系统自带的命令行版截屏工具,-R 选项为指定截图区域,其中,坐标原点在屏幕左上角,具体写法如下图所示

随后将图片保存至桌面
~/Desktop/capture.png
cd 进入tesseract目录,如果版本和我不一致,可以用
brew info tesseract
查看当前详细路径
tesseract 默认可以识别英文,中文需要安装额外的语言包,如果你愿意继续倒腾可以自行了解更复杂的用法,建议大家可以先用英文的软件界面来作尝试,例如我就用来识别达芬奇的界面
按照最基本的用法,输入一张图片,输出一个txt到桌面,这里我们不需要写“.txt”
tesseract input.png output
最后cat获取txt文本内容,传递到下一步
至于为什么分四行,主要为了每一步都可以有文件生成,可以不断尝试
设定变量值
直接点击新建变量,并取一个名字,随后我们可以在窗口下方看到已经有一个变量可用

随后新建邮件信息

收件人需要为 ifttt 指定的邮件输入邮箱,这里我们写的主题就是接下来要推送到手机上的内容
#号后为一个tag,不同的tag在ifttt里可以激活不同的功能,例如这里我先写一个 #MediaManagement 我希望将这个功能用在达芬奇的媒体管理上
随后可以从左侧的变量栏,拖放一些你觉得有用的系统变量来帮助你更好地丰富推送内容
当然别忘了将上一步生成的自定义变量放上去

邮件准备好了,最后就是一组必要动作

暂停决定了你每次发送的间隔,循环就更不用说啦,次数大家看情况就行
> 配置ifttt
差点忘了最关键的 ifttt 的配置方式,不然提取到了信息给谁呢
官网注册登录,右上角头像选择 create ,随后点击This前面巨大的加号

我们可以看到 ifttt 支持非常多的服务,搜索筛选 “email”,并选取

点击进入 trigger 的选择区域,我们最好选择带 tag 的 trigger,当然这里其实已经写得很清楚用法了

输入我们刚刚想好的 MediaManagement 作为 tag,完成 trigger 的设置
重复类似的操作
再次点击That前的加号,选择 Notifications 作为 action

选择左边的简单的推送提醒方式即可

详细设置中,已经识别到了 trigger 为 email ,默认就是将邮件标题作为推送消息。这里你还可以写点别的作为提示用语
最后点击 finish 即可

初次使用 ifttt 的 email 服务时
会要求你绑定你的邮箱
不然 ifttt 也不知道这个邮件对应的是谁哦
当然我已经设置好很久了就没法帮大家截图啦
> 调试
最后我们就算基本搭建好了这套 workflow
点击 automator 右上角的 运行 就能跑起来啦

顺利的话将按以下步骤执行
screencapture 在 -R 指定的区域截取我们想要监视的文本区域
tesseract 将该图片中的文本识别出并保存到txt
cat 获取txt内容并传递给下一步
设定变量的值 获得txt中的文本作为你的自定义变量
发送带tag邮件至 trigger@applet.ifttt.com
ifttt收到你绑定的邮箱后,识别到特定的tag,触发推送服务
手机端收到推送消息
值得注意的是,我们监视的区域应尽量先选择一个较小的范围,最好就一句话,例如一些进度条的状态之类。因为对于tesseract而言还需要一些进一步的优化,针对不同的字体、背景、文本颜色、字号等等,这些大家有条件的可以深入了解一番;但是默认状态下识别一行字是没什么问题的
新建邮件信息 记得选择 ifttt 绑定好的发件人,这需要事先在系统邮件中登录哦。
在 automator 中保存了工作流程,下次再执行打开编辑即可
以上方式适用于任何屏幕上看得见的文字内容,可谓非常暴力惹
