w3m のローカル CGI として動く Twitter ビューアー
Twitter のフレンド・タイムラインを w3m を通して閲覧するだけの機能しか、この Perl スクリプトには、現在のところ、ありません。
このスクリプトの動作確認は、Fedora 10 そして openSUSE 11.1 で、しました。
このスクリプトのファイルは => http://purloinedletter.net/misc/apps/tw3m_cgi.utf8.txt
wassr 版はこちら => http://purloinedletter.net/misc/apps/was3m_cgi.utf8.txt
コードは以下。
#!/usr/bin/perl # tw3m.cgi: w3m のローカル CGI として動く # 簡易 Twitter ビューアー。 # # cp this_script_file ~/cgi-bin/tw3m.cgi # chmod +x ~/cgi-bin/tw3m.cgi # w3m file:///cgi-bin/tw3m.cgi # Enjoy! # # Last Update: 2009-07-06 01:42:04 . # Kim, Yi-Chul 金利哲 use warnings; use strict; use utf8; use LWP::UserAgent; use JSON; use Encode; # Twitter で使用しているメールアドレス、パスワードを設定します。 my $username = 'hoge'; my $password = 'hogehoge'; # 何件のステータスを取得するかを設定します。 # 200 件までが推奨されています。 my $number_of_count = 100; # Twitter API を通じて タイムラインの JSON 形式の # データを取得します。 my $friend_timeline_data = &get_content($username, $password, $number_of_count); # 取得した JSON データを Perl のデータに変換します。 my $status = decode_json $friend_timeline_data; # HTML を出力します。 # HTML ヘッダー。 &header_html; # フレンド・タイムラインのデータを基にして # HTML を作成します。 foreach my $status (@$status) { print "<li>"; # フレンドの画像の URI を取得します。 my $image_uri = "$status->{user}->{profile_image_url}"; print "<img src=$image_uri> "; # 名前を表示します。 print "<b> $status->{user}->{screen_name} </b>: "; # ステータスを UTF8 でエンコードします。 my $text = encode('utf8', $status->{text}); print "$text"; # ステータス ID も、ついでに、出力します。 print " ( $status->{id} )"; print "</li>"; } # HTML フッター。 &footer_html; sub get_content { my ($uname, $pass, $count) = @_; my $api_uri = 'http://twitter.com/statuses/friends_timeline.json?count='; $api_uri = $api_uri . $count; my $ua = LWP::UserAgent->new; $ua->timeout(60); # タイムアウトする秒数を設定します。 require HTTP::Request; my $req = HTTP::Request->new(GET => $api_uri); # authorization_basic で認証用に # ユーザーネーム・パスワードを設定します。 $req->authorization_basic($uname, $pass); # Twitter API からのレスポンスを取得します。 my $res = $ua->request($req); # レスポンスから JSON 形式のデータ内容を抽出します。 my $content = $res->content; return $content; } sub header_html { print <<"HERE"; Content-type: text/html;charset=UTF-8 <html>\n <body>\n <ul>\n HERE } sub footer_html { print <<"HERE"; </ul>\n </body>\n </html>\n HERE }