折腾死老子了
[不慎删除重发]
俺这几天一直在折腾从emacs发送blog的问题。俺的blog是在 blogger.com上托管的,网上关于从emacs往blogger上发博的方案很 多,但是事情不是那么简单滴,莫名其妙的防火长城近几个月来一直 把blogger api的url中的某个关键词给屏蔽了,所以不管是 scribefile还是windows live writer根本没法用blogger的api发帖。 愁了一个多月后我突然发现如果把api url里的http换成https,其实 是可以正常使用的,比如说
http://www.blogger.com/feeds/111111111111111111/posts/default
应该变成
https://www.blogger.com/feeds/111111111111111111/posts/default
就可以了。所以我需要手动把这些别人写的从emacs往blogger发贴的 方案里面的http换成https。
俺在emacswki比来比去,觉得这个项目比较靠谱,看上去很先进的样子。把它装上后俺就在里面发帖的那个函数里加了一 句:(setq url (replace-regexp-in-string "http:" "https:" url))
没想到换完还是不行,俺很苦恼。作为一个很爱钻牛角尖的淫, 俺最讨厌明明看起来能工作但是实际运行不起来的code了(所以每次写程序超焦虑),不吃饭不睡觉一定要把它搞运行正常了为止。
俺很焦虑地试了试api里面的给出的需要让curl POST上api url的一例xml例子,这个例子和我下载的这个方案生成的xml不太一样,但是发现同样没法工作,很快发现问题在于所有的双引号都要变成单引号。我一阵手忙脚乱地改程序。
再 试发现还是不行,当时我在办公室用的windows机器,目录分割符是\而不是unix传统的/,然后就发现把文件名传给curl的出了乱 子,cmdline下可以用curl -d "@d:\.myemacs\e-blog-tmp"传送,明明一切都正常。到了emacs里它call的时候用的是自己的shell,无论如何认不得
curl -d "@d:\.myemacs\e-blog-tmp" https://www.blogger.com/feeds/111111/post/default
其实我都不能确定是不是反斜杠还是@的问题,错误花样很多,非常非常奇诡...囧。
后 来我回到linux下再实验,其实参数只要-d @/home/najaj/.myemacs/e-blog-tmp已经可以用了,本篇就是在emacs里写的。但是在windows下path必须加引 号,用emacs自己的call-process里还是出奇怪的错误,我决定我自己写一片xml,存一个暂时文件,然后alt+!呼出原生shell把它 curl post出去算,emacs自己带的是什么破shell啊啊啊啊呵
我修改过的e-blog.el在这个项目的issue里。