2006年04月05日 19:14 [Edit]

perl - 成はてブん析

さらに調子にのって、こんなものもこさえてみた。Bookmarkletの方はBookmarklet Generatorで作成。


CGIの方のソースはこんな。

#!/usr/local/bin/perl -Tw
use strict;
use CGI;
use LWP::Simple;
use HTML::Entities;
use HTML::LinkExtor;
my %keywords;
my $uri = decode_entities( $ENV{PATH_INFO} || $ENV{HTTP_REFERER} ); 
$uri =~ s,^/,,o;
my $rss_root = "http://b.hatena.ne.jp/entry/rss/";
my $content = get($rss_root . $uri);
my ($title) = ($content =~ m{<title>(.*?)</title>}xmso);
$title =~ s/^.*?-\s+//o;
$title ||= $uri;
my $total = ($content =~ s{ <dc:subject>(.*?)</dc:subject> }
             { $keywords{ lc($1) }++ }egxms );
my $q = CGI->new;
print 
    $q->header(-charset => 'UTF-8'),
    $q->start_html("成はてブん析:$uri");

for my $k (sort {$keywords{$b} <=> $keywords{$a}} keys %keywords){
    my $ratio = sprintf "%2.0f", 100*$keywords{$k}/$total;
    print 
        qq(<b><a href="$uri">$title</a></b>の$ratio%は),
        qq(<a href="http://b.hatena.ne.jp/t/$k">$k</a>で出来ています<br>\n);
}
print $q->end_html();
__END__

見てのとおり、REFERERも見ているので、任意のページに上記リンク(bookmark版でない方)を張っておくだけで、成はてブん析をいつでも見れます。とはいえ、この通りソースもあるので、自前のWeb Serverがある人は各自自分でやってください。

たとえば、「Inside Hatena Bookmark's Backend の資料」を成はてブん析すると、こんな感じになります。

さてと。そろそろ東京に帰るか。

Dan the Decomposed Man


この記事へのトラックバックURL