package Plagger::Plugin::Subscription::YahooJ; use strict; use base qw( Plagger::Plugin ); use YahooJ::Search; sub register { my($self, $context) = @_; $context->register_hook( $self, 'subscription.load' => \&load, 'aggregator.aggregate.yahooj' => \&search, ); } sub load { my($self, $context, $args) = @_; my $keywords = $self->conf->{keyword}; $keywords = [ $keywords ] unless ref($keywords) eq 'ARRAY'; for my $keyword (@{ $keywords }) { my $feed = Plagger::Feed->new; $feed->type('yahooj'); $feed->meta({ keyword => $keyword }); $context->subscription->add($feed); } } sub search { my($self, $context, $args) = @_; my $f = $args->{feed}; my $results = $self->conf->{results} || 20; my $yahoo = YahooJ::Search->Query(METHOD => 'Web', appid => 'Plagger-YJ', query => $f->meta->{keyword}, results => $results); my $feed = Plagger::Feed->new; $feed->title('Yahoo Japan Search for "' . $f->meta->{keyword} . '"'); $feed->url('http://search.yahoo.co.jp/search?q=' . $f->meta->{keyword}); $feed->link($feed->url); $feed->language('ja'); my $format = DateTime::Format::Strptime->new(pattern => '%Y-%m-%d %H:%M:%S'); foreach ($yahoo->Results) { my $entry = Plagger::Entry->new; $entry->title($_->{Title}); $entry->link($_->{Url}); $entry->body($_->{Summary}); my $dt = DateTime->from_epoch( epoch => $_->{ModificationDate} ); $dt->set_time_zone($context->conf->{timezone}); $entry->date( Plagger::Date->parse($format, $dt->ymd . ' ' . $dt->hms) ); $feed->add_entry($entry); } $context->log(info => $feed->{keyword} . " success: " . $feed->count . " entries."); $context->update->add($feed); } 1; __END__ =head1 NAME Plagger::Plugin::Subscrption::YahooJ - Subscription from YWS =head1 SYNOPSIS - module: Subscription::YahooJ config: results: 25 keyword: - plagger - yappo =head1 DESCRIPTION This plugin creates Subscription by fetching YWS. =head1 AUTHOR Kazuhiro Osawa =head1 SEE ALSO L, L, L =cut