今更だけど、Tumblrがブックマーク付きメモ帳として使えそう
ソーシャルブックマークの欠点は、やはり全文検索がないことだ。(Yahooブックマークはまだ試す気になれない)
全文ではなくても、膨大なブックマークから後で曖昧な言葉で検索できたらラクだろう。そのためにタグやらコメントやらつけるのだが、全文検索の利便性には勝てないと思う。というかちゃんとタグ管理するのがめんどくさくて、どんなタグを付けたか覚えていない。似たようなタグが何個も出来てしまっている。
Tumblrは、投稿の簡易さに便があるが、検索機能が無いのが痛い。・・・と、思っていたら、こういうものを発見した。
Jacob DeHart - Tumblr search update
要するにTumblrのAPIを利用してJavaScriptで自分のTumblr内を検索しているみたい。こいつをヘッダーに書いて、
<script src=”http://www.thisismydevsite.com/tumblr.js” type=”text/javascript”></script>
こっちを検索ボックスを置く場所に書けばいいっぽい。
<script type=”text/javascript”>Tumblr.searchBox()</script>
スクリプトは出来れば自分のサーバーに置いて欲しいと書いてある。
HTMLを編集するのが面倒くさいので自分ではまだやっていない。ログが多いと検索がもっさりしそうだが、作者のサイトでは一瞬でインクリメンタル検索できている。将来的には検索するログの数を制限するかもしれないとのこと。
で、これを使って僕がやりたいことは、ブラウジング中にちょっと気になる文章があれば次々にTumblrに投稿(quote)していって、あとでパラパラ眺めるなり検索するなり、ということ。画像やビデオを投稿することはハナっから考えていない。だからこそ検索が必要なのだ。
投稿のほうはTumblrが配布しているブックマークレットが素敵なので、基本はそれを使う。問題は、quoteで投稿した場合に、選択範囲内の改行やら何やらがすべて失われてしまうことだ。
ちなみにTumblrの中にあるブックマークレットはOperaではツールバーにドラッグ&ドロップするだけでは登録されないので、ボタンを作る必要がある。というわけで作ったのだが、はてなダイアリーではOperaのカスタムボタンを置けないみたいなので、作りたい人は以下をコピーしてOperaボタンエディターの大きなテキストエリアに貼付け、小さい方のテキストエリアには好きな名前を入れる。
opera:/button/Go to page, "javascript:var d=document,w=window,e=w.getSelection,k=d.getSelection,x=d.selection,s=(e?e():(k)?k():(x?x.createRange().text:0)),f='http://www.tumblr.com/share',l=d.location,e=encodeURIComponent,p='?v=3&u='+e(l.href) +'&t='+e(d.title) +'&s='+e(s),u=f+p;try{if(!/^(.*\.)?tumblr[^.]*$/.test(l.host))throw(0);tstbklt();}catch(z){a =function(){if(!w.open(u,'t','toolbar=0,resizable=0,status=1,width=450,height=430'))l.href=u;};if(/Firefox/.test(navigator.userAgent))setTimeout(a,0);else a();}void(0);", , "Post to Tumblr", " "
中身は手近なブックマークレットを読んでみる。 - tomisima::memoに詳しく説明されているので割愛するが、気に入らない動作がいくつか。
■quoteで投稿するときに、元の選択範囲内にある改行が反映されない!
これはここで解決した。選択範囲内の\nとかをbrタグで置換している。
■もう一つ、これは自分だけかも知れないが、投稿ウィンドウをポップアップではなくタブで開きたい!
MDIではない故に、タブサイクルできないのだ。
これを解決するために、
a =function(){if(!w.open(u,'t','toolbar=0,resizable=0,status=1,width=450,height=430'))l.href=u;
となっている部分を
a =function(){if(!w.open(u,'_blank'))l.href=u;
に変えてみた。
ブックマークレット作成用
opera:/button/Go to page, "javascript:var d=document,w=window,e=w.getSelection,k=d.getSelection,x=d.selection,s=(e?e():(k)?k():(x?x.createRange().text:0)),f='http://www.tumblr.com/share',l=d.location,e=encodeURIComponent,s=s.toString().replace(/(\r?\n)/g,'<br />'),p='?v=3&u='+e(l.href) +'&t='+e(d.title) +'&s='+e(s),u=f+p;try{if(!/^(.*\.)?tumblr[^.]*$/.test(l.host))throw(0);tstbklt();}catch(z){a =function(){if(!w.open(u,'_blank'))l.href=u;};if(/Firefox/.test(navigator.userAgent))setTimeout(a,0);else a();}void(0);", , "Post to Tumblr", " "
■最後に、これが出来れば文句は無いと思えるのは、選択範囲内のリンクをそのままリンクとして投稿したい!
これはなかなか技術が必要みたいだ。このあたりを使って出来ないものか。
今のところ、それをしたい場合は、選択した部分のソースを表示して、HTMLを投稿欄に貼付けるしかないっぽい。
[追記 2008-1-1]
逆に、これができないとOpera付属のメモ帳以上の機能はないね。
※if(!/^(.*\.)?tumblr[^.]*$/.test(l.host)が何をやっているのか分かる人はコメントください。