Hatena::ブログ(Diary)

”><xmp>TokuLog 改メ tokuhirom’s blog このページをアンテナに追加 RSSフィード

WWW::Mechanize::AutoPager を wedata 対応にするパッチ

http://perl-mongers.org/2008/06/autopagerize-twitter-using-wedata.html をみていて、とりあえず WWW::Mechanize::AutoPager の側が古い情報をみているのは実にケシカランとおもったので、パッチをつくってみましたがどうでしょうか。

互換性はなくてもいいかなーとおもったのですが、ブラジルの方角から全力で DIS られそうなので、content_type をみてふりわけるようにしてみました。

=== Makefile.PL
==================================================================
--- Makefile.PL (revision 15698)
+++ Makefile.PL (local)
@@ -5,6 +5,7 @@
 requires 'HTML::AutoPagerize';
 requires 'WWW::Mechanize';
 requires 'WWW::Mechanize::DecodedContent';
+requires 'JSON' => 2.09;
 
 build_requires 'Test::More';
 use_test_base;
=== lib/WWW/Mechanize/AutoPager.pm
==================================================================
--- lib/WWW/Mechanize/AutoPager.pm      (revision 15698)
+++ lib/WWW/Mechanize/AutoPager.pm      (local)
@@ -7,6 +7,7 @@
 use HTML::AutoPagerize;
 use Scalar::Util qw( weaken );
 use WWW::Mechanize::DecodedContent;
+use JSON;
 
 sub WWW::Mechanize::autopager {
     my $mech = shift;
@@ -36,14 +37,20 @@
 
 sub load_siteinfo {
     my $self = shift;
-    my $url  = shift || "http://swdyh.infogami.com/autopagerize";
+    my $url  = shift || "http://wedata.net/databases/AutoPagerize/items.json";
 
-    $self->{mech}->get($url);
+    my $res = $self->{mech}->get($url);
 
-    if (my $html = $self->{mech}->content) {
-        while ($html =~ m!<textarea class="autopagerize_data".*?>\s*(.*?)\s*</textarea>!gs) {
-            my $site = $self->parse_siteinfo($1);
-            $self->{autopager}->add_site(%$site);
+    if (my $content = $self->{mech}->content) {
+        if ($res->content_type =~ m{text/html}) { # backward compatibility
+            while ($content =~ m!<textarea class="autopagerize_data".*?>\s*(.*?)\s*</textarea>!gs) {
+                my $site = $self->parse_siteinfo($1);
+                $self->{autopager}->add_site(%$site);
+            }
+        } else {
+            for my $row ( @{ from_json( $content ) } ) {
+                $self->{autopager}->add_site(%{ $row->{data} });
+            }
         }
     }
 }

投稿したコメントは管理者が承認するまで公開されません。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/tokuhirom/20080605/1212683828