Plagger
view release on metacpan or search on metacpan
lib/Plagger/Plugin/CustomFeed/Frepa.pm view on Meta::CPAN
Plagger->context->log(info => "Fetch icon from $url");
$self->cache->get_callback(
"icon-$url",
sub { $self->get_top($url) },
'1 day',
);
}
sub login {
my $self = shift;
my %args = @_;
my $start_url = 'http://www.frepa.livedoor.com/';
my $res = $self->{mech}->get($start_url);
return unless $self->{mech}->success;
if ($self->{mech}->content =~ /loginside/) {
unless ($args{livedoor_id} && $args{password}) {
Plagger->context->log(error => "Error logging in using existent Cookies. Your User-Agent (" . $self->{mech}->agent . ") should strictly match with the UA used with the Cookies.");
return;
}
Plagger->context->log(debug => "cookie not found. logging in");
$self->{mech}->submit_form(
fields => {
livedoor_id => $args{livedoor_id},
password => $args{password},
auto_login => 'on',
},
);
$self->{mech}->submit;
return unless $self->{mech}->success;
return if $self->{mech}->content =~ /loginside/;
}
return 1;
}
sub get_top {
my $self = shift;
my $link = shift;
my $item = {};
my $res = $self->{mech}->get($link);
return $item unless $self->{mech}->success;
my $html = decode('euc-jp', $self->{mech}->content);
chomp( my $re = decode('utf-8', $self->top_re) );
if ($html =~ /$re/s) {
$item->{image} = $1;
$item->{name} = $2;
}
return $item;
}
sub top_re {
return <<'RE';
<a href="http://(?:frepa\.livedoor\.com/.*?/|www\.frepa\.livedoor\.com/)"(?: rel="popup")?><img src="(http://img\d+\.(?:ico\.frepa\.livedoor\.com/member_photo/|bbs\.frepa\.livedoor\.com/community_board/)[^"]*?\.(?i:jpe?g|gif|png))" /></a>
<br /><a href=.+?
<div class="phframebtm"><h3>(.*?)..<span>\(\d+\)</span></h3></div>
RE
}
1;
__END__
=head1 NAME
Plagger::Plugin::CustomFeed::Frepa - Custom feed for livedoor Frepa
=head1 SYNOPSIS
- module: CustomFeed::Frepa
config:
livedoor_id: your-id
password: password
fetch_body: 1
show_icon: 1
feed_type:
- FriendDiary
- FriendStatus
- RecentComment
=head1 DESCRIPTION
This plugin fetches your friend blog updates from livedoor Frepa
(L<http://frepa.livedoor.com/>) and creates a custom feed.
=head1 CONFIGURATION
See L<Plagger::Plugin::CustomFeed::Mixi> for C<fetch_body>,
C<fetch_body_interval> and C<show_icon>.
Note that you don't have to supply livedoor_id and password if you set
global cookie_jar in your configuration file and the cookie_jar
contains a valid login session there, such as:
global:
user_agent:
cookies: /path/to/cookies.txt
See L<Plagger::Cookies> for details.
=head1 AUTHOR
Kazuhiro Osawa
Tokuhiro Matsuno
Tatsuhiko Miyagawa
=head1 SEE ALSO
L<Plagger>, L<Plagger::Plugin::CustomFeed::Mixi>, L<Plagger::Mechanize>,
L<http://frepa.livedoor.com/>
( run in 0.700 second using v1.01-cache-2.11-cpan-364913b4093 )