2010/06/16

夜フクロウ用Make Linkブックマークレットを作ってみた

他にやることあるのに、何故かこんなことをやっている(笑)。ワタシはTwitterに、ブラウザで閲覧しているニュースサイトやニコ動へのリンクを、自分のコメントつきでツイートすることが多い。これは手打ちでも各サイトの「Twitterでつぶやく」ボタンを使ってるわけでもなく、ブラウザに登録した「Make Link」というブックマークレットを自分の使い方に合わせ手を加え、小さく表示されるウィンドウの内容をコピーして夜フクロウのツイート欄に貼りつけるという、手間のかかることをやっていた(なお大変失礼な話ながら、「Make Link」の元ネタを、どこで拾ったか忘れてしまった)。

一方、夜フクロウには、閲覧しているページをツイート欄にペーストするブックマークレットが、あらかじめ用意されている。ワタシも一時期これを使用していたが、自分の使い方には合わないため、これも大変失礼ながら最近ではその存在を忘れていた。

で、今回、そのふたつを合体させ、さらに自分のニーズに合わせた改造を施して、「ブラウザで閲覧しているページのタイトルとURLを、夜フクロウのツイート欄にペーストする」ブックマークレットを作成してみた。しばらく運用してみて一応問題なく動作し、自分でいうのも何だが便利だったので、公開してみることにする。なお、下記説明での「_(アンダーバー)」は、半角スペースの意味です。

特徴
  • ブラウザでツイートしたいページを開き、何もテキストを選んでいない状態で実行すると、
    _»__》_【ページタイトル】_【ページURL】
    が、夜フクロウのツイート欄にペーストされる
  • ブラウザでツイートしたいページを開き、引用したいテキストを選んで実行すると、
    _»_【選んだテキスト】_》_【ページタイトル】_【ページURL】
    が、夜フクロウのツイート欄にペーストされる
  • ニコニコ動画で動画ページを表示させ、何もテキストを選んでいない状態で実行すると、
    _»__》_【動画タイトル】_【nico.msの短縮URL】_#nicovideo_#動画番号
    が、夜フクロウのツイート欄にペーストされる
  • ニコニコ動画で動画ページを表示させ、引用したいテキストを選んで実行すると、
    _»_【選んだテキスト】_》_【動画タイトル】_【nico.msの短縮URL】_#nicovideo_#動画番号
    が、夜フクロウのツイート欄にペーストされる

問題点
  • ページからの引用を示す意味で付加している「_»_」が、行頭にも必ず追加されてしまう。これは夜フクロウの仕様、具体的には
    location.href='yorufukurou://pasteurl/
    を使うと必ずくっついてしまうためのようで、現時点では良い解決策を見つけられなかった。
    (※念のため夜フクロウの作者の方に質問させていただいたところ、スクリプトに問題ありとのご指摘をいただいたので、現在検証を行っています。お手数をおかけし恐縮です>作者様)仕方ないので、手動で削除してください。原因が判明したため、改訂版をリリースしました。
  • ど素人が思いつきで作ったので、きっと他にもたくさんあるw
これを作った理由は、夜フクロウの使い勝手の良さをさらにアップさせたいというのが大きいが、各サイトにある「Twitterでつぶやく」経由でのツイートを、自分はあまり信用していないというのもある。その内容をサイト運営元がチェック(もっと悪く言えば盗聴)している可能性は否定できないでしょ?少なくともSEO的には有用な情報なわけだし。また、ニコニコ動画関係の機能については、完全に自分のニーズに合わせたもの。動画の時間を省略したのは、「ただでさえ文字数が限られているのにそんな情報要るんかいな」というのが動機である(少なくとも7文字は節約w)。なお他のサイトについては短縮URLが適用されないが、それは夜フクロウ側のURL短縮機能(コマンド+Sキー)を使って対応してください。
そんな訳で前フリはここまで。以下のコードをブックマークレットに登録して実行すれば動くと思います(注意:改行やスペース・インデントは必ず削除して、一行にしてください)。

javascript:if(location.href.indexOf('nicovideo.jp/watch/')=='-1')
{
var%20title=document.title;
var%20url=location.href;
var%20selectedtext=window.getSelection();
if(selectedtext!="")
 {
 var%20selectedtext='%E3%80%8E'+window.getSelection()+'%E3%80%8F';
 }
 else
 {
 var%20selectedtext='';
 }
}
else
{
var%20title=document.title.split('%E2%80%90')[0];
var%20url='http://nico.ms/'+location.href.split('/').reverse()[0]
+'%20%23nicovideo%20%23'+location.href.split('/').reverse()[0];
var%20selectedtext=window.getSelection();
}
{
if(selectedtext!="")
 {
 var%20linkTag%20=selectedtext+'%20%E3%80%8B%20'+title+'%20'+url;
 }
 else
 {
 var%20linkTag%20='%20%E3%80%8B%20'+title+'%20'+url;
 }
}
location.href='yorufukurou://pasteurl/'+(linkTag);

当方のMacOS X 10.6.4、Safari 5、Firefox 3.5.5で試しましたが、なんとか無事に動いてくれました(が、上記リンクはSafari 5のブックマークバーに何故かドラッグで登録できず。というわけでソースを覗いて手動で登録してください)。なお例によって利用は自己責任かつノンサポートですので、そのつもりで。というかもっとcoolなやつを作れる人募集(笑)。

6/18追記:夜フクロウ作者様のご指摘を一部反映し、またブックマークレットの内容も少々変更しました。が、「_»_」が行頭に付加される問題は、自分の実力では結局解決できず。まぁ運用でカバーできる範囲なので、ここで開発はいったん終了とする。

6/19追記:ニコ動以外のURLで使うと undefined という文字列が付加されてしまうバグを修正。すみませんorz

さらに追記:行頭の「_»_」が挿入されてしまう問題の原因が、ワタシの設定にあることが判明しましたorz 新エントリでその辺を解説します。重ね重ねすみません…

6/20追記:改訂版をリリースしたため、こちらのブックマークレットの内容も書き換えました。