刚才捣鼓完了用七牛来备份服务器,觉得七牛的 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 了!
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。