MVCその4.1
ちょっと続き。
CGIで動くようにtag_search.cgiを修正した。
ついでに、はてなブックマーク数の画像APIを見つけたので、使ってみる。
自分のブログに「○○users」を表示する
lib/MyHatena/Tag.pm
# 変更点 my $HATENA_USERS_API = 'http://b.hatena.ne.jp/entry/'; my $HATENA_USERS_IMG_API = 'http://b.hatena.ne.jp/entry/image/'; sub _parse_xml { my $class = shift; my ($xml_ref) = validate_pos(@_, { type => SCALARREF }); my $parser = XML::Simple->new; my $xml; eval { $xml = $parser->XMLin($$xml_ref) }; die $@ if $@; my @entries; for my $entry (@{$xml->{item}}) { push @entries, $class->new({ title => encode('utf8', $entry->{title}), link => $entry->{link}, users_link => $HATENA_USERS_API.$entry->{link}, users_img => $HATENA_USERS_IMG_API.$entry->{link}, }); } return @entries; }
template/result.html
[% FOREACH entry IN result -%] <li><a href="[% entry.link %]">[% entry.title | html %]</a><!-- --><a href="[% entry.users_link %]"><img src="[% entry.users_img %]" style="border:0;"></a></li> [% END -%]
tag_search4.cgi
#!/usr/local/bin/perl # tag_search4.cgi use strict; use warnings; use CGI qw/:standard/; use FindBin::libs; use MyHatena::Tag; use Template; my $q = CGI->new; print header( -type => 'text/html', -charset => 'utf-8' ); my ($tmpl, $vars); if (defined $q->param('search_tag')) { my $query = $q->param('search_tag'); my $result = MyHatena::Tag->search($query) or die "Can't search by [$query]."; $tmpl = '/Users/rightgo09/Script/Perl/template/result.html'; $vars = { result => [$result->entries], search_tag => $query, }; } else { $tmpl = '/Users/rightgo09/Script/Perl/template/index.html'; $vars = {}; } # Rendering TT my $template = Template->new(ABSOLUTE => 1); $template->process($tmpl, $vars, \my $out) or die $template->error; print $out; __END__
うーん。できたのはいいけど、これすごいリクエスト飛んでるよなー。
RSSにも入ってないし、取得するんだったらこんな方法しかないんかな。