xixitalk's snippet

Post Longer Than 140 Characters Tweets

May 31, 2013 - Comments

用浏览器发布博客到octopress

目标

用网页发布到octopress,这样手机、iPad、办公环境都可以通过浏览器发octopress博文了。

设想

浏览器网页编写,保存在GAE上,raspberry pi上用shell定时检查抓取,下载到octopress的_posts目录下,调用rake进行发布,调用git push上传markdown源文件到github。

硬件环境

需要一个全天运行的电脑(我的是树莓派),用于每10分钟进行检查是否服务器(GAE)上新的博文,并rake生成html格式的博文上传到github。

软件环境

树莓派上安装octopress所需的所有工具,生成一个不要密码的SSH密钥,把公钥上传到github上,这样rake deploy就不会提示输入密码了。

GAE网页设计

面向shell的接口

/md/getnewpost?action=flag 用于判断GAE上是否有新博文,1表示有新博文,0表示没有新博文
/md/getnewpost?action=cleanflag 将GAE上博文标志1变成0,用于rake deploy成功后使用

/md/getnewpost?action=getfilename 获得新博文的文件名
/md/getnewpost?action=getfilemd5 获得新博文的md5,用于检验下载的完整性
/md/getnewpost?action=getfilecontent 获得新博文的内容

面向用户的接口

/md/getnewpost?action=new 用户要新建博文,浏览器访问该地址
/md/getnewpost?action=edit 用户要重新编辑博文,浏览器访问该地址

用户不需要关心的接口

/md/getnewpost?action=save edit之后保存按钮执行本接口
/md/getnewpost?action=publish save后publish按钮执行本接口,将博文标志变成1

shell检查

  1. 先用action=flag获得博文标志。如果是0,GAE上无新博文,直接退出;如果是1,继续。
  2. 获得新博文的文件名、md5、文件内容,用本地命令md5sum计算新博文的md5,与action=getfilemd5获得的md5进行比较。如果不一致,抓取博文出错退出;如果一致,抓取博文正确。
  3. 将新博文拷贝到octopress到source/_posts目录下,调用rake generate && rake deploy进行HTML博文生成和发布,调用git push将markdown博文上传到github服务器。
  4. 调用action=cleanflag将GAE博文标志变成0,表示GAE上新博文已经成功发布。

可能是rake generaterake deploy时间比较长,cron 10分钟检查不好使,发现没有效果,最后用后台shell while 循环检查,执行一次后 sleep 600秒这样才正常。

updated from my iPad with Safari


知识共享许可协议
本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。