Plagger::Plugin::Notify::NetSend 作った
Plagger::Plugin::Notify::NetSend 作ってみた。
なんか最近やたらと Plagger::Plugin ばっかり書いているような・・・
Windows の NET SEND コマンドみたいに通知出来る。
ソースは以下。
package Plagger::Plugin::Notify::NetSend; use strict; use warnings; use base qw(Plagger::Plugin); use Encode; use Net::NetSend; sub register { my ($self, $context) = @_; $context->register_hook( $self, 'publish.feed' => \&update, ); } sub update { my ($self, $context, $args) = @_; my $target_netbios_name = $self->conf->{target_netbios_name}; $target_netbios_name ||= Net::NetSend::getNbName($self->conf->{target_ip}); unless ($target_netbios_name) { $context->log(error => "No netbios name found: $@"); return; } my $body = $self->templatize($context, $args->{feed}); my $success = Net::NetSend::sendMsg( $target_netbios_name, $self->conf->{source_netbios_name}, $self->conf->{target_ip}, encode('shift-jis', $body), ); $context->log(error => "Error in delivery! \n$@") unless $success; } sub templatize { my ($self, $context, $feed) = @_; my $tt = $context->template(); $tt->process('net_send_notify.tt', { feed => $feed, }, \my $out) or $context->error($tt->error); $out; } 1; __END__ =head1 NAME Plagger::Plugin::Notify::NetSend - Notify feed updates to Windows Messenger Service =head1 SYNOPSIS - module: Notify::NetSend config: target_netbios_name: client source_netbios_name: plagger target_ip: 192.168.0.1 =head1 DESCRIPTION This plugin notifies feed updates to Windows Messenger Service =head1 AUTHOR Jiro Nishiguchi =head1 SEE ALSO L<Plagger>, L<Net::NetSend> =cut
config は POD のとおりで。
Plagger::Plugin::Notify::YahooMessenger と同じく、irc_notify.tt を assets/plugins/Notify-NetSend/net_send_notify.tt とかにコピー。
で実行するとこんな感じでポップアップする。
Windows XP で SP2 が入ってると Messenger サービスがデフォルトで無効になっているようなので、有効にしないと使えない・・・