Showing posts with label Atom. Show all posts
Showing posts with label Atom. Show all posts

2006-02-21

Blogger 投稿用の Emacs パッケージ

Emacs には Atom Publishing Protocol を使って Blogger に記事を投稿するためのパッケージがある。emacs-atom-api (or emacs-atompub) がそれ。clmemo@aka でも、何回か取り上げてきた。

ところが、最近、本家ページにアクセスできなくなってた。どうしたことかと、作者に問い合わせたら、ページが移転したのだという。

emacs-atomapi の方が古いパッケージで使用可能。emacs-atompub の方が新しい開発版パッケージで、とても不安定 (動かないかもしれない) とのこと。

また、emacs-atomapi は Emacs 付属の URL パッケージを使って (外部ツールなしで) 直接 Blogger に記事を投稿するという野心的な試みをしているのだけど、肝心の URL パッケージが上手く動いてくれなかったりして問題も多いとか。そんなわけで、curl という外部ツールを使って記事を投稿する機能も加わっているとか...

atom-blogger

Erik Hetzner 氏の emacs-atomapi は 2005/05 に公開されたツール。これとは別に、T. V. Raman 氏が atom-blogger なる EmacsLisp パッケージを開発してる。公開は 2006/01。

Blogger への投稿には (emacs-atomapi と同じく) curl を使ってる。

本当は、設定方法なんかをレビューすればよいのだろうけど、ちょっと時間が取れそうにないんで情報だけ。Emacs な人達は試してみてはいかがでせう。

2005-10-29

Blogger の Word Verification

Blogger へ Atom-PP 経由でポストできない問題は解決したみたい。Atom-PP 経由でポストしてもエラーにはならなくなった。とはいえ、全面的に Atom-PP からのポストを許しているわけじゃない。

現在 Blogger では、splog と疑わしきブログから Atom-PP 経由でポストしようとするとドラフトとして保存される仕組になっている。そこで、 Blogger にログインして「投稿」画面から CAPTCHA を入力すると、あらためて記事が投稿される。こういった仕組みは、Atom-PP 経由だけじゃなくて、次のサービスでも取られている。

  • AudioBlogger
  • Mail-to-Blogger
  • Blogger for Word
  • Hello BloggerBot
  • Flickr
  • API clients (XML-RPC, Atom-PP, etc?)

question mark投稿時の Word Verification をやめさせるには、「Word Verification:」についてる「?」マークをクリックする。すると下のような画面になるので、そこで CAPTCHA を入力する。これで投稿時の Word Verification は出なくなる。

word verification

以上、元ネタは Blogger のヘルプ:

追記: という記事を Atom-PP 経由で投稿したところ、Error 500 が返った。あれ? さっきは成功したのに... しかも、「投稿時に Word Verification させない」ようにしたはずなのに有効になってない。ううん、Blogger、頑張れ。

追々記: 先刻、Blogger Support からメールがあった。「あなたのブログをレビューして、確認して、ホワイトリストに加えました」という内容。メールが英語なのがちょっとマイナス。でも、Blogger の日本語化は早めだから、すぐに日本語のメールが届くようになるでしょう。メールが届いたら、Blogger をログアウトしてもう一度 Blogger に入り直す。それで、Word Verification は行われなくなる。最後に、「我慢してくれてありがとね、こんなことになって不便な思いをさせてごめんなさい」と書いてあった。Blogger、頑張ってるじゃん。

2005-10-26

Blogger の Word Verification と ATOM-PP

Blogger の投稿画面で CAPTCHA による Word Verification が行われている。

最近増加しつつある splog (ブログ版スパム) 対策だそうな。

現在、この Word Verification のおかげで、Blogger の ATOM-PP 経由による投稿ができなくなっている (送ろうとすると Error が返る)。Blogger 側の説明によると、数日のうちに直す模様。早く直るといいな。

ソースはこちら。

2005-10-07

emacs-atompub で編集する |Blogger|

Emacs 21.4 から emacs-atompub でポストするを書いた時、 前のエントリーで書いたように Blogger 本体から編集ができていなかった。だから、最新版のバグ (edit を実行すると空のバッファーが返る) だけを修正して、publish までは試してなかった。正確には、publish したら Error: 500 が返るのを確認していた。でも、 Blogger 本体で編集に失敗してるのだから、Atom-PP で失敗するのは当たり前だろう。きっとメンテナンス中なんだろう、と思ってた。

今、 Blogger から編集ができるようになって試してみて分かったこと。

ダメ。やっぱり publish できずに Error: 500 が返る。

Patch by VIA DEI CONDOTTI

前の記事を書いた時に、 via dei condotti さんから反応があって、 パッチを書いてもらった。そのパッチと via dei condotti さんのアドバイス

でもeditのバヤイ、issued、created、modifiedを消してやらんとpublishする時にエラーになります。

を合わせると編集記事を publish できた (Thanks Mr. via dei condotti)。

手元にある古い emacs-atom-api.el だと無条件に編集に成功する。きっと最新 emacs-atompub に何かバグがあるのだろう。悲しいかな、それを解き明かす力が今の僕にないけれど、進展があったら報告します。

2005-10-02

Emacs 21.4 から emacs-atompub でポストする

Emacs は開発版の 22.0.50 で emacs-atompub を使ってポストする方法は 以前書いた。今回は、 Emacs 21.4 で emacs-atompub を使ってポストする方法を書いてみる。ほとんど前回の焼き直しだけど、Emacs 21 ユーザーの参考になれば。

最新版の入手

Emacs 21.4 で必要になる外部パッケージは二つ。url パッケージと nxml パッケージ。

url パッケージは、emacs/w3 という pure EmacsLisp なテキスト・ブラウザーのために開発されたパッケージ。最近、emacs/w3 の開発の話は聞かないけれど、url パッケージは開発が進んで開発版 Emacs に取り込まれた。 Emacs 21.4 では、まだ標準パッケージじゃない。 emacs-atompub のページに、 emacs-atompub 用にチューンされた url パッケージがあるので取ってくる。

nxml パッケージは、XML Scheme をパースして Valid な XML テキストを書くための Emacs パッケージ。同種のソフトに psgml パッケージというのもある。 emacs-atompub では、XML の検証用に nxml パッケージを利用している。

emacs-atompub, url, nxml の最新版は以下のサイトからダウンロードできる。

インストール

手元の環境だと Emacs 22.0.50 が動いてるので、標準的なインストールをすると開発版の EmacsLisp と競合してしまう。そんなわけで、 Emacs 21.4 だけで使うように Path がちょっと変わってる。分かる人は、自分の環境に合わせて読み変えて下さい。

$ cd ~/
$ mkdir site-lisp
$ cd site-lisp
$ wget http://purl.org/net/emacs-atom-api/emacs-atom-api-latest.tar.gz
$ wget http://purl.org/net/emacs-atom-api/url.tar.gz
$ wget http://www.thaiopensource.com/download/nxml-mode-20041004.tar.gz
$ tar xzf emacs-atom-api-latest.tar.gz 
$ tar xzf nxml-mode-*.tar.gz 
$ tar xzf url.tar.gz 
$ ls
emacs-atom-api                nxml-mode-20041004         url
emacs-atom-api-latest.tar.gz  nxml-mode-20041004.tar.gz  url.tar.gz

nxml-mode の elc ファイルは、XEmacs 用かもしれない。もし上手く動かなかったら、 rm *.elc してみて下さい。何でそう思ってるのか、ソースが分かんない。単なる記憶違いかも。何か分かれば、追記します。

.emacs の編集

.emacs に次のコードを追加。

;;
;; url package
;;
(setq load-path (cons "~/site-lisp/url/" load-path))

;;
;; nXML mode
;;
(setq load-path (cons "~/site-lisp/nxml-mode-20041004/" load-path))
(load "rng-auto")

;;
;; atom-api
;;
(setq load-path (cons "~/site-lisp/atompub/" load-path))
(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 用の設定

Blogger のエントリー・ポイントを emacs-atompub に教えてやる。ただ、当方 proxy のある環境でしかテストが出来なかった。だから、この設定は proxy 用の設定。proxy がない場合は... もし出来た人、居たらトラックバック下さい。

proxy は proxy.foobar.net、ポートは 8080 とする。

(setq url-http-real-basic-auth-storage
      '(("proxy.foobar.net:8080"
  ("Blogger" . "hash_by_username_and_password"))))
(setq url-proxy-services
      '(("http" . "proxy.foobar.net:8080")
 ("https" . "proxy.foobar.net:8080")
 ("no_proxy" . "\\(localhost\\|localhost\\.localdomain)"))
)

Bloggerhash_by_username_and_password と書かれた部分は、ユーザー名 foo、パスワード bar として、次の操作で得た文字列と置き換えて下さい。

$ echo -n 'foo:bar' | openssl enc -e -base64

使ってみる

atom-api:entry/new
新規ポスト記事を作成
atom-api:entry/publish
書いた記事を投稿する

edit 用パッチ

2005-10-02 現在の emacs-atompub では edit が動かない (実行すると空のバッファーが返る)。一応、下のパッチを書いた。無保障だけど、人柱な人はどうぞ。

--- old-emacs-atompub/atom-api.el 2005-09-26 17:49:32.000000000 +0900
+++ new-emacs-atompub/atom-api.el 2005-10-01 03:26:18.000000000 +0900
@@ -695,8 +695,10 @@
   (atom-api:init 'sync)
   (let ((entry (atom-api:entry/prompt-for "Entry: ")))
     (switch-to-buffer (xml-node-text (xml-get-child entry 'title)))
-    (if (not (buffer-modified-p))
- (atom-api:entry/to-editable entry))))
+    (unless (buffer-modified-p)
+      (insert (atom-api:xml/to-string
+        (atom-api:entry/to-editable (atom-api:xml/parse-string entry))))
+      (atom-api:entry/edit-thunk))))
 
 ;;;###autoload
 (defun atom-api:entry/delete ()

2005-10-01

emacs-atompub

Emacs で AtomPP (Atom Publishing Protocol) 経由でポストするためのツールとして、emacs-atom-api パッケージがあることを以前紹介した。今回はその続報。

まず、パッケージ名が emacs-atom-api から emacs-atompub に変わった。

次に、パッケージが trac で管理されることになった。それに伴ってウェブページ (Wiki) のアドレスも変わった。

それから、最新のソースコードが darcs レポジトリーで公開されてる。最近の darcs の記事は、実は emacs-atompub のためだったりする。最新のソースの tar ball も Wiki 上にあるけれど、 darcs を使えば、ローカルに emacs-atompub のレポジトリーを持てるし、patch を送るのも楽になる (かもしれない)。

2005-10-01 現在の最新コードについていえば、entry の edit (編集) ができない。既にパッチは作者の Erik Hetzner 氏に送ってあるので、近い内に取り込まれる (といいな ;)。

Links

最後に、このブログで扱った emacs-atompub と darcs のエントリーのリンクを書いておく。

emacs-atompub
darcs
.

2005-07-24

Blog の記事を Emacs からポストする (2) blogger の不具合? |Emacs|AtomPP|Blogger|

風の便りさん所で、 Blogger の Posting 方法の話題あり。コメントを残そうと思って書いてたら、長くなったので Blog の記事にしちゃいます。

ようは、Blogger で記事をポストする時、どんな方法があるか? 思いつく所を挙げると

  1. Compose モード
  2. EditHTML モード
  3. メール・ポスト
  4. モブログ
  5. Atom-PP (XML-RPC はまだサポートされてる?)

モブログ以外で全て試した。

個人的には、Compose モードは自分好みなテキストが作れない (タグ打ちに慣れてる弊害か?) 気がするので、全然使ってない。EditHTML モードは、ポストする HTML を一番素直に書けるので気に入っている。ただし、どちらもブラウザー上から入力するため、 T-Code 使いとしては敬遠してしまう。 T-Code の問題は、99.99 % の人達には関係しないだろうけど...

メール・ポストは題名の日本語が化けるバグがあって嫌になった。もう直ってる?

それで、最近使っているのは GNU Emacs 上の emacs-atom-api。つまり、Atom-PP (Atom API) 経由でポストする方法。 Blogger に Atom-PP 経由でポストする時にも、いくつか問題があるので書いておく。

アンパサンド問題

HTML だと、半角の<>&は < > & を使って書く事になっている。ところが、Atom-PP 経由だと & を二重重ねで入力する必要がある。つまり、全角で書くと

を入力するのに、本来なら

&

と書けばよい所、

&

と入力する必要がある。

これは、きっと Blogger のバグだよね。仕方がないので、EditHTML モードで編集し直してる。

半角スペースが入る問題

Blogger は、長い一行をタグの前で改行してしまう。つまり、

... Long text before Good <a href=″。。。″>HTML</a>

という文章は

... Long text before Good
<a href=″。。。″>HTML</a>

      

になる。アルファベットで書いている時は問題ない。困るのはタグの中が日本語の時。

長〜い<a href=″。。。″>文章</a>

で、a 要素の前に改行が入り

長〜い
<a href=″。。。″>文章</a>

      

となる。ブラウザーによっては改行が空白として解釈されるので、本来

長〜い文章

と見えて欲しい所が、

長〜い 文章

という風に不要な半角スペースが入り見苦しい。同様に

long text from foo (<a href=″。。。″>bar</a>)

long text from foo (
<a href=″。。。″>bar</a>)

      

と変換されて

long text from foo ( bar)

bar の前 (開き括弧の後ろ) に不要な半角スペースが入る。これも HTMLedit モードで修正可能。

ref

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

2005-06-25

アンパサンド・テスト

Blogger の ATOM API で、& の扱いが変な気がする。というわけでテスト。

< " > &

  < > &
  < > &
  &lt; &gt; &amp;

  

test

<p>test</p> &lt;p&gt;test&lt;/p&gt;