2011-01-08

How to post the body written in Japanese to blogger.com by org-googlcl.el

org-googleclでblogger.comに日本語本文を投稿する方法

org-googlecl.elは便利です。 org-modeで書いた文章を自動でhtmlに変換して、その上blogger.comに投稿までしてくれます。

でも、意図通りに動かすには、少々カスタマイズが必要でした。 例えば、

日本語のタイトルに日本語の本文を、emacs上から投稿したい。

と思ったのですが、現段階でのorg-googlecl.clのコードではできず、 ちょっと変更を施して、

  • 英語のタイトル
  • 日本語の本文

という形でemacs上からbloggerに投稿できるようにしました。 パッチをみれば分かりますが、一時ファイルを使って文字コードをsjisからutf-8に変換しています。

Patch

diff --git a/org-googlecl.el b/org-googlecl.el
index 08aed34..38e5c4c 100644
--- a/org-googlecl.el
+++ b/org-googlecl.el
@@ -119,21 +119,25 @@ t"
                  (setq blogurl (nth 0 (org-split-string blogurl)))
                  (if (setq reposted (or googlecl-blog-auto-del (y-or-n-p "Delete existing blog entry?")))
                      (googlecl-delete-blog googlecl-blogname  btitle)))))))
-    (let* ((tmpfile (make-temp-file "googlecl"))
+    (let* ((tmpfile1 (make-temp-file "googlecl"))
+          (tmpfile2 (make-temp-file "googlecl-u-"))
           (bhtml (if borg (org-export-as-html 5 nil nil 'string t) bbody))
+          (nkf-command (concat 
+                        "nkf -Swd " tmpfile1 " \> " tmpfile2))
           (blog-command (concat 
                          "google blogger post --blog \"" googlecl-blogname "\""
                          (if (length btitle) (concat " --title \"" btitle "\"")) " --user \"" googlecl-username "\" " 
                          (if (length blabels) (concat " --tags \"" (concat blabels (if (and reposted (not(zerop(length googlecl-repost-tag)))) (concat "," googlecl-repost-tag) "")) "\" "))  
-                         tmpfile)))
+                         tmpfile2)))
     
       (message "blog command is %s" blog-command)
 
-      (with-temp-file  tmpfile
+      (with-temp-file  tmpfile1
        (insert bhtml)
        (goto-char (buffer-end 1))
        (insert googlecl-footer))
-      
+
+      (call-process-shell-command nkf-command nil nil t)  ; waiting for generated tmpfile2 and go next line. (synchronous process)
       (start-process-shell-command "googlecl-pid" nil blog-command))))

これで、python のスクリプト googlecl でも日本語本文を意図通りに通して、blogger.comに投稿できます。

Related Posts: