2006-10-16
「はてなブックマーク件数取得API」の(複数指定可能/50件まで)に対処したdiff
(追記:no titleで訂正されてcommitされた)
配列を50件ずつspliceしてpushしてるけど、これで良いのかどうか聞きたいところ。(配列をn件ずつ取り出して処理する方法って、Perl Cookbookとかに載ってそうだな……)
diffの大半はインデントの修正。
はてなAPIの制限についてははてなブックマーク件数取得APIとは - はてなキーワードを参照。
=== lib/Plagger/Plugin/Filter/HatenaBookmarkUsersCount.pm ================================================================== --- lib/Plagger/Plugin/Filter/HatenaBookmarkUsersCount.pm (revision 1658) +++ lib/Plagger/Plugin/Filter/HatenaBookmarkUsersCount.pm (local) @@ -16,24 +16,30 @@ my($self, $context, $args) = @_; my @permalink = map $_->permalink, $args->{feed}->entries; + my @permalinks = (); + while (@permalink) { + push @permalinks, [ splice(@permalink, 0, 50) ]; + } - $context->log(info => 'Requesting XMLRPC call to Hatena Bookmark with ' . scalar(@permalink) . ' link(s)'); + for my $urls (@permalinks) { + $context->log(info => 'Requesting XMLRPC call to Hatena Bookmark with ' . scalar(@$urls) . ' link(s)'); - my $map = XMLRPC::Lite - ->proxy('http://b.hatena.ne.jp/xmlrpc') - ->call('bookmark.getCount', @permalink) - ->result; + my $map = XMLRPC::Lite + ->proxy('http://b.hatena.ne.jp/xmlrpc') + ->call('bookmark.getCount', @$urls) + ->result; - unless ($map) { - $context->log(warn => 'Hatena Bookmark XMLRPC failed'); - return; - } + unless ($map) { + $context->log(warn => 'Hatena Bookmark XMLRPC failed'); + return; + } - $context->log(info => 'XMLRPC request success.'); + $context->log(info => 'XMLRPC request success.'); - for my $entry ($args->{feed}->entries) { - if (defined(my $count = $map->{$entry->permalink})) { - $entry->meta->{hatenabookmark_users} = $count; + for my $entry ($args->{feed}->entries) { + if (defined(my $count = $map->{$entry->permalink})) { + $entry->meta->{hatenabookmark_users} = $count; + } } } }
n件ずつ切り出して処理は
while (my @links = splice(@permalink, 0, 50)) { # @links }
こんなのでOkだ。
ちゅーことでsvk revertした。
Mac OS Xでブラウザのキャプチャーを見せて説明するのであれば、cmd+option+shift+4とかよりもwebkit2pngを使った方が手っ取り早いな
webkit2pngから。
% cd /usr/local/bin/ % curl 'http://www.paulhammond.org/2005/08/webkit2png/webkit2png-0.4.txt' -o webkit2png % chmod +x webkit2png
で導入。
あとは
% webkit2png -F 'http://www.hatena.ne.jp/'
とかすればキャプチャーできる。
GUIツールの方が良い人はPaparazzi!の詳細情報 : Vector ソフトを探す!で。
「自分のMixi日記を元ネタにして外部のblogで使いたい」という要求を見たのでCustomFeed::Mixiの修正案を作った
Logについては単なるインデント揃え。
=== lib/Plagger/Plugin/CustomFeed/Mixi.pm ================================================================== --- lib/Plagger/Plugin/CustomFeed/Mixi.pm (revision 1641) +++ lib/Plagger/Plugin/CustomFeed/Mixi.pm (local) @@ -30,11 +30,18 @@ get_list => 'parse_list_comment', }, Log => { - start_url => 'http://mixi.jp/show_log.pl', - title => 'ミクシィ足跡', - get_list => 'parse_show_log', - icon_re => qr/[^_]id=(\d+)/, + start_url => 'http://mixi.jp/show_log.pl', + title => 'ミクシィ足跡', + get_list => 'parse_show_log', + icon_re => qr/[^_]id=(\d+)/, }, + MyDiary => { + start_url => 'http://mixi.jp/list_diary.pl', + title => 'ミクシィ日記', + get_list => 'parse_list_diary', + get_detail => 'get_view_diary', + icon_re => qr/owner_id=(\d+)/, + }, + Calendar => { + start_url => 'http://mixi.jp/show_calendar.pl', + title => 'ミクシィカレンダー', + get_list => 'parse_show_calendar', + get_detail => 'get_view_event', + }, }; sub plugin_id { @@ -254,7 +267,7 @@ With this option set, you can set the feed types. -Now supports: RecentComment, FriendDiary, and Message. +Now supports: RecentComment, FriendDiary, Message, Log, MyDiary, and Calendar. Default: FriendDiary.
コメント
トラックバック - http://subtech.g.hatena.ne.jp/otsune/20061016
