#!/Perl5.8/bin/perl.exe use LWP::Simple; use CGI qw(:cgi); use URI::Escape; ### 初期設定(デフォルト項目3箇所のみ設定してください) # 本CGIを置くパスの設定 my $cgi_path = "http://localhost/cgi-bin";# デフォルト # 検索パターンの取得 my $pattern = ".";# デフォルト if($ARGV[0]){ $pattern = $ARGV[0];# コマンドライン第1引数から }elsif(param('pattern')){ $pattern = param('pattern');# CGIのパラメータ、patternから } # usernameの取得 my $tw_user = "jscripter";# デフォルト if($ARGV[1]){ $tw_user = $ARGV[1];# コマンドライン第2引数から }elsif(param('tw_user')){ $tw_user = param('tw_user');# CGIのパラメータ、tw_userから } # ツイッタープロファイルのURLの取得 my $tw_url = "http://twitter.com/" . $tw_user; # ページを移動する際、再帰的に本CGIからURLを取得する場合にusernameを取得 if(param('tw_url')){ $tw_url = param('tw_url'); if($tw_url =~ /^http:\/\/twitter.com\/([^\?]+)$/){ $tw_user = $1;# CGIパラメータをURLが持たない場合 }elsif($tw_url =~ /^http:\/\/twitter.com\/(.+?)\?/){ $tw_user = $1;# CGIパラメータをURLが持つ場合 } } # 現在のページの取得 my $ppage = 0; # ページを移動する際、再帰的に本CGIからURLを取得する場合にページ数を取得 if($tw_url =~ /page=(\d+)/){ $ppage = $1; } # 次ページがない場合のフラグ(1: 次ページなし) my $nopage = 0; my $npage = 0;# 次ページ数 my $new_tw_url = "";# 次ページのURL my $escaped_next_url = "";# 次ページのURLの値をエスケープしたもの my $prevpage = 0;# 前ページ数 my $prev_tw_url = "";# 前ページのURL my $escaped_prev_url = "";# 前ページのURLの値をエスケープしたもの ### CGI 最初の部分の出力 print < HEADER ### # 読み込みURLのCGI出力 print "

${tw_url}

\n"; ### ツイートデータの取得 # LWP::Simpleのgetメソッドに入力するためのURL変換 $tw_url =~ s/\&/\&/g; # LWP::SimpleのgetメソッドでURLに対応するHTMLを得る my $tw = get($tw_url); # HTML中のツイート部分を個別に配列に格納 #
  • (.+?)<\/li.*?>/sg); # 次ページのURLを取得、現在のページ数の取得 if($tw =~ /" . $ppage . "\n"; print "
    "; ### ツイートのCGI出力 foreach (@status_bodys){ if(/>.*?$pattern.*?/<\/div>/sg; # @usernameや#hashtagの処理 # "/username"や"/search?q=#hashtag"のハイパーリンクを補完する s/(<.*?)href="(\/[^\/]+?)"/${1}href="http:\/\/twitter.com$2"/sg; print $_; } } ### print "
    \n"; print "
    "; ### ページの移動リンクのCGI出力 # 戻るページへのリンク表示 if($ppage > 1){ $prevpage = $ppage - 1; ($prev_tw_url = $next_tw_url) =~ s/page=\d+/page=${prevpage}/; $escaped_prev_url = uri_escape("http://twitter.com${prev_tw_url}"); print "${prevpage}ページへ戻る <---> "; } # 進むページへのリンク表示 if($nopage){ print "もうページはありません。\n";# 最後のページの場合 }else{ $escaped_next_url = uri_escape("http://twitter.com${next_tw_url}"); print "${npage}ページへ進む\n"; } ### # CGIの最後の部分の出力 print "
    \n\n\n"; __END__