Pages

2005-07-16

Blog の記事を Emacs からポストする (1) |Emacs|AtomPP|

Atom Publishing Protocol (Atom-PP) という規格がある。これは Blog 記事のポスト (投稿) に関する約束事を決める規格。少し前には Atom-API と呼ばれていた。Blog サービスは数あるけど、同じ仕組みで皆さん記事を書けるようにしましょうね、ということ。Atom PP クライアント (Atom PP を使って blog に記事を投稿するためのソフト) を作る側のメリットは、一つの規格についてコードを書くだけで複数の Blog サービスに対応できること。つまり、Atom PP クライアントのユーザーは、(もし持ってるなら) 複数の Blog を一つの操作感で編集できる。

2005 年 7 月現在、Atom PP は未完成。それでも、ベータ仕様ながら Atom PP をサポートしている Blog は...

emacs-atom-api

さて、 GNU Emacs 用の Atom PP クライアントを Erik Hetzner 氏が公開してる。名前は emacs-atom-api 。Pure EmacsLisp なソフトで、Blog の投稿・編集・削除をサポートしている。日本語や proxy も OK。というか、 clmemo@aka の記事は 2005-05-07 からずっと emacs-atom-api で書いてる。対応してる blog サービスは Google 社の Blogger だけ。 Six Apart 社の Movable Type にも近く対応する、と思う。

emacs-atom-api は 2005-05-03 に初めてウェブに姿を現したソフトで、まだ新しい。正確には、公式リリースされてない。それに Atom PP 規格が未完成ということもあって、パッケージ名・関数名を含めて、これから変わる所も多いはず。バグを見つけたら、是非 Hetzner 氏に報告を。英語が苦手な人は、 ぼく宛にメールを送ってくれてもいいです。

インストール手順

emacs-atom-api は、 GNU Emacs 21.4 と 22(CVS) で動作確認されてる。また、 emacs-atom-api は EmacsLisp だけで動くけど、次のパッケージが必要。

  • url パッケージ
  • nxml パッケージ

url パッケージのインストール

url パッケージは、HTTP や FTP でファイルを転送するための EmacsLisp。確か、 Emacs/w3 の一部として開発が進められていたはず。Emacs にはバージョン 21 で取り込まれ、公式ツールの一つになった。

ただし、 emacs-atom-api は開発版の url パッケージでないと動かないかもしれない。Hetzner 氏が Emacs21 のために emacs-atom-api 用にチューンした url パッケージを公開しているので、もし失敗するようらこちらを使う。

url.tar.gz を展開して、load-path の通った所に置けばいい。

Emacs22 (CVS) を使ってる人は、上のパッケージはインストールする必要はない。

nxml パッケージのインストール

nxml パッケージは、投稿する記事が valid (XML 的に正しい) かどうかをチェックするのに使われてる。本来は、XHTML などの XML テキストの入力支援ツール。

nxml の最新版は次のサイトに置いてある

ダウンロード後、make をかけてシンボリック・リンクをはる。

$ tar xzvf ~/download/nxml-mode-*.tar.gz
$ cd nxml-mode-*
$ make
# ln ../nxml-mode-* /usr/local/share/emacs/nxml

最後に .emacs に設定を追加。

;;
;; nXML mode
;;
(load "rng-auto")
(when (boundp 'magic-mode-alist)
  (setq magic-mode-alist
      (cons '("<\\?xml " . nxml-mode) magic-mode-alist))
)

emacs-atom-api のインストール

最新の emacs-atom-api は以下の場所にある。

展開して、load-path の通ってる所にコピーするだけ。.emacs には次のコードを追加する。

(autoload 'atom-api:entry/edit "atom-api" "Prompts for an entry to edit, opens in new buffer." t)
(autoload 'atom-api:entry/new "atom-api"  "Create a new entry." t)
(autoload 'atom-api:entry/delete "atom-api"  "Prompts for an entry to delete." t)

Blogger に投稿してみよう

投稿用の原稿を書くには M-x atom-api:entry/new

投稿するには M-x atom-api:entry/publish

う〜ん、手抜きな説明だ。スクリーン・ショットもどうぞ。

emacs-atom-api screenshot

Proxy 対策と Basic 認証

Atom PP は Basic 認証を使う。せっかくなので、こちらの設定もしてしまおう。要るのはユーザー名とパスワードを一続きにした文字列。ユーザー名 foo、パスワード bar の場合、次の操作 (のどれか) で認証文字列が手に入る。

% echo -n 'foo:bar' | base64 -e
% echo -n 'foo:bar' | openssl enc -e -base64
% echo -n 'foo:bar' | nkf -MB
% echo -n 'foo:bar' | perl -MMIME::Base64 -ne 'print encode_base64($_)'

得られた認証文字列が "BASICFOOBAR12345"、そして Proxy が "foo.bar.proxy"、Port が 8080 とする。

(setq url-http-real-basic-auth-storage
      '(("foo.bar.proxy:8080"
  ("Blogger" . "BASICFOOBAR12345"))))
(setq url-proxy-services
      '(("http" . "foo.bar.proxy:8080")
 ("https" . "foo.bar.proxy:8080")))

ref

No comments:

Post a Comment