otsune's SnakeOil RSSフィード

python -c "print''.join([chr(x) for x in 111&1101,110+~-~11,10^11*11,110+~-~11,-~101,-~11^11*11,~-110,111&11*11,11+11+10,11|~-0110,1-~11^11*11,10^11*11,-~11^11*11,110,101])"

2006-10-16

「はてなブックマーク件数取得API」の(複数指定可能/50件まで)に対処したdiff

「はてなブックマーク件数取得API」の(複数指定可能/50件まで)に対処したdiff - otsune's SnakeOil  を含むブックマーク はてなブックマーク - 「はてなブックマーク件数取得API」の(複数指定可能/50件まで)に対処したdiff - otsune's SnakeOil  「はてなブックマーク件数取得API」の(複数指定可能/50件まで)に対処したdiff - otsune's SnakeOil  のブックマークコメント

(追記: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を使った方が手っ取り早いな

Mac OS Xでブラウザのキャプチャーを見せて説明するのであれば、cmd+option+shift+4とかよりもwebkit2pngを使った方が手っ取り早いな - otsune's SnakeOil  を含むブックマーク はてなブックマーク - Mac OS Xでブラウザのキャプチャーを見せて説明するのであれば、cmd+option+shift+4とかよりもwebkit2pngを使った方が手っ取り早いな - otsune's SnakeOil  Mac OS Xでブラウザのキャプチャーを見せて説明するのであれば、cmd+option+shift+4とかよりもwebkit2pngを使った方が手っ取り早いな - otsune's SnakeOil  のブックマークコメント

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の修正案を作った

「自分のMixi日記を元ネタにして外部のblogで使いたい」という要求を見たのでCustomFeed::Mixiの修正案を作った - otsune's SnakeOil  を含むブックマーク はてなブックマーク - 「自分のMixi日記を元ネタにして外部のblogで使いたい」という要求を見たのでCustomFeed::Mixiの修正案を作った - otsune's SnakeOil  「自分のMixi日記を元ネタにして外部のblogで使いたい」という要求を見たのでCustomFeed::Mixiの修正案を作った - otsune's SnakeOil  のブックマークコメント

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