HappySync : はてなダイアリーの記事を AtomPP 使ってローカルファイルシステムに持ってくる修行
はてなダイアリーAtomPub を使って、はてなダイアリーの記事を持ってくるモジュールを作成中。名前はとりあえず、HappySync とした。Hatena AtomPP Y ... y, y, y,... umm, Yeti! SYNChronyzer の略ということにしておく。
CodeRepos にコミットしてしまった。http://coderepos.org/share/changeset/29048
一応、下書きも記事も取ってこれているんだが、途中で
Pseudo-hashes are deprecated at lib/HappySync/Entry.pm line 144. Argument "\x{68}\x{74}..." isn't numeric in hash element at lib/HappySync/Entry.pm line 144. Bad index while coercing array into hash at lib/HappySync/Entry.pm line 144.
とか怒られる。Pseudo-hash てのは Perl5 の中でオブジェクト指向プログラミングするための苦肉の策の中のひとつ、と理解した。無名ハッシュだけが要素になった無名配列は、その無名ハッシュ内で明示されたキーしか許さないようになる、ということっぽい。それによってクラスのフィールドを表現する、と。でも、この仕組みが Perl 5.9 からはなくなるよ、ということらしい。私が何か悪いのかと思ったけど、XML::Simple が使ってるんだよねえ。ということは、XML::Simple を使うこと自体が間違っているのかもしれない。
Perl における最近の XML のいじり方、オブジェクト指向プログラミングのスタイルを学ばないといけないのかな。面倒だ。やりたいことが書くことに集中したいのに、そのまわりでひっかかってストレスかかってる。
それはそれとして、はてなダイアリーを Vista 上からいじりたいだけなのだが、それ以外のところで消耗させられる修行 - 昨日知ったことで掲げた
- はてなダイアリーのエントリをローカルファイルとして書いて、適当なタイミングでポストできる
- はてなダイアリーのエントリをローカルファイルに持ってこれる
- はてなダイアリーのエントリが HTML に変換されたものを持ってこれる
- 同様にはてなダイアリーの下書きも扱える
のうち、2, 3, 4 は一応できたことになる。1 についてもはてなダイアリーAtomPub を XML::Atom で使ってみる修行 - 昨日知ったことで実験済み。FUSE は使ってないから Windows でも Dokan Library は必要なし。
次の member URI は引っぱてきた feed が空になってる。こいつらについても調査しないとだなあ。
http://d.hatena.ne.jp/unau/atom/blog/20081220/1229708834 http://d.hatena.ne.jp/unau/atom/blog/20081215/1229303866 http://d.hatena.ne.jp/unau/atom/blog/20080929/1222979822 http://d.hatena.ne.jp/unau/atom/blog/20080919/1221827231
あと、下書きについては HTML 変換されたものを AtomPP 経由で取れない。Mechanize とか使えばいいんだろうな。下書きの HTML を取れれば CMS システムとして使うことができたのだが。まあよい。
追記
feed が空になるのは、タイトルも中身も空のやつかな。エラーでひっかかっているのはタイトルに ins タグやら HTML コメントが含まれたものだった。過去のイヤな実験のせいかあ。さて、どうしたものか。
追記
XML::Simple のパースオプションを下のページで勉強した。よく理解したのち、HappySync に適用しよう。