ピン立てて、外部ブラウザでぐぁーって開くやつ実装した

まず最初に。ぼくの書き方がまずかったんだけど、これは何するもの?っていう問い合わせがあったので、それの回答。

scoopはターミナルで動作するRSS Reader。Google Readerのデータを取得して表示するので、Google Reader使ってる人は乗り換える事なく、気軽に使えるよ。試してみて。

ということで、タイトルの通り、ピン立てて、ぐぁーなやつ実装した。webbrowserモジュールっていうのがPythonの標準ライブラリであるので、簡単に実装できた。思いのほか便利で、すでにぼくは常用してる。スクロールはまだできないから、長文エントリは表示できないけど、外部ブラウザで開いて読める。

えーと、すでに使ってる人は、インストールしたディレクトリで、

git pull

して、最新取ってくれば有効になる。まだ使ってない人は、ここを参考にインストールして。

キーバインドは、

  • p: ピンを立てる/解除(トグル)
  • o: ピンを立てたエントリを外部ブラウザで開く
  • O: 選択しているエントリを外部ブラウザで開く

って感じ。OSでデフォルト指定してあるブラウザで開くと思う。

あと、ここで配布してる日本語化されたUbuntuのVMwareイメージでも動作することが確認できた。書き忘れてたけど、unicodeが有効になってるncursesが必要なので、Mac使ってる人は、MacPortsとかでインストールしたPython使った方がいいかもしれない。ターミナルの文字コードもutf-8で。

基本的に、まずは機能を充実させることを考えてるので、マルチプラットフォーム対応とかは後回しの予定。もちろん、バグレポートとかパッチは受け付ける。まあ、こんなRSS Readerを使おうとする人はギークに違いないから、自分でハック推奨。

すくーぷ

http://github.com/ryuji/scoop/tree/master

今のところ、未読の新着エントリはなんとか読めるレベル。Feedの追加とかは、WebブラウザからGoogle Readerにログインして直接行う。

そのうち、マニュアルとかも整備しなきゃだけど、メモ替わりにここに書いとく。

ライセンス

依存ライブラリの関係で、GPL2

必要なもの

  • python2.5

    たぶん、2.6でも動くと思うけど未検証。3系は未対応。

  • w3m

    エントリの表示に使う。

  • git

    GitHubで公開してるのでインストールに必要。

インストール

GitHubから取得。インストールしたいディレクトリの下で、下記コマンドを叩く。

git clone git://github.com/ryuji/scoop.git

あとは、パス通すなり、scoopにシンボリックリンク張るなり、お好きな感じで。

次に、設定ファイルの作成。とりあえず、サンプルを自分のホームディレクトリにコピーする。

cp scoop/scoop.rc ~/.scoop.rc

で、自分のGoogle Readerのemailとpasswordを設定する。

vi ~/.scoop.rc

[credential]
email = your_google_reader_account@gmail.com
password = your_google_reader_password

パーミッションは変えといた方が安心。

chmod 600 ~/.scoop.rc

使い方

% scoop --help
Usage: scoop [options]

Options:
  --version     show program's version number and exit
  -h, --help    show this help message and exit
  -n, --notify  notify unread entry count

-nオプションで、未読件数を出力。新着通知とかに使えるかと思って実装した。

オプションなしで実行すると、メインスクリーンが立ち上がる。モードの概念があって、今のところ、未読記事一覧モードと、記事閲覧モードが実装済み。それぞれのモードでのコマンドは下記参照。基本的には、viとかmuttのキーバインドに倣ってる。

  • 未読記事一覧モード

    • q : scoopの終了
    • r : 未読記事一覧の再取得
    • j : 次の記事選択(下にカーソル移動)
    • k : 前の記事選択(上にカーソル移動)
    • return : 選択中の記事を読む
  • 記事閲覧モード

    • q : 前のモードに戻る
    • u : 未読記事一覧モードに切り替える
    • j : 次の記事を読む
    • k : 前の記事を読む

既知のバグ

  • 未読記事一覧で、一度に20件しか表示できない

    今月中には対応予定。

  • 基本的にスクロールできない

    スクロールできないので、長いエントリは読めない。今月中には対応予定。

  • 時刻表示がおかしい

    JSTタイムゾーンのはずなのに、どう見てもGMTです、ほんとうに(ry。pytzとかかましてみたけど治らず。なんか、ライブラリで取得した時点で狂ってる気がする。

  • 起動中にターミナルのサイズを変更したら死ぬ

    なんとなく対応方法はわかるような気がするけど、これは仕様でもいいかな...

動作検証環境

  • MacOSX Leopard + Gentoo Prefix
  • Gentoo Linux

検証環境がマニアックなのは謝る。検証になってないかもな。

実装予定の機能

  • Google ReaderのAPIでできること
  • ピン立てて、外部ブラウザでぐぁーって開くやつ(LDRのパクリだね)

とりあえず、Google Readerの機能を実装していって、安定したら、TUIならではな感じの機能を模索していきたい。

バグ報告とか

blogシステムの開発の方はサボってるので、コメント機能とかないし、不具合とか要望とか、その他なにかあれば、ryuji@mgiken.comに直接メールで。励ましのお便り募集中。

Enjoy your terminal life!

Google ReaderのTUIフロントエンドをつくるよ

ターミナルで動くGoogle Readerのフロントエンドを開発中。

自分に必要なものをつくるというプログラミングの本質に迫ると、ニッチにならざるを得ない。人生の半分をターミナルの中で過ごす人たちには、たまらないキラーアプリになるはず。人生の3分の2をemacsで過ごす人たちはスルーでおk。

とりあえず、まだまだ機能不足で実用には耐えられないけど、公開してみた。

http://github.com/ryuji/scoop/tree/master

詳細はあとで書く。