package Plagger::Plugin::CustomFeed::Mailman; use strict; use base qw( Plagger::Plugin ); use List::Util qw(min); use DateTime::Locale; use Encode; use Plagger::UserAgent; sub register { my($self, $context) = @_; $context->register_hook( $self, 'customfeed.handle' => \&handle, ); } sub handle { my($self, $context, $args) = @_; if ($args->{feed}->url =~ m!/pipermail/[^/]+/$!) { $self->aggregate($context, $args); return 1; } return; } sub aggregate { my($self, $context, $args) = @_; my $url = $args->{feed}->url; $url .= '/' unless $url =~ m!/$!; my $now = Plagger::Date->now; $now->set_locale('en_us'); my $base_url = $url . $now->year . '-' . $now->month_name . '/'; $url = $base_url . 'date.html'; $context->log(info => "GET $url"); my $agent = Plagger::UserAgent->new; my $response = $agent->get($url); unless ($response->is_success) { $context->log(error => "GET $url failed: " . $response->status_line); return; } my $content = $response->content; my $encoding = ($content =~ /log(warn => $@); } my $year = $now->year; # TODO: only tested with ja and en localization my $month = join '|', @{ DateTime::Locale->load('en_us')->month_names }; my $title = ($content =~ /