#!/usr/bin/perl use strict; use warnings; use XML::Simple; use LWP::UserAgent; use Template; use Encode; our $VERSION = 0.4; my $file = '/path/to/bm.txt'; my $username = 'your username'; my $base_uri = 'http://b.hatena.ne.jp/' . $username; my $req = HTTP::Request->new(GET => $base_uri . '/atomfeed'); my $ua = LWP::UserAgent->new; $ua->agent( join('/', 'Taro HB Hetcher (http://sky.taro-web.com/2005/07/08/000459)', $VERSION) ); $ua->timeout(20); my $res = $ua->request($req); if($res->is_success){ my $data = XMLin( $res->content, ForceArray => 1); my $b_title = $data->{link}->[1]->{title}; my $tt = Template->new({ ABSOLUTE => 1, FILTERS => { encode => sub { my $text = shift; if ( Encode::is_utf8($text) ) { utf8::encode($text); } return $text; }, } }) or die Template->error(), "\n"; my $num = @{$data->{entry}}; for ( my $i = 0; $i < $num; $i++ ) { foreach my $key ( keys %{$data->{entry}->[$i]} ) { if ( $key eq 'dc:subject' ) { $data->{entry}->[$i]->{tag} = [@{$data->{entry}->[$i]->{$key}}]; } } } my $output; $tt->process( \*DATA, { base => $base_uri, data => $data }, \$output, ) or die $tt->error(); if ( Encode::is_utf8($text) ) { utf8::encode($text); } open (TXT, "> $file") or die "Can't open file $file:$!"; print TXT $output; close(TXT); } __DATA__ [% FOREACH d = data.entry %] [% LAST IF loop.count > 5 %]
[% IF d.tag %] [% FOREACH t = d.tag %] [ [% t | encode | html %] ] [% END %] [% END %] [% IF d.summary.0.content %] [% d.summary.0.content | encode | html %] [% ELSE %] There is no comment. [% END %]
[% END %]