Tomblooハックス – ポスト先にはてなダイアリーを追加する

Tombloo 0.0.10.1をベースに、LinkとQuoteをはてなダイアリーにもpostするやつを作ってみました。

tombloo@brasil.to/chrome/content/library21_HatenaDiary.jsをコピーして、30_Tombloo.Service.jsにちょこっと下の行を付け加えて、あとabout:configextensions.tombloo.posterFilter(Tumblr|HatenaDiary)にしたら動きます。

--- library/30_Tombloo.Service.js       2007-12-04 00:01:04.000000000 +0900
+++ /Users/kuma/tombloo.lib/30_Tombloo.Service.js       2007-12-21 22:50:56.000000000 +0900
@@ -115,6 +115,12 @@
                                return FFFFOUND.post(params);
                        }
                },
+               HatenaDiary : function (ctx, params) {
+                       if( params.type != 'link' && params.type != 'quote' )
+                               return succeed();
+
+                       return HatenaDiary.post(params);
+               }
        },

        extracters : {

つくりかた

Tomblooの対応サービスを増やすのはかんたんに書けます。

クラス名を決める
クラス名はファイル名と結びついてるみたいです。今回はHatenaDiaryという名前にしたので、作るファイルの名前は21_HatenaDiary.jsでした。数字の部分は読み込まれる順番を制御しているだけなのでなんでもokです。
Tombloo.Serviceに追加する
Tombloo.Service.postersにクラス名でメソッドを作ります。サポートしているtype(Tumblrでいう7つのコンテンツの種類です)じゃないのがきたときにはsucceedを返して、それ以外のときはpostメソッドを呼びます。別になんでも呼べますが慣習としてpostなのでpostにしておくのがいいでしょう。
postメソッドを書く
postメソッドにはtypeに応じてパラメータがくるのでそれをHTTPでPOSTするデータに変換してdoXHRを呼ぶだけです。ここでも慣習として

HatenaDiary[capitalize(params.type)].convertToForm(params);

というかたちで変換するのがいいでしょう。

タイプごとのconvertToFormを書く
typeに応じてどういうデータをpostするかを書きます。HatenaDiary.Quote = { convertToForm: function (m) { .... } } こんなかんじでサポートしたいtypeぶんだけ書きます。

これでできあがり。

かんそう

対応サービスを増やすのは非常に簡単でいいかんじになってます。常にextensions.tombloo.posterFilterに書いたサービス全てに反映されてしまうのがやや不便ですが、そこはUIで解決できると思います。postするtypeを選んだあとにもう一段そのtypeをサポートしているサービスからひとつを選ぶメニューをつけるとか、あらかじめ7つのタイプ * サービスのマトリクスをつくっちゃうとか。

こんなかんじ、っていうのがさらっと書けていいかんじでした。

ブログがウェブページの構造を規定したことで、それを作るためのツール、プラットフォームができて便利になったのと同様、コンテンツを7つ(7つじゃなくてもいいんだけど)に規定することでなにかが見えそうな気がします。出てくる問題が1-1/N-1/N-Mの関連付けをどうするか(ひとつのエントリでひとまとまりの曲を紹介したいときはどうするのかとか)、DBMSで出てくる問題と似ている気がします。


About this entry