ラベル ブログ の投稿を表示しています。 すべての投稿を表示
ラベル ブログ の投稿を表示しています。 すべての投稿を表示

2008/04/30

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: ブログ, Common Lisp
↑ ; labels: は行頭に記述してください。;の前にスペースは入れないでください。(Muse で example タグの中に "; " で始まる行を書くにはどうすればいいんだろう?)

M-x blogger-post で投稿します。

投稿後には Muse ファイルの末尾にポストIDを追加しますので、投稿後に再編集する場合はC-x C-v などで Muse ファイルを再読込してください。

末尾のポストIDを保持するために次のような行が付加されます。

 ; post-id 3534792244000900117

上記のようなポストIDの行があると M-x blogger-post は既存エントリの置き換えになります。