/usr/local/CPAN/Plagger/Plagger/Plugin/Subscription/2chThreadList.pm


package Plagger::Plugin::Subscription::2chThreadList;
use strict;
use base qw( Plagger::Plugin );

use URI;
use Plagger::UserAgent;

sub register {
    my($self, $context) = @_;

    $context->register_hook(
        $self,
        'subscription.load' => \&load,
    );
}

sub load {
    my($self, $context) = @_;

    my $threadlists = ref($self->conf->{url}) ? $self->conf->{url} : [ $self->conf->{url} ]
        or $context->error('ThreadList url is missing');

    my $agent = Plagger::UserAgent->new;

    for my $threadlist (@$threadlists) {
	my $remote = eval { $agent->fetch_parse($threadlist) }
            or $context->error("feed parse error: $@");
	for my $r ($remote->entries) {
	    $context->log(info => "thread: ". $r->link);

	    my $feed = Plagger::Feed->new;
	    $feed->url($r->link);
	    $feed->link($r->link);
	    $feed->title($r->title);
	    $context->subscription->add($feed);
	}
    }
}

1;