Plagger::Plugin::Subscription::DeliciousInbox
いらなくなりました!ヽ(´ー`)ノやったぜ!
del.icio.usのinboxの更新があまりに遅いのでやっつけた。TT? 何それ? 当然del.icio.us側の更新が早くなればいらなくなります。Publish::Planetのdel.icio.us風skinは気が向いたら作ります。jが頭に付く人はPPP::HatenaBookmarkに流し込むと幸せになります。
酔っぱらいのコードなので明日にでも変数名とか見直そう…。多少見直した。あとdel.icio.us風というかコピペのskinもあるけど、PPP::Planetの日本語対応ができてないっぽい+この数日で直りそうな予感なのでこっちは放置。PPP::Planetはサニタイズ放棄すれば通ります。
DeliciousInbox.pm
package Plagger::Plugin::Subscription::DeliciousInbox; use strict; use base qw( Plagger::Plugin ); sub register { my($self, $context) = @_; $context->register_hook( $self, 'subscription.load' => \&load, ); } sub load { my($self, $context) = @_; my $inbox_list = $self->conf->{inbox}; $inbox_list = [ $inbox_list ] unless ref $inbox_list; for my $config (@$inbox_list) { if (!ref($config)) { $config = { url => $config }; } for my $fav (@{$self->extract($config->{url})}) { my $feed = Plagger::Feed->new; $feed->url($fav) or $context->error("Feed URL is missing"); $context->subscription->add($feed); } } } sub extract { my($self, $url) = @_; my $ua = Plagger::UserAgent->new; my $res = $ua->fetch($url); if ($res->is_error) { Plagger->context->log(error => "Error fetching $url"); return; } my @result; for my $fav_id ($res->content =~ m|<div> <a href\=\"http://del\.icio\.us/([^\"]+)\">.*?</a>|gim) { push @result, "http://del.icio.us/rss/$fav_id"; } return \@result; } 1;
config.yaml
global: plugin_path: - /Users/ec/lib/Plagger/Plugin timezone: Asia/Tokyo plugins: - module: Subscription::DeliciousInbox config: inbox: - url: http://del.icio.us/inbox/fuba - module: Aggregator::Simple - module: Filter::DeliciousFeedTags - module: SmartFeed::All rule: module: Fresh duration: 3600 config: title: fuba - module: Publish::Planet rule: expression: $args->{feed}->id eq 'smartfeed:all' config: assets_path: /Users/ec/lib/Plagger/Template/plugins/publish-planet dir: /Users/ec/Sites/planet/ skin: delicious template: members_list: 0 - module: Publish::Feed rule: expression: $args->{feed}->id eq 'smartfeed:all' config: dir: /Users/ec/Sites/planet