diff options
Diffstat (limited to 'scripts/perl/sound.pl')
-rw-r--r-- | scripts/perl/sound.pl | 95 |
1 files changed, 95 insertions, 0 deletions
diff --git a/scripts/perl/sound.pl b/scripts/perl/sound.pl new file mode 100644 index 000000000..f6d04d693 --- /dev/null +++ b/scripts/perl/sound.pl @@ -0,0 +1,95 @@ +# +# Copyright (c) 2006 by FlashCode <flashcode@flashtux.org> +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# + +# +# Play a sound when highlighted/private msg, or for ctcp sound event. +# +# History: +# +# 2006-05-30, FlashCode <flashcode@flashtux.org>: +# added plugin options for commands +# 2004-10-01, FlashCode <flashcode@flashtux.org>: +# initial release +# + +use strict; + +my $version = "0.3"; +my $command_suffix = " >/dev/null 2>&1 &"; + +# default values in setup file (~/.weechat/plugins.rc) +my $default_cmd_highlight = "alsaplay -i text ~/sound_highlight.wav"; +my $default_cmd_pv = "alsaplay -i text ~/sound_pv.wav"; +my $default_cmd_ctcp = "alsaplay -i text \$filename"; + +weechat::register("Sound", $version, "", "Sound for highlights/privates & CTCP sound events"); +weechat::set_plugin_config("cmd_highlight", $default_cmd_highlight) if (weechat::get_plugin_config("cmd_highlight") eq ""); +weechat::set_plugin_config("cmd_pv", $default_cmd_pv) if (weechat::get_plugin_config("cmd_pv") eq ""); +weechat::set_plugin_config("cmd_ctcp", $default_cmd_ctcp) if (weechat::get_plugin_config("cmd_ctcp") eq ""); + +weechat::add_message_handler("PRIVMSG", "sound"); +weechat::add_message_handler("weechat_highlight", "highlight"); +weechat::add_message_handler("weechat_pv", "pv"); +weechat::add_command_handler("sound", "sound_cmd"); + +sub sound +{ + my $server = $_[0]; + if ($_[1] =~ /(.*) PRIVMSG (.*)/) + { + my ($host, $msg) = ($1, $2); + if ($host ne "localhost") + { + if ($msg =~ /\001SOUND ([^ ]*)\001/) + { + my $filename = $1; + my $command = weechat::get_plugin_config("cmd_ctcp"); + $command =~ s/(\$\w+)/$1/gee; + system($command.$command_suffix); + } + } + } + return weechat::PLUGIN_RC_OK; +} + +sub highlight +{ + my $command = weechat::get_plugin_config("cmd_highlight"); + system($command.$command_suffix); + return weechat::PLUGIN_RC_OK; +} + +sub pv +{ + my $command = weechat::get_plugin_config("cmd_pv"); + system($command.$command_suffix); + return weechat::PLUGIN_RC_OK; +} + +sub sound_cmd +{ + if ($#_ == 1) + { + my $filename = $_[1].".wav"; + my $command = weechat::get_plugin_config("cmd_ctcp"); + $command =~ s/(\$\w+)/$1/gee; + system($command.$command_suffix); + weechat::command("/quote PRIVMSG ".weechat::get_info("channel")." :\001SOUND $filename\001") if (@_); + } + return weechat::PLUGIN_RC_OK; +} |