刚才捣鼓完了用七牛来备份服务器,觉得七牛的 CLI 工具实在好用,然后想干脆也用七牛来储存 Blog 的图片算了.我用Octopress来搭建 Blog,并用Octopress-Emacs来控制 Octopress.以前都是要将图片上传到各种图床,微博神马的,然后在抓取 URL,然后在写 Blog 的时候在进行插入,各种麻烦的不得了,所以这次打算实现自动化.

想实现自动化主要思考了两种办法,一是直接修改 Octopress,在rake gen_deploy/deploy时顺带执行qrsync,二是修改 Octopress-Emacs.想来想去,虽然直接修改 Octopress 会比较省事,这样在 Shell 与 Emacs 中都可执行qrsync,但是修改 Octopress 源码后在将来升级神马的时候可能会造成一点麻烦.所以最终还是选择了修改 Octopress-Emacs 来实现.

首先,确认几点:

  • 新建一个七牛公开空间,我的是 venmos-com
  • 在 Octopress 目录建立一个 photos 文件夹来放图片
  • 使用 qrsync 工具来同步图片
  • 七牛公开空间的 url,我的是 http://venmos-com.qiniudn.com/

然后开始:

新建一个 qrsync 的配置文件,指向七牛工作空间,指向本地图片目录:

js{
    "access_key": "you key",
    "secret_key": "you secret_key",
    "bucket": "venmos-com",
    "sync_dir": "/Users/venmos/Blog/photos",
    "async_ops": "fop1;fop2;fopN",
    "debug_level": 1
}

使用 qrsync venmos-com.json 来进行测试,测试成功后开始编辑octopress-emacs.el,插入以下:

lisp(defun octopress-qrsync (command)
  (let ((command-str (format "/usr/local/bin/qrsync %s" command)))
    (shell-command-to-string command-str)))

创建octopress-upimg:

lisp(defun octopress-upimg ()
  (interactive)
  (octopress-qrsync "/Users/venmos/venmos-com.json")
  (message "Up OK"))

修改octopress-deploy:

lisp(defun octopress-deploy ()
  "default deploy task"
  (interactive)
  (octopress-rake "deploy")
  (octopress-qrsync "/Users/venmos/venmos-com.json")
  (message "Deploy site OK"))

修改octopress-gen-deploy:

(defun octopress-gen-deploy ()
  "generate website and deploy"
  (interactive)
  (octopress-rake "gen_deploy")
  (octopress-qrsync "/Users/venmos/venmos-com.json")
  (message "Generate and Deploy OK"))

之后使用octopress-upimg命令就可将图片上传到七牛,或执行octopress-deploy/gen-deploy命令时也会附带上传图片到七牛.

最后我建立了一个 yasnippet => qimg:

# name: Qiniu Img
# contributor: venmos
# key: qimg
# --
<img src="http://venmos-com.qiniudn.com/${1:name}" title="${2:imgname} ${3:altname}" >$4

之后我只需要将图片放入图片目录,然后使用 yasnippet 快速插入 qimg,然后 octopress-gen-deploy 就全部 OK 了!


venmos
462 声望15 粉丝

Maccon, Emacscon, Lolicon, ACG. False geek, Looks like a quiet guy. Love open source, Loves photography and outdoor sports. Favorite programming language is Ruby and Lisp.


引用和评论

0 条评论