用 Automator 制作一个简单免费的图床上传工具

对习惯使用 Markdown 进行写作的人来说,图床几乎是必不可少的工具,而一个好用的图床上传工具则可以大大提高写作效率。在 macOS 平台上,最知名的图床工具莫过于 iPic 了,然而,iPic 免费版的微博图床存在压缩图片、图片可能被添加水印或删除等诸多不足,而高级版采用的订阅制也让不少人心生不快。其实,利用 macOS 自带的 Automator 程序,我们可以自己 DIY 一个简单免费的图床上传工具,相信足以满足一部分人的需求。下面,我将以 SM.MS 和七牛云这两个图床服务为例为大家示范一下具体操作流程,只是给大家提供一个思路,如有错误还请批评指正。

SM.MS

SM.MS 提供了一个非常简单的上传 API,我们可以利用 macOS 自带的 curl 命令行工具通过 POST 方法直接上传本地图片。在 Automator 中,我们可以通过 Shell 脚本来达到这一目的。

SM.MS 上传 API

让我们首先打开 Automator,在弹出的窗口中选择新建服务,然后从左边的资源库中依次拖拽出「拷贝至剪贴板」和「运行 Shell 脚本」两个操作,接着在 Shell 窗口中粘贴 curl -F smfile=@$@ https://sm.ms/api/upload ,并将右上角的「传递输入」选项设为「作为自变量」。通过这一命令,你选择的图片就已经上传到 SM.MS 图床上了,之后你会得到如下图所示的一串 json 文件,留待我们解析。

解析 json 文件有很多种方法,在这里我选择的是命令行工具 jq,如果你装有 Homebrew,可以在 Terminal 中键入 brew install jq 来安装,你也可以从 GitHub 下载然后将文件拖进 /usr/local/bin 目录。下载完成后,在 Terminal 中键入 chmod +x /usr/local/bin/jq 赋其可执行权限。

之后,在 Automator 的 Shell 脚本窗体里粘贴 | /usr/local/bin/jq -r '.data.url' | pbcopy 到刚才的命令后面,然后保存服务,一个一键上传图片至 SM.MS 并复制图片链接的小工具就完成了。

如果你想直接得到 Markdown 格式图片链接的话,只需要在 | pbcopy 前添加| sed 's/^/![](&/; s/$/)&/',这段命令会调用 sed 流编辑器将图片链接转换为 Markdown 格式。你还可以在 Shell 脚本后添加一个通知提醒你图片上传成功,最终效果如下所示:

七牛云

七牛云的 API 要比 SM.MS 复杂得多,所幸七牛官方提供了 qshell 命令行工具供我们使用,你可以在 这里 下载最新版工具,然后像 jq 一样拖到 /usr/local/bin 文件夹并提权。之后,在 Terminal 中键入 qshell account ak sk 登录你的七牛云账户,其中,ak、sk 分别为七牛云「个人中心-密钥管理」中提供的 AccessKey 和 SecretKey。之后,在 Automator 里粘贴以下代码。

1
2
/usr/local/bin/qshell fput picbed $(date +%F)-$(basename $@) $@
echo $(date +%F)-$(basename $@) | sed 's/^/![](http:\/\/xxxxxxxxx.bkt.clouddn.com\/&/; s/$/)&/' | pbcopy

其中,picbed 是你想上传到的存储空间名称,xxxxxxxxx.bkt.clouddn.com 是该空间的默认域名,你可以在七牛云的对象存储面板中找到。

上面的代码中,$(date +%F)-的作用是为图片名称添加日期前缀,如果不需要可以删除,你也可以替换为自己喜欢的前缀。最终效果如下所示:

此外,你还可以在 macOS 的「系统偏好设置-键盘-快捷键」中给服务指定一个自己喜欢的快捷键,这样只需要选中图片后按下快捷键就能得到图片链接了,十分方便快捷。

以上就是本文的全部内容了,希望大家喜欢。

本文首发于 少数派


用 Automator 制作一个简单免费的图床上传工具
https://shunyu.wang/2017/automator-image-upload/
作者
Wang Shunyu
发布于
2017年9月12日
许可协议
CC BY-NC-SA 4.0