たろマーク (はてなブックマーク)
-
[ moinmoin ]
-
[ upstart ] プロセス監視して死んでも蘇らせてくれるのか。
■ CustomFeed::HatenaDiaryRSS
はてなダイアリを private mode で使ってる友達がいて、それも plagger で読めたらいいよね、ということで作ってみた。
package Plagger::Plugin::CustomFeed::HatenaDiaryRSS;
use strict;
use warnings;
use base qw( Plagger::Plugin );
use WWW::Hatena::Scraper;
use XML::Feed;
sub register {
my ( $self, $context ) = @_;
$context->register_hook( $self, 'subscription.load' => \&load, );
}
sub load {
my ( $self, $context ) = @_;
my $feed = Plagger::Feed->new;
$feed->aggregator( sub { $self->aggregate(@_) } );
$context->subscription->add($feed);
}
sub aggregate {
my ( $self, $context, $args ) = @_;
my $whs = WWW::Hatena::Scraper->new;
my $username = $self->conf->{username};
my $password = $self->conf->{password};
$whs->login( $self->conf->{username}, $self->conf->{password} )
or $context->log( warn => "Hatena login failed" );
my $content = $whs->get_content("http://d.haetna.ne.jp/");
my $rk = $whs->rk;
my $whs2 = WWW::Hatena::Scraper->new;
$whs2->login($rk)
or $context->log( warn => "Cookie is invalid or expired!" );
my $uri = 'http://d.hatena.ne.jp/' . $self->conf->{target} . '/rss';
$content = $whs->get_content($uri);
my $datas = eval { XML::Feed->parse( \$content ) };
unless ($datas) {
$context->log( error => "Error loading feed $uri: "
. ( $@ || XML::Feed->errstr ) );
return;
}
my $feed = Plagger::Feed->new;
$feed->type('hatena-diary');
$feed->title( $datas->title );
$feed->link($uri);
for my $data ( $datas->entries ) {
my $url = $data->link or next;
my $entry = Plagger::Entry->new;
$entry->title( $data->title );
$entry->link( $data->link );
$entry->author( $data->author );
$entry->body( $data->content->body );
$feed->add_entry($entry);
}
$context->update->add($feed);
}
1;
yaml はこんな感じ。
- module: CustomFeed::HatenaDiaryRSS
config:
username: your id
password: your password
target: target id
もちろん、id で許可されてないと読めません。
これちょっと変えるとはてブでも使えたりするんだけど、モジュール名がいい名前浮かばなかったので('-';)
CustomFeed::HatenaRSS だと、はてな RSS ?とか思っちゃうし。あー、ターゲットをリストできるといいよね。何より同じ事してる plugin がないか心配w
ちなみにあちこち参考にさせていただきました。あちこち参考にしすぎてそれと言えなくなってます(;'-')
WWW::Hatena::Scraper の部分は、Synopsis まんま('-';)
追記
miyagawa さんから反応いただきました。
subtechグループ - Bulknews::Subtech - [Plagger] RSS with Authentication
はてなダイアリにログインした状態の Cookie ファイルをつくって (firefox か w3m など)
(省略)で、できるはず。
Cookies について理解してませんでした(;'-')
また無駄な苦労を orz






