[关闭]
@fyywy520 2016-03-19T15:28:50.000000Z 字数 3669 阅读 4008

利用Alfred Workflow快速上传粘贴板图片至七牛图床并在Markdown中引用

Alfred 七牛 图床 Markdown


应用场景

Markdown最大的缺陷就是不能方便的在文章中插入本地图片,所以通常情况下我们需要一个好的图床来帮助我们,国内现在使用体验最佳的图床就是七牛云存储,但是为了插入一张图片我们通常需要做的事情是:

为了一张插入图片,真是心力交瘁。如果插入量巨大,真是不堪重负。所以我们需要使用一个工作流来一键帮我们完成这些复杂的机械化的工作。本教程实现的目标是:

中途甚至不需要任何与编辑文本无关的工作,让你专心写作!

教程

准备工作

Thumb

因为本方法用到了Alfred的PowerPackage扩展功能,所以你需要首先内(po)购(jie)其高级功能。

然后另一个准备工作就是七牛云存储了,到七牛云存储的官网注册一个账号,开始使用。关于七牛云存储的一些设置,在这里我想说一下:

七牛云存储的设置

在你的空间的数据处理中应该配置好「图片样式」:新建图片样式。

style

使用图片样式的好处是你可以根据需求插入不同大小的图片,毕竟Markdown是没有图片编辑和调整功能的。我设置了如下的样式:

style

这样我可以通过样式分割符合样式-480.jpg-960.jpg-1920.jpg调用不同大小的图片插入到文章中了。

配置七牛云存储文件同步

QRSync是七牛云存储提供的同步上传客户端工具,可以用于Linux、Mac OS X、Windows等操作系统。使用QRSync,可将用户本地某个目录的所有文件同步上传到七牛云存储中,同时支持增量上传,可以只将目录中新增的文件上传至七牛云存储。

首先,下载QRSBox

然后在你希望同步的文件夹下创建以下两个目录

把下载好的QRSync解压后所有文件放到CLI目录下,在CLI目录下新建conf.json文件包含以下内容:

  1. {
  2. "src": "/home/your/sync_dir/Data",
  3. "dest": "qiniu:access_key=<AccessKey>&secret_key=<SecretKey>&bucket=<Bucket>&key_prefix=<KeyPrefix>",
  4. "debug_level": 1
  5. }

其中:

配置完成后,在CLI目录下就可以随时使用如下命令来同步文件夹了:

  1. ./qrsync conf.json

另一个可以使用的工具是QRSBox,其支持后台实时监控目录,当有新文件加入到同步目录的时候,就会自动上传到相应的空间。但截止到我测试时(2016年3月19日)QRSBox仍有一些Bug导致工作流无法工作,所以我选择了更加可靠的QRSync。

配置WorkFlow

下面我们来配置WorkFlow工作流来让一切变得自动化起来,首先打开Alfred,进入Workflow,并且创建一个空白的工作流:

然后添加一个热键,我选择的是++V,这样和我的Annotate截屏快捷键++A正好形成一对:

hotkey

然后添加一个action,选择osascript作为脚本语言

我们添加如下脚本:

  1. property fileTypes :
  2. class PNGf», ".png"}, ¬
  3. {JPEG picture, ".jpg"}}
  4. on getType()
  5. repeat with aType in fileTypes
  6. repeat with theInfo in (clipboard info)
  7. if (first item of theInfo) is equal to (first item of aType) then return aType
  8. end repeat
  9. end repeat
  10. return missing value
  11. end getType
  12. set theType to getType()
  13. if theType is not missing value then
  14. set filePath to "/Users/quentin/Documents/Qiniu/Data/" --这里换成你自己放置图片的路径
  15. set fileName to do shell script "date \"+%Y%m%d%H%M%S\" | md5" --用当前时间的md5值做文件名
  16. if fileName does not end with (second item of theType) then set fileName to (fileName & second item of theType as text)
  17. set markdownUrl to "![](http://7xin49.com1.z0.glb.clouddn.com/" & fileName & "-960.jpg)" --这里是你的七牛域名和设置的图片样式
  18. set filePath to filePath & fileName
  19. try
  20. set imageFile to (open for access filePath with write permission)
  21. set eof imageFile to 0
  22. write (the clipboard as (first item of theType)) to imageFile
  23. close access imageFile
  24. set the clipboard to markdownUrl
  25. try
  26. tell application "System Events"
  27. keystroke "v" using command down
  28. end tell
  29. end try
  30. do shell script "/Users/quentin/Documents/Qiniu/CLI/qrsync /Users/quentin/Documents/Qiniu/CLI/conf.json" --此处是你的QRSync脚本目录和命令
  31. on error
  32. try
  33. close access imageFile
  34. end try
  35. return ""
  36. end try
  37. else
  38. return ""
  39. end if

代码中有4处需要替换修改地方

  1. set filePath to "/Users/quentin/Documents/Qiniu/Data/"

换成你自己设定的同步目录。

  1. set markdownUrl to "![](http://7xin49.com1.z0.glb.clouddn.com/" & fileName & "-960.jpg)"

设定成你的七牛空间域名:

注意如果你在设置QRSync时预设了<KeyPrefix>前缀,记得在域名后面补上。另外再加上自己设定的图片样式-960.jpg,我在样式中自带了一个统一的文件后缀.jpg是为了让Markdown编辑器知道这是一个图片链接。

  1. do shell script "/Users/quentin/Documents/Qiniu/CLI/qrsync /Users/quentin/Documents/Qiniu/CLI/conf.json"

换成你的QRSync的命令脚本目录即可。

然后,添加一个通知,让我们得到上传成功的反馈:

最后,把Trigger、Action和Notification用线连起来,就大功告成了:

现在,你只需要

额外的同步工作流

此外,我再提供一个额外的工作流来负责同步目录到七牛云存储,针对那些直接复制到同步目录下的文件。另建一个Workflow,如图所示:

使用你喜欢的HotKey来启动上传,然后使用bash语言键入以下script:

  1. /Users/quentin/Documents/Qiniu/CLI/qrsync /Users/quentin/Documents/Qiniu/CLI/conf.json

同样,把相应目录改成你自己的QRSync命令脚本目录就可以了。

注意:当上一个工作流没有成功上传时,可以使用这个工作流再次上传。

直接下载

我把自己写好的WorkFlow上传到百度云了,你也可以自己下载,然后修改参数直接使用,传送门:

百度网盘下载 密码:q3cd

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注