package WWW::2ch::Plugin::Jbbs; use strict; our $VERSION = '0.03'; use base qw( WWW::2ch::Plugin::Base ); use POSIX; sub encoding { 'euc-jp' } sub gen_conf { my $self = shift; my $conf = shift; my $url = $conf->{url}; my ($host, $bbs, $key); if ($url =~ m|^http://jbbs\.livedoor\.jp/bbs/read.cgi/([^/]+)/([^/]+)/(\d+)/|i) { ($host, $bbs, $key) = ($1, $2, $3); } elsif ($url =~ m|^http://jbbs\.livedoor\.jp/([^/]+)/([^/]+)/|i) { ($host, $bbs) = ($1, $2); } else { die 'url format error.'; } $self->config(+{ host => $host, domain => 'jbbs.livedoor.jp', bbs => $bbs, key => $key, setting => "http://jbbs.livedoor.jp/$host/$bbs/", subject => "http://jbbs.livedoor.jp/$host/$bbs/subject.txt", dat => "http://jbbs.livedoor.jp/bbs/rawmode.cgi/$host/$bbs/$key/", local_path => "jbbs.livedoor.jp/$host/$bbs/", }); $self->config; } sub daturl { my ($self, $key) = @_; 'http://' . $self->config->{domain} . '/bbs/rawmode.cgi/' . $self->config->{host} . '/' . $self->config->{bbs} . "/$key/"; } sub permalink { my ($self, $key, $resid) = @_; if ($key) { if ($resid) { return 'http://' . $self->config->{domain} . '/bbs/read.cgi/' . $self->config->{host} . '/' . $self->config->{bbs} . "/$key/$resid"; } else { return 'http://' . $self->config->{domain} . '/bbs/read.cgi/' . $self->config->{host} . '/' . $self->config->{bbs} . "/$key/"; } } else { return $self->config->{setting}; } } sub get_dat { my ($self, $c) = @_; my $res = $c->c->ua->diff_request($c->url); return unless $res->is_success; my $data = $res->content; $c->set_cache($data, $res); $data; } sub parse_setting { my ($self, $data) = @_; my $config; $data =~ m|