1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140
|
use strict;
use warnings;
use vars qw($VERSION %IRSSI);
use Irssi;
$VERSION = '0.0.7';
%IRSSI = (
name => 'fnotify',
authors => 'Tyler Abair, Thorsten Leemhuis, James Shubin' .
', Serge van Ginderachter, Michael Davies',
contact => 'fedora@leemhuis.info, serge@vanginderachter.be',
description => 'Write notifications to a file in a consistent format.',
license => 'GNU General Public License',
url => 'http://www.leemhuis.info/files/fnotify/fnotify https://ttboj.wordpress.com/',
);
#
# README
#
# To use:
# $ cp fnotify.pl ~/.irssi/scripts/fnotify.pl
# irssi> /load perl
# irssi> /script load fnotify
# irssi> /set fnotify_ignore_hilight 0 # ignore hilights of priority 0
# irssi> /set fnotify_own on # turn on own notifications
#
#
# AUTHORS
#
# Add self to notification file
# version 0.0.7
# Michael Davies <michael@the-davies.net>
#
# Ignore hilighted messages with priority = fnotify_ignore_hilight
# version: 0.0.6
# Tyler Abair <tyler.abair@gmail.com>
#
# Strip non-parsed left over codes (Bitlbee otr messages)
# version: 0.0.5
# Serge van Ginderachter <serge@vanginderachter.be>
#
# Consistent output formatting by James Shubin:
# version: 0.0.4
# https://ttboj.wordpress.com/
# note: changed license back to original GPL from Thorsten Leemhuis (svg)
#
# Modified from the Thorsten Leemhuis <fedora@leemhuis.info>
# version: 0.0.3
# http://www.leemhuis.info/files/fnotify/fnotify
#
# In parts based on knotify.pl 0.1.1 by Hugo Haas:
# http://larve.net/people/hugo/2005/01/knotify.pl
#
# Which is based on osd.pl 0.3.3 by Jeroen Coekaerts, Koenraad Heijlen:
# http://www.irssi.org/scripts/scripts/osd.pl
#
# Other parts based on notify.pl from Luke Macken:
# http://fedora.feedjack.org/user/918/
#
my %config;
Irssi::settings_add_int('fnotify', 'fnotify_ignore_hilight' => -1);
$config{'ignore_hilight'} = Irssi::settings_get_int('fnotify_ignore_hilight');
Irssi::settings_add_bool('fnotify', 'fnotify_own', 0);
$config{'own'} = Irssi::settings_get_bool('fnotify_own');
Irssi::signal_add(
'setup changed' => sub {
$config{'ignore_hilight'} = Irssi::settings_get_int('fnotify_ignore_hilight');
$config{'own'} = Irssi::settings_get_bool('fnotify_own');
}
);
#
# catch private messages
#
sub priv_msg {
my ($server, $msg, $nick, $address, $target) = @_;
my $msg_stripped = Irssi::strip_codes($msg);
my $network = $server->{tag};
filewrite('' . $network . ' ' . $nick . ' ' . $msg_stripped);
}
#
# catch 'hilight's
#
sub hilight {
my ($dest, $text, $stripped) = @_;
my $ihl = $config{'ignore_hilight'};
if ($dest->{level} & MSGLEVEL_HILIGHT && $dest->{hilight_priority} != $ihl) {
my $server = $dest->{server};
my $network = $server->{tag};
filewrite($network . ' ' . $dest->{target} . ' ' . $stripped);
}
}
#
# catch own messages
#
sub own_public {
my ($dest, $msg, $target) = @_;
if ($config{'own'}) {
filewrite($dest->{'nick'} . ' ' .$msg );
}
}
sub own_private {
my ($dest, $msg, $target, $orig_target) = @_;
if ($config{'own'}) {
filewrite($dest->{'nick'} . ' ' .$msg );
}
}
#
# write to file
#
sub filewrite {
my ($text) = @_;
my $fnfile = Irssi::get_irssi_dir() . "/fnotify";
if (!open(FILE, ">>", $fnfile)) {
print CLIENTCRAP "Error: cannot open $fnfile: $!";
} else {
print FILE $text . "\n";
if (!close(FILE)) {
print CLIENTCRAP "Error: cannot close $fnfile: $!";
}
}
}
#
# irssi signals
#
Irssi::signal_add_last("message private", "priv_msg");
Irssi::signal_add_last("print text", "hilight");
Irssi::signal_add_last("message own_public", "own_public");
Irssi::signal_add_last("message own_private", "own_private");
|