今開いているページの情報を Twitter に投稿する Vimperator plugin

前々から見かけていたけど今日突然やる気になったのでちゃっちゃか作ってみた。 matanico.js のコードが流用できたのでコーディングが 30 分ほどで出来たんだけどこのエントリ書くのに 90 分かかるというオチがついた。どんだけ文章力がないんだおれ。

http://www012.upp.so-net.ne.jp/legio/distribute/reading.js
http://coderepos.org/share/browser/lang/javascript/vimperator-plugins/trunk/reading.js

元ネタはいろいろあってよくわからんのだけど http://twitter.g.hatena.ne.jp/Uchimata/20071008/1191837376 なのかな。ならって 'I'm reading now' ではじまるようにしてみたけども。

使い方

  • :reading [comment]
    • 開いているページの title, URL を選択している文字列・コメントといっしょに投稿する。文字列選択していなくてもいいしコメントを指定しなくてもいい。選択文字列やコメントのせいで 140 字を超える場合はまぁ気にしない方向で。そのうち外部サービスを使って自動でなんとかしたりしなかったり。
  • :reading! [comment]

デフォルトでは 'I'm reading now : コメント "やぬすさんとこの日記" http://d.hatena.ne.jp/janus_wel/ 選択文字列だよー' みたいに投稿される。

最初に投稿する際に twitter に登録したメールアドレスとパスワードを聞かれるので入力してください。入力は 1 回だけで 2 回目以降の投稿は自動でやってくれます。 matanico.js を使ってる人は設定を併用してるので新しく入力する必要はないです。

設定で投稿文章を変更することも可能。

  • g:reading_format
    • 書式設定。
    • デフォルトでは '$SERVICENAME : $COMMENT "$TITLE" $URL $SELECTED' 。
    • $SERVICENAME だとかは書式設定にのみ使える変数 ( 参照のみ ) で以下のものが使用可能。
$SERVICENAME このプラグインが付加する文字列。 g:reading_servicename で指定する。
$TITLE ページのタイトル。
$URL ページの URL。
$SELECTED visual mode やマウスで選択した文字列。
$COMMENT コメント。これがないとコメントを書いても反映されない。
  • g:reading_servicename
    • このプラグインが固定で付加する文字列。 'I'm reading now' の部分。
    • デフォルトは "I'm reading now" 。
  • g:reading_title_default
    • title がないときに使われるもの。
    • デフォルトは 'no title' 。

以下は設定例という名の晒し。

let g:reading_servicename='reading'
let g:reading_format='$SERVICENAME : $COMMENT [$TITLE] $URL $SELECTED'

上記の設定だと 'reading : コメント [やぬすさんとこの日記] http://d.hatena.ne.jp/janus_wel/ 選択文字列だよー' のように投稿される。あなた色に染めてください。

技術的なはなし

選択文字列を取得するのに最初は liberator.buffer.getCurrentWord() を使ってたんだけど何も選択してないとエラーが出たり脈絡のない文字列を拾ってきたりするので window.content.getSelection().toString() に切り替えた形。どうやら caret mode 時のカーソル位置に近い単語を無理やり拾ってくるみたいでスクロールしたりするとカーソルも動くらしい。名前のとおりの関数だった。

あと tinyurl のテキスト版サービスの紹介をどっかで読んだ覚えがあるんがサービス名をド忘れしてしまったので誰か知ってる方いたら教えてほしいです。