Plagger::Plugin::Summary::GetSen - Use GetSen XML-RPC API to extract summary from Japanese text


Plagger documentation Contained in the Plagger distribution.

Index


Code Index:

NAME

Top

Plagger::Plugin::Summary::GetSen - Use GetSen XML-RPC API to extract summary from Japanese text

SYNOPSIS

Top

  - module: Summary::GetSen

DESCRIPTION

Top

This plugin uses GetSen http://www.ryo.com/getsen/getsen.php XML-RPC API to auto-summarize Japanese text.

AUTHOR

Top

Tatsuhiko Miyagawa

SEE ALSO

Top

Plagger, http://www.ryo.com/getsen/getsen.php, http://www.ryo.com/ryo/2005/06/03/45/


Plagger documentation Contained in the Plagger distribution.

package Plagger::Plugin::Summary::GetSen;
use strict;
use base qw( Plagger::Plugin );

use Encode;
use XMLRPC::Lite;

sub register {
    my($self, $context) = @_;
    $context->autoload_plugin({ module => 'Filter::GuessLanguage' });
    $context->register_hook(
        $self,
        'summarizer.summarize' => \&summarize,
    );
}

sub summarize {
    my($self, $context, $args) = @_;

    my $lang = $args->{entry}->language || $args->{feed}->language;
    return unless $lang && $lang eq 'ja';

    $context->log(info => "Call GetSen XMLRPC API for " . ( $args->{entry}->permalink || '(no-url)' ));
    my $res;
    eval {
        $res = XMLRPC::Lite->proxy("http://www.ryo.com/getsen/rpc.php")
            ->call("ryocomJapanese.getsen", encode_utf8($args->{text}->plaintext))
            ->result;
    };

    if (my $err = $res->{flerror} ? $res->{message} : $@) {
        $context->log(error => "Got error: $err");
        return;
    }

    decode_utf8($res->{summarySentence});
}

1;
__END__