Ticket #171: LivedoorWeather.pm.txt

Line 
1 package Plagger::Plugin::Filter::LivedoorWeather;
2 use strict;
3 use base qw(Plagger::Plugin);
4
5 sub register {
6     my($self, $context) = @_;
7
8     $context->register_hook(
9         $self,
10         'update.feed.fixup' => \&filter,
11     );
12 }
13
14 sub filter {
15     my($self, $context, $args) = @_;
16
17     return unless $args->{feed}->url =~ m|^http://weather.livedoor.com/forecast/rss/|;
18     $context->log(debug => "Found LivedoorWeather feed " . $args->{feed}->url);
19
20     for my $entry ($args->{feed}->entries) {
21
22         # strip PR entry
23         if (grep { $_ eq 'PR'} @{$entry->tags}) {
24             $context->log(info => "Strip PR entry " . $entry->link);
25             $args->{feed}->delete_entry($entry);
26             next;
27         }
28
29         # fix title
30         $entry->title(join(' - ', (split ' - ', $entry->title)[1..2]));
31
32         # replace pubDate with forcast day
33         my ($year, $month, $day) = $entry->link =~ m|(\d{4})(\d{2})(\d{2})$|;
34         $entry->date->set(
35             year  => $year,
36             month => $month,
37             day   => $day,
38         );
39
40         # add link to the entry body
41         $entry->body($entry->body.' '.$entry->link);
42     }
43 }
44
45 1;