twittershellのちょっとした改造
twittershellのちょっとした改造
GTalkとの連携がしょっちゅういかれる今日このごろ,Twitterユーザの皆様にはいかがおすごしでしょうか(笑
あんまりにも落ちるので,私はtwittershellを使い始めました.このスクリプトは牧さんが作られたTwitter::Shell - Twitter From Your Shell! - metacpan.orgに付属しているツールで,コンソールからTwitterにアクセスすることができます.これを実行して"ft"とかコマンドするとfriend_timelineを実行してフレンドリストに載ってる人のステータスを新しい物から順に表示してくれます.環境にもよるでしょうが,日本語出力もokです.
だがしかし
一々"ft"とか入力するのがメンドクサイので10秒毎に勝手に"ft"か"pt" (public_timeline)を実行してくれるコマンドを追加してみました.Twitter::Shell::Shellにこんなパッチを充てています.
*** original Fri Apr 20 18:44:44 2007 --- /usr/local/lib/perl5/site_perl/5.8.8/Twitter/Shell/Shell.pm Fri Apr 20 18:09:26 2007 *************** *** 6,11 **** --- 6,12 ---- package Twitter::Shell::Shell; use strict; use warnings; + no warnings qw(redefine); use base qw(Term::Shell); sub context { shift->_elem('context', @_) } *************** *** 30,35 **** --- 31,37 ---- my $ret = $c->$method(@_); if ($ret) { + print '-' x 60,"\n" if ($self->{API}{check_idle}); print "$cmd ok\n\n"; } else { print "Command $cmd failed :(\n\n"; *************** *** 88,93 **** --- 90,96 ---- sub help_friends_timeline {} *run_ft = \&run_friends_timeline; + sub smry_ft { "alias to friends_timeline" } sub help_ft {} *************** *** 124,127 **** --- 127,156 ---- sub smry_followers { "display followers' status" } sub help_followers {} + sub run_ftloop + { + my $self = shift; + $self->{API}{check_idle} = 10; + *idle = \&run_friends_timeline; + } + sub smry_ftloop { "loops friend_timeline every 10 seconds" } + sub help_ftloop {} + + sub run_ptloop + { + my $self = shift; + $self->{API}{check_idle} = 10; + *idle = \&run_public_timeline; + } + sub smry_ptloop { "loops public_timeline every 10 seconds" } + sub help_ptloop {} + + sub run_end + { + my $self = shift; + $self->{API}{check_idle} = 0; + } + sub smry_end {"end ftloop or ptloop" } + sub help_end {} + 1;
あれ,なんかゴミな空行が入ってる・・・ 本題に関係ないからいいや(笑.使ってみてると,たまにAPI叩くのに失敗しているようです.
おまけ
twittershellを使っていると,環境によっては日本語入力したときに文字化けします."?????"みたいな感じ.これは,Twitter::Shellが使ってるTerm::ReadLineのせいです.Term::ReadLine::Gnuをインストールして,正しく日本語表示ができるようにするとストレスフリーな世界に近寄ることができます.そうそう,Term::ReadLine::Gnuをインストールするためには,事前にreadlineライブラリをGNUがら落としてインストールする必要があります.んでもって,Term::ReadLineがTerm::ReadLine::Gnuを呼び出すためには,環境変数といてPERL_RLをGnuにセットする必要があります.
export PERL_RL=Gnu
こんな感じ.
追加(Apr 22 2007)
Intel MacOSX 10.4.9 でのTerm::ReadLine::Gnuインストールはうまくいってたんですが,ppc MacOSX 10.4.9でのインストールができません.
Failed Test Stat Wstat Total Fail List of Failed ------------------------------------------------------------------------------- t/callback.t 2 512 7 12 2-7 t/history.t 2 512 82 162 2-82 t/readline.t 2 512 104 206 2-104 Failed 3/3 test scripts. 190/193 subtests failed. Files=3, Tests=193, 0 wallclock secs ( 0.24 cusr + 0.08 csys = 0.32 CPU) Failed 3/3 test programs. 190/193 subtests failed. make: *** [test_dynamic] Error 2 HAYASHI/Term-ReadLine-Gnu-1.16.tar.gz /usr/bin/make test -- NOT OK Failed during this command: HAYASHI/Term-ReadLine-Gnu-1.16.tar.gz : make_test NO
う〜ん,何だこりゃ