Furlを使ってみた。

tokuhirom氏作成のモジュールFurlを使ってみた。


ニコ動の毎時のランキングを 20個分表示するという単純なもの。
まあこんな単純なものではそこまで影響が出るわけでないので
あれですが、LWP::UserAgentのインタフェースみたく使えるから、
LWP::UserAgentのものを差し替えるのは難しくはないと思う。


WWW::Curlを使うという選択肢もあるんだろうけど、あれは
使い方が LWP::UserAgentとは大きく違うんでね。差し替え用と
すると libcurlのサイトみてオプション調べてってしないと
いけないけど、Furlならそんなことはなさそうな感じ。
いろいろと機能を利用とすると違うのかもしれないけどね。

#!/usr/bin/env perl
use strict;
use warnings;

use Furl;
use Encode;
use XML::RSS::LibXML;

my $url = 'http://www.nicovideo.jp/ranking/fav/hourly/all?rss=2.0';

my $furl = Furl->new(
    agent => 'NicoNicoRSSDownloader',
    timeout => 10,
);

my $res = $furl->get($url);
unless ($res->is_success) {
    die "Can't download $url\n";
}

my $decoded = decode_utf8($res->content);

my $parser = XML::RSS::LibXML->new;

eval {
    $parser->parse($decoded);
};
if ($@) {
    die "Can't parse RSS : $url\n";
}

for my $item (@{$parser->{items}}[0..19]) {
    my $title = encode_utf8($item->{title});
    print $title, "\n";
}

結果

第1位:そんなニコニコ動画流星群で大丈夫か?【エルシャダイ】
第2位:俺の妹がこんなに可愛いわけがない 第7話「俺の妹がこんなに小説家なわけがない」
第3位:ふしぎなくすり かけられて ▼
第4位:【暴徒】 マトリョシカ 踊っていた 【と暴徒】
第5位:【MAD】 化物語 〜凛として咲く花の如く〜
第6位:「名探偵コナンのキック力増強シューズを作ってみた」前編
第7位:すまたギター
第8位:男3人で Perfume - ねぇ を踊ってみた
第9位:【マトリョシカ×エルシャダイ】マトシャダイ【PV】
第10位:[公式アニメ]カッコカワイイ宣言! 第3話
第11位:五条さん
第12位:【神々のトライフォース】光条の輝、闇条の響! part1【ゼルダの実況】
第13位:どんな判断だww見切りが早いにもほどがあるゴールキーパー
第14位:エロイプでおっさん釣ったら超ナルシストだった♥
第15位:【MUGEN】大乱闘!強以上際限無しトーナメントPart49【強〜神クラス】
第16位:イーノックが地底に潜りました【東方×エルシャダイ】
第17位:Panty&Stocking with Garterbelt 第12話 トランスホーム 第13話 現金に裸体を張れ
第18位:Until the Bitter End 歌ってみた__
第19位:起きろ、腹減った
第20位:【ゆっくり実況】Dead Space Level.22

心持ちレスポンスはいいかな。