Changeset 343
- Timestamp:
- 03/06/06 16:18:12
- Files:
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/plagger/lib/Plagger/Plugin/Aggregator/Simple.pm
r276 r343 37 37 $context->log(debug => $response->status . ": $url"); 38 38 39 $self->handle_feed($url, \$response->content); 39 my $args = { content => $response->content }; 40 Plagger->context->run_hook('aggregator.filter.feed', $args); 41 42 $self->handle_feed($url, \$args->{content}); 40 43 } 41 44 trunk/plagger/lib/Plagger/Plugin/Filter/RSSTimeZoneString.pm
r256 r343 20 20 ); 21 21 22 my $tz_RE = join '|', keys %tz;22 my $tz_RE = join '|', keys %tz; 23 23 24 24 sub register { … … 26 26 $context->register_hook( 27 27 $self, 28 ' update.entry.fixup' => \&update,28 'aggregator.filter.feed' => \&filter, 29 29 ); 30 30 } 31 31 32 sub update{32 sub filter { 33 33 my($self, $context, $args) = @_; 34 my $entry = $args->{entry}->{feed_entry};35 34 36 ## only work with RSS 0.91/2.0 and XML::Feed (Aggregator::Simple) 37 return unless $entry && $entry->{entry} && $entry->{entry}->{pubDate}; 38 39 my $ts = $entry->{entry}->{pubDate}; 40 if ($ts =~ s/($tz_RE)$/$tz{$1}/) { 41 $context->log(info => "Fixing bad timezone $1 to $tz{$1}"); 42 43 require DateTime::Format::Mail; 44 my $parser = DateTime::Format::Mail->new; 45 $parser->loose; 46 my $date = $parser->parse_datetime($ts); 47 $args->{entry}->date( Plagger::Date->rebless($date) ); 35 while ($args->{content} =~ s!($tz_RE)</(pubDate|lastBuildDate)>!$tz{$1}</$2>!) { 36 $context->log(info => "Fixed bad timezone $1 to $tz{$1}"); 48 37 } 49 38 } … … 59 48 =head1 SYNOPSIS 60 49 61 - module: Filter::RSSTimeZoneString50 - module: Filter::RSSTimeZoneString 62 51 63 52 =head1 DESCRIPTION
