Muse で書いて Blogger にポストするプログラム
sak さんがコメントをくれたのでドキュメントを書きました。sak さんきっかけありがとうございます。
概要
とにかく Emacs から Blogger に投稿したかった。どうせなら Muse で書きたかった。simple-hatena-mode とかうらやましかった。というわけで作ってみたものです。
できること。
- 新規投稿
- 投稿したものの修正
めんどうなところ
- Slime 経由なので M-x slime とか事前にしておく必要がある。
- 新規投稿後、元ファイルの末尾に post-id をくっつけるので、Emacs 上で再読み込みする必要がある。
- カテゴリにはまだ対応してない。
- Web 上で編集したものとローカルの Muse ファイルの同期はとれない。Muse -> Web の一方通行。
- slime の repl バッファを見てないと、投稿が完了したかどうか分からない;)
必要なもの
Drakma等は asdf-install を使って次のようにインストールするのが簡単だと思います。他には clbuild を使う方法もあります。
CL-USER> (require :asdf-install)
("ASDF-INSTALL")
CL-USER> (asdf-install:install :drakma)
Install where?
1) System-wide install:
System in /usr/lib/sbcl/site-systems/
Files in /usr/lib/sbcl/site/
2) Personal installation:
System in /home/ancient/.sbcl/systems/
Files in /home/ancient/.sbcl/site/
--> 2
ここで 2 を入力してください。
No key found for key id 0x#1=595FF045057958C6. Try some command like
gpg --recv-keys 0x#1#
[Condition of type ASDF-INSTALL::KEY-NOT-FOUND]
Restarts:
0: [SKIP-GPG-CHECK] Don't check GPG signature for this package
1: [ABORT] Return to SLIME's top level.
2: [TERMINATE-THREAD] Terminate this thread (#<THREAD "repl-thread" {10034FE621}>)
みたいなのが表示されたら 0 を入力してください。あと同様に cl-ppcre 等をインストールしてください。
(asdf-install:install :cl-ppcre)
(asdf-install:install :s-xml)
インストール
取得
最新バージョンを Subversion で取得します。dot.blogger.lisp を ~/.blogger.lisp にコピーします。
$ mkdir ~/lisp
$ cd ~/lisp
$ svn checkout http://cl-blogger.googlecode.com/svn/trunk/ blogger
$ cd blogger
$ cp dot.blogger.lisp ~/.blogger.lisp
~/.blogger.lisp の編集
~/.blogger.lisp を編集します。
設定内容は次のとおりです。
- *author*
- 投稿ユーザ名
- *email*
- 投稿ユーザ email
- *passwd*
- Blogger のパスワード
- *blog-id*
- ブログID
ブログIDは Blogger のソースを表示すると次のような個所があると思いますので、"blogId=" の後のものを指定してください。
<link rel="EditURI" type="application/rsd+xml" title="RSD" href="http://www.blogger.com/rsd.g?blogID=1096313046657120208" />
asdf:*central-registry* への追加
~/.sbclrc 等で asdf:*central-registry* に blogger.asdのあるディレクトリを追加してください。
(pushnew (merge-pathnames #p"lisp/blogger/" (user-homedir-pathname))
asdf:*central-registry*
:test #'equal)
~/.emacs の編集
~/.emacs に次の2行を追加してください。
(setq load-path (cons (expand-file-name "~/lisp/blogger") load-path))
(autoload 'blogger-post "blogger" "Blogger Post" t)
使い方
まず M-x slime 等で Slime を起動しておいてください。
Muse の書式で投稿内容を編集してください。
1行目は "#title" で始めてください。投稿の際にタイトルとして使います。
; labels: で始まる行にコンマ区切りでラベルを指定することができます。
#title 題名↑ ; labels: は行頭に記述してください。;の前にスペースは入れないでください。(Muse で example タグの中に
投稿内容。。。
; labels: ブログ, Common Lisp
"; "
で始まる行を書くにはどうすればいいんだろう?)M-x blogger-post で投稿します。
投稿後には Muse ファイルの末尾にポストIDを追加しますので、投稿後に再編集する場合はC-x C-v などで Muse ファイルを再読込してください。
末尾のポストIDを保持するために次のような行が付加されます。
; post-id 3534792244000900117
上記のようなポストIDの行があると M-x blogger-post は既存エントリの置き換えになります。