Plagger::Plugin::Notify::YahooMessenger


Plagger::Plugin::Notify::YahooMessenger。

Yahoo! Messenger で 更新を通知。


もうあるのかな??(Net::YahooMessengerのメンテナ miyagawa さんだし・・・)

見当たらなかったので一応。
(あったらすんません。)

package Plagger::Plugin::Notify::YahooMessenger;
use strict;
use warnings;
use base qw(Plagger::Plugin);

use Net::YahooMessenger;

sub register {
    my ($self, $context) = @_;
    $context->register_hook(
        $self,
        'publish.feed' => \&update,
    );
}

sub update {
    my ($self, $context, $args) = @_;
    my %param = (
        id       => $self->conf->{id},
        password => $self->conf->{password},
    );
    $param{pre_login_url} = $self->conf->{pre_login_url} if exists $self->conf->{pre_login_url};
    $param{hostname} = $self->conf->{hostname} if exists $self->conf->{hostname};
    my $yahoo = Net::YahooMessenger->new(%param);
    $context->log(info => "Logging in to Yahoo! Messenger");
    my $ret = $yahoo->login;
    unless ($ret) {
        $context->log(error => "Can't login Yahoo! Messenger");
        return;
    }
    my $body = $self->templatize($context, $args->{feed});
    $context->log(debug => $body);
    for my $line (split("\n", $body)) {
        $yahoo->send($self->conf->{recipient_id}, $line);
    }
}

sub templatize {
    my ($self, $context, $feed) = @_;
    my $tt = $context->template();
    $tt->process('yahoo_messenger_notify.tt', {
        feed => $feed,
    }, \my $out) or $context->error($tt->error);
    $out;
}

1;
__END__

=head1 NAME

Plagger::Plugin::Notify::YahooMessenger - Notify feed updates to Yahoo! Messenger

=head1 SYNOPSIS

  - module: Notify::YahooMessenger
    config:
      id: your_yahoo_id
      password: foobar
      pre_login_url: http://edit.my.yahoo.co.jp/config/
      hostname: cs.yahoo.co.jp
      recipient_id: your_another_yahoo_id

=head1 DESCRIPTION

This plugin notifies feed updates to Yahoo! Messenger

=head1 AUTHOR

Jiro Nishiguchi

=head1 SEE ALSO

L<Plagger>, L<Net::YahooMessenger>

=cut

コードは Notify::IRC からほぼコピペ。

config は

- module: Notify::YahooMessenger
  config:
    id: hoge
    password: hogehoge
    pre_login_url: http://edit.my.yahoo.co.jp/config/
    hostname: cs.yahoo.co.jp
    recipient_id: hage

で assets/plugins/Notify-YahooMessenger/yahoo_messenger_notify.tt は irc_notify.tt をコピー。


結構うざいが、まぁまぁ使えるかも。

アカウント2つ必要なのがあれだけど。

他にも CPAN モジュールがあるメッセンジャー系は簡単につくれそう。


追記

なんとなく Pod 書いた。